@allemandi/bible-validate
Version:
Fast, type-safe utilities for parsing, validating, and normalizing Bible references.
51 lines • 2.67 kB
TypeScript
/**
* 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