# core/formatters/record.formatter.ts

> 34 lines of code and 1 definition.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-formatters-record-formatter-ts
Source text: https://banes-lab.com/source/build-scripts/core/formatters/record.formatter.ts.txt

Listed in [core/formatters](https://banes-lab.com/api/source/build-scripts/core/formatters.md), after [core/formatters/page.formatter.ts](https://banes-lab.com/source/build-scripts/core/formatters/page.formatter.ts.md) and before [core/formatters/reference.formatter.ts](https://banes-lab.com/source/build-scripts/core/formatters/reference.formatter.ts.md).

## Definitions

- `renderRecordLeaf` (lexical_declaration, line 17, exported)

## Contained in

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

## Uses

- [core/formatters/link.formatter.ts](https://banes-lab.com/source/build-scripts/core/formatters/link.formatter.ts.md)
- [core/formatters/markdown.formatter.ts](https://banes-lab.com/source/build-scripts/core/formatters/markdown.formatter.ts.md)
- [core/selectors/record.selector.ts](https://banes-lab.com/source/build-scripts/core/selectors/record.selector.ts.md)

## Linked from

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

## Source

```typescript
import {
    ALIASES_LABEL,
    CANONICAL_LABEL,
    CLOSURE_LABEL,
    FORMED_BY_LABEL,
    KIND_LABEL,
    LAYER_LABEL,
    RECORD_LABEL,
    SCOPE_LABEL,
    SEVERITY_LABEL,
} from "@banes-lab/web/strings/ontology.strings";
import { addressLines, blocks, code, heading, quote } from "#core/formatters/markdown.formatter";
import { linkText, placementLine, relationSections } from "#core/formatters/link.formatter";
import type { RecordData } from "#types/record.types";
import { recordText } from "#core/selectors/record.selector";

export const renderRecordLeaf = function renderRecordLeaf(data: RecordData): string {
    return blocks([
        heading(data.name),
        quote(data.summary),
        addressLines([
            [RECORD_LABEL, code(data.ref)],
            [KIND_LABEL, data.kind],
            [LAYER_LABEL, data.layer === null ? null : linkText(data.layer)],
            [SEVERITY_LABEL, recordText(data, "severity")],
            [SCOPE_LABEL, recordText(data, "scope")],
            [ALIASES_LABEL, recordText(data, "aliases")],
            [FORMED_BY_LABEL, recordText(data, "formedBy")],
            [CANONICAL_LABEL, data.href],
            [CLOSURE_LABEL, recordText(data, "closure")],
        ]),
        placementLine(data),
        ...relationSections(data.relations),
    ]);
};
```
