verseRefFromStr function
Parse a string into a VerseRef.
Implementation
VerseRef verseRefFromStr(String ref, {BibleLanguageEnum? language}) {
_ensureReferenceIsNotEmpty(ref);
final normalizedLanguage = _bookLookup.normalizeLanguage(language);
final match = _verseRefPattern.firstMatch(ref);
if (match == null) {
throw ParseVerseRefError(
code: 'pattern_mismatch',
details: 'reference "$ref" does not match expected format');
}
final chapter = _parseReferenceNumber(
match.group(2)!,
component: 'chapter',
maximum: maxReferenceChapterNumber,
);
final verse = _parseVerseToken(
match.group(3)!,
component: 'verse',
);
final book = _bookLookup.parseBookName(match.group(1)!, normalizedLanguage);
return VerseRef.checked(
book: book,
chapter: chapter,
verse: verse.verse,
subdivision: verse.subdivision);
}