# core/formatters/canon.reference.formatter.ts

> 21 lines of code and 2 definitions.

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

Listed in [core/formatters](https://banes-lab.com/api/source/quality/core/formatters.md), after [core/formatters/canon.formatter.ts](https://banes-lab.com/source/quality/core/formatters/canon.formatter.ts.md) and before [core/formatters/catalog.formatter.ts](https://banes-lab.com/source/quality/core/formatters/catalog.formatter.ts.md).

## Definitions

- `JSON_INDENT` (lexical_declaration, line 3)
- `canonRefsModule` (lexical_declaration, line 5, exported)

## Contained in

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

## Source

```typescript
import { CONCEPT_PREFIX } from "#configuration/constants/canon.constants";

const JSON_INDENT = 4;

export const canonRefsModule = function canonRefsModule(entries: readonly [string, string[]][]): string {
    return `const CANON_REFS = new Map<string, string[]>(${JSON.stringify(entries, null, JSON_INDENT)});

export const isRegisteredConcept = function isRegisteredConcept(concept: string): boolean {
    return CANON_REFS.has(concept);
};

export const canonRefsFor = function canonRefsFor(concepts: readonly string[]): string[] {
    const out: string[] = [];
    for (const concept of concepts) {
        const refs = CANON_REFS.get(concept);
        if (refs) {
            out.push(...refs);
        } else {
            out.push(\`${CONCEPT_PREFIX}\${concept}\`);
        }
    }
    return out;
};
`;
};
```
