core/formatters/route.formatter.ts

core/formatters/route.formatter.ts is a file in Bane's Lab Build Scripts. 16 lines of code and 7 definitions.

import type { NumberRow, RouteRow } from "#types/catalog.types";
import { blocks, heading } from "#core/formatters/markdown.formatter";
import { linkText } from "#core/formatters/link.formatter";

const SEPARATOR = ", ";
const ITEM = "- ";

export const renderNumbers = function renderNumbers(title: string, rows: readonly NumberRow[]): string {
    return blocks([heading(title), rows.map((row) => `${ITEM}${row.number} ${linkText(row.link)}`).join("\n")]);
};

export const renderRoute = function renderRoute(title: string, rows: readonly RouteRow[]): string {
    const lines = rows.map((row) => {
        const requires = row.requires.filter((at): at is number => at !== null);
        const after = requires.length === 0 ? "" : `, after stop ${requires.map(String).join(SEPARATOR)}`;
        return `${String(row.position)}. ${linkText(row.link)} (${row.block}${after})`;
    });
    return blocks([heading(title), lines.join("\n")]);
};