# core/loaders/syntax.loader.ts

> 12 lines of code and 4 definitions.

Tree: GovLab Docs
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-loaders-syntax-loader-ts
Source text: https://banes-lab.com/source/docs/core/loaders/syntax.loader.ts.txt

Listed in [core/loaders](https://banes-lab.com/api/source/docs/core/loaders.md), after [core/loaders/section.loader.ts](https://banes-lab.com/source/docs/core/loaders/section.loader.ts.md) and before [core/loaders/system.loader.ts](https://banes-lab.com/source/docs/core/loaders/system.loader.ts.md).

## Definitions

- `loadRecognizers` (lexical_declaration, line 12, exported)
- `isRecognizer` (lexical_declaration, line 8)
- `EXPORT_KEY` (lexical_declaration, line 6)
- `recognizers` (lexical_declaration, line 13, exported)

## Contained in

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

## Uses

- [core/predicates/record.predicate.ts](https://banes-lab.com/source/docs/core/predicates/record.predicate.ts.md)

## Used by

- [core/coordinators/code.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/code.coordinator.ts.md)

## Linked from

- [core/coordinators](https://banes-lab.com/anatomy/docs/folder-docs-core-coordinators.md)
- [core/predicates](https://banes-lab.com/anatomy/docs/folder-docs-core-predicates.md)

## Source

```typescript
import type { Recognizer } from "#types/code.types";
import { absolutePath } from "@ssot/paths";
import { isRecord } from "#core/predicates/record.predicate";
import { loadExports } from "#core/loaders/plugin.loader";

const EXPORT_KEY = "recognizer";

const isRecognizer = function isRecognizer(value: unknown): value is Recognizer {
    return isRecord(value) && typeof value["name"] === "string" && typeof value["classify"] === "function";
};

export const loadRecognizers = async function loadRecognizers(): Promise<Recognizer[]> {
    const recognizers = await loadExports(absolutePath("govlab.docs.plugins"), EXPORT_KEY, isRecognizer);
    return recognizers.toSorted((left, right) => left.name.localeCompare(right.name));
};
```
