Skip to content
Snippets Groups Projects
Select Git revision
  • d0bbe3ad027071bc1d9ef0ac98c64d246b64a065
  • main default protected
  • only-show-current-attendance-by-default
  • renovate/node-24.x
  • renovate/bootstrap-5.x
  • renovate/vitest-3.x-lockfile
  • renovate/node-22.x-lockfile
  • renovate/esbuild-0.x-lockfile
  • renovate/prettier-3.x-lockfile
  • feat/prettier-attendence-sum
  • local-test
  • show_missing
  • feat/show-which-resolutions-are-void
  • cedric-hates-this
14 results

parsing.ts

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    parsing.ts 21.85 KiB
    import matter from "gray-matter"; // Front matter yaml metadata parsing
    import md from "markdown-it"; // Markdown parsing
    import bracketed_spans_plugin from "markdown-it-bracketed-spans"; //attributed spans (`[blah]{.fin yes=1)}`)
    import attributes from "markdown-it-attrs";
    import { full as emoji_plugin } from "markdown-it-emoji"; // `:smile:` -> `😊`
    import footnote_plugin from "markdown-it-footnote"; // for `[^1]` and friends
    import abbreviation from "markdown-it-abbr";
    import definitionList from "markdown-it-deflist";
    import inserted from "markdown-it-ins";
    import marked from "markdown-it-mark";
    import subscript from "markdown-it-sub";
    import superscript from "markdown-it-sup";
    import container from "markdown-it-container";
    import Token from "markdown-it/lib/token.mjs";
    import { getMetadataProblems } from "./metadataChecks";
    import {
        renderResolutionToHtml,
        renderTodoToHtml,
        renderContainerToAlert,
    } from "./rendering";
    
    const markdownParser = md({
        html: true,
        xhtmlOut: true,
        breaks: true,
        linkify: true,
        typographer: true,
        quotes: "„“‚‘",
    })
        .use(attributes)
        .use(emoji_plugin)
        .use(footnote_plugin)
        .use(abbreviation)
        .use(definitionList)
        .use(inserted)
        .use(marked)
        .use(subscript)
        .use(superscript)
        // Legacy
        .use(bracketed_spans_plugin)
        .use(container, "warning", {
            render: renderContainerToAlert("alert-warning", "alert"),
        })
        .use(container, "Meinungsbild", {
            render: renderContainerToAlert("alert-secondary", "Meinungsbild"),
        })
        .use(container, "GO-Antrag", {
            render: renderContainerToAlert("alert-secondary", "GO-Antrag"),
        })
        // New
        .use(container, "resolution")
        .use(container, "todo");
    markdownParser.linkify.set({ fuzzyEmail: false });
    
    export interface ParseResults {
        meta: FinishedTranscriptMeta;
        html: string;
        ast: Token[];
    }
    
    export function parseOld(
        old: FinishedTranscriptMeta[],
    ): FinishedTranscriptMeta[] {
        return old.map((t) => ({
            // Fallback for some options:
            ...t,
            spec_version: t.spec_version ?? -1, // PDFs
            no_link: t.no_link ?? false,
            // Reformat resolutions
            resolutions: t.resolutions?.map((r) => {