# core/parsers/tool.stylua.parser.ts

> 29 lines of code and 6 definitions.

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

Listed in [core/parsers](https://banes-lab.com/api/source/quality/core/parsers.md), after [core/parsers/tool.staticcheck.parser.ts](https://banes-lab.com/source/quality/core/parsers/tool.staticcheck.parser.ts.md) and before [core/parsers/tool.swiftlint.parser.ts](https://banes-lab.com/source/quality/core/parsers/tool.swiftlint.parser.ts.md).

## Definitions

- `parseStyluaCheck` (lexical_declaration, line 11, exported)
- `unformattedFinding` (lexical_declaration, line 21, exported)
- `TOOL` (lexical_declaration, line 7)
- `DIFF_PREFIX` (lexical_declaration, line 8)
- `RULE_ID` (lexical_declaration, line 9)
- `rest` (lexical_declaration, line 16, exported)

## Contained in

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

## Uses

- [core/factories/finding.factory.ts](https://banes-lab.com/source/quality/core/factories/finding.factory.ts.md)
- [core/parsers/location.parser.ts](https://banes-lab.com/source/quality/core/parsers/location.parser.ts.md)

## Linked from

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

## Source

```typescript
import type { Finding } from "#types/finding.types";
import { POSITION } from "#configuration/constants/tool.constants";
import { UNFORMATTED_FILE } from "#configuration/strings/tool.strings";
import { parseLines } from "#core/parsers/location.parser";
import { toolFinding } from "#core/factories/finding.factory";

const TOOL = "stylua";
const DIFF_PREFIX = "Diff in ";
const RULE_ID = "stylua/format";

export const parseStyluaCheck = function parseStyluaCheck(stdout: string): string[] {
    return parseLines(stdout, (line) => {
        if (!line.startsWith(DIFF_PREFIX)) {
            return null;
        }
        const rest = line.slice(DIFF_PREFIX.length);
        return rest.endsWith(":") ? rest.slice(0, -1) : rest;
    });
};

export const unformattedFinding = function unformattedFinding(file: string, ecosystem: string): Finding {
    return toolFinding({
        column: POSITION,
        ecosystem,
        file,
        fixable: true,
        line: POSITION,
        message: UNFORMATTED_FILE,
        ruleId: RULE_ID,
        tool: TOOL,
    });
};
```
