# core/comparators/text.comparator.ts

> 10 lines of code and 4 definitions.

Tree: GovLab Quality
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/quality#file-quality-core-comparators-text-comparator-ts
Source text: https://banes-lab.com/source/quality/core/comparators/text.comparator.ts.txt

Listed in [core/comparators](https://banes-lab.com/api/source/quality/core/comparators.md), after [core/comparators/rule.comparator.ts](https://banes-lab.com/source/quality/core/comparators/rule.comparator.ts.md).

## Definitions

- `compareText` (lexical_declaration, line 1, exported)
- `shared` (lexical_declaration, line 2, exported)
- `i` (lexical_declaration, line 3, exported)
- `diff` (lexical_declaration, line 4, exported)

## Contained in

- [core/comparators](https://banes-lab.com/anatomy/quality/folder-quality-core-comparators.md)

## Used by

- [core/quality/eslint/sort-imports.eslint.rule.ts](https://banes-lab.com/source/quality/core/quality/eslint/sort-imports.eslint.rule.ts.md)
- [core/quality/eslint/sort-keys.eslint.rule.ts](https://banes-lab.com/source/quality/core/quality/eslint/sort-keys.eslint.rule.ts.md)

## Linked from

- [core/quality/eslint](https://banes-lab.com/anatomy/quality/folder-quality-core-quality-eslint.md)

## Source

```typescript
export const compareText = function compareText(a: string, b: string): number {
    const shared = Math.min(a.length, b.length);
    for (let i = 0; i < shared; i += 1) {
        const diff = (a.codePointAt(i) ?? 0) - (b.codePointAt(i) ?? 0);
        if (diff !== 0) {
            return diff;
        }
    }
    return a.length - b.length;
};
```
