UNPKG

legal-markdown-js

Version:

Node.js implementation of LegalMarkdown for processing legal documents with markdown and YAML - Complete feature parity with Ruby version

83 lines 2.87 kB
/** * Regular expression patterns for Legal Markdown parsing * * This module contains all the regex patterns used throughout the system * for parsing different markdown elements like headers, imports, clauses, and references. */ /** * Regular expression patterns for parsing header structures * @example * ```typescript * import { HEADER_PATTERNS } from './constants.js'; * * // Match traditional headers: l. Section, ll. Subsection * const traditionalHeaders = content.match(HEADER_PATTERNS.TRADITIONAL); * * // Match alternative headers: l1. Section, l2. Subsection * const alternativeHeaders = content.match(HEADER_PATTERNS.ALTERNATIVE); * ``` */ export const HEADER_PATTERNS = { /** Traditional header pattern: l. Section, ll. Subsection, etc. */ TRADITIONAL: /^(l+)\.\s+(.*?)$/gm, /** Alternative header pattern: l1. Section, l2. Subsection, etc. */ ALTERNATIVE: /^l(\d+)\.\s+(.*?)$/gm, }; /** * Regular expression patterns for parsing import statements * @example * ```typescript * import { IMPORT_PATTERNS } from './constants.js'; * * // Match partial imports: [[filename]] * const partialImports = content.match(IMPORT_PATTERNS.PARTIAL); * * // Match full file imports: @import filename * const fullImports = content.match(IMPORT_PATTERNS.FULL_FILE); * ``` */ export const IMPORT_PATTERNS = { /** Partial import pattern: [[filename]] */ PARTIAL: /\[\[(.*?)\]\]/g, /** Full file import pattern: @import filename */ FULL_FILE: /^@import\s+(.+)$/gm, }; /** * Regular expression patterns for parsing optional and conditional clauses * @example * ```typescript * import { CLAUSE_PATTERNS } from './constants.js'; * * // Match optional clauses: {{field.name}} * const optionalClauses = content.match(CLAUSE_PATTERNS.OPTIONAL); * * // Match conditional clauses: {{#if condition}}content{{/if}} * const conditionalClauses = content.match(CLAUSE_PATTERNS.CONDITIONAL); * ``` */ export const CLAUSE_PATTERNS = { /** Optional clause pattern: {{field.name}} */ OPTIONAL: /\{\{\s*([^}]+)\s*\}\}/g, /** Conditional clause pattern: {{#if condition}}content{{/if}} */ CONDITIONAL: /\{\{\s*#if\s+([^}]+)\s*\}\}([\s\S]*?)\{\{\s*\/if\s*\}\}/g, }; /** * Regular expression patterns for parsing cross-references * @example * ```typescript * import { REFERENCE_PATTERNS } from './constants.js'; * * // Match cross-references: [[reference]] * const crossRefs = content.match(REFERENCE_PATTERNS.CROSS_REF); * * // Match numbered references: [1], [2], etc. * const numberedRefs = content.match(REFERENCE_PATTERNS.NUMBERED_REF); * ``` */ export const REFERENCE_PATTERNS = { /** Cross-reference pattern: [[reference]] */ CROSS_REF: /\[\[([^\]]+)\]\]/g, /** Numbered reference pattern: [1], [2], etc. */ NUMBERED_REF: /\[(\d+)\]/g, }; //# sourceMappingURL=patterns.js.map