UNPKG

@allemandi/bible-validate

Version:

Fast, type-safe utilities for parsing, validating, and normalizing Bible references.

51 lines 2.67 kB
/** * Parses and validates a Bible reference string. * @public * @param {string} reference - The raw Bible reference string to be parsed, normalized, and formatted (e.g., "Genesis 1:1", "Letter to the Romans. Ch 2 , 1 to 3"). * @param {ParseReferenceOptions} [options] - Optional configuration, return structured object or just the formatted result. * @returns {SimpleResult|StructuredResult} - Result object depending on options.structured. * @example * parseAndValidateReference(' GN. Ch 1 , 1 to 3'); * // → { isValid: true, formatted: 'Genesis 1:1-3', error: null, original: ' GN. Ch 1 , 1 to 3' } * parseAndValidateReference('gEnEsIs 1 verse 1', { structured: true }); * // → { * // isValid: true, * // book: 'Genesis', * // chapter: 1, * // verseStart: 1, * // verseEnd: null, * // formatted: 'Genesis 1:1', * // error: null, * // original: 'gEnEsIs 1 verse 1' * // } * parseAndValidateReference('Book of Judas 1:1'); * // → { isValid: false, error: 'Invalid book name', original: 'Book of Judas 1:1' } */ export function parseAndValidateReference(reference: string, { structured }?: ParseReferenceOptions): SimpleResult | StructuredResult; /** * Formats a scripture reference string based on the provided input. Input is not normalized. * @public * @param {Object} reference - The reference object. * @param {string} reference.book - The name of the book (e.g., "Genesis"). * @param {number} [reference.chapter] - The chapter number. * @param {number} [reference.verseStart] - The starting verse number. * @param {number|null} [reference.verseEnd] - The ending verse number (optional, used for ranges). * @returns {string} - A formatted Bible reference (e.g., "Genesis 1:1-5"). Returns an empty string if no input is provided. * @example * formatReference({}); // '' * formatReference({ book: 'Genesis' }); // 'Genesis' * formatReference({ book: 'Genesis', chapter: 1 }); // 'Genesis 1' * formatReference({ book: 'Genesis', chapter: 1, verseStart: 1 }); // 'Genesis 1:1' * formatReference({ book: 'Genesis', chapter: 1, verseStart: 1, verseEnd: 5 }); // 'Genesis 1:1-5' * formatReference({ book: 'Genesis', chapter: 1, verseStart: 3, verseEnd: 3 }); // 'Genesis 1:3' */ export function formatReference({ book, chapter, verseStart, verseEnd }: { book: string; chapter?: number | undefined; verseStart?: number | undefined; verseEnd?: number | null | undefined; }): string; import type { ParseReferenceOptions } from './types.js'; import type { SimpleResult } from './types.js'; import type { StructuredResult } from './types.js'; //# sourceMappingURL=formatter.d.ts.map