Skip to main content

bible_io_references/
lib.rs

1#![forbid(unsafe_code)]
2#![warn(clippy::all, missing_docs)]
3#![doc = include_str!("../README.md")]
4
5pub mod book;
6pub mod error;
7pub mod extractor;
8pub mod formatter;
9pub mod identifiers;
10pub mod language;
11mod language_data;
12pub mod normalize;
13pub mod parser;
14pub mod passage;
15pub mod reference;
16#[cfg(feature = "serde")]
17mod serde_impl;
18
19pub use book::{Book, ParseBookError};
20pub use error::{ParseError, ParseErrorKind};
21pub use extractor::{
22    DEFAULT_MAX_LOOKAHEAD, DEFAULT_MAX_LOOKBEHIND, ExtractorConfigError, ExtractorWindow,
23    PassageMatch, ReferenceExtractor, ReferenceExtractorBuilder,
24};
25pub use formatter::{
26    BookNameStyle, FormattedBook, FormattedPassage, FormattedReference, ReferenceFormatter,
27};
28pub use identifiers::{
29    IdentifierError, IdentifierErrorKind, IdentifierFormat, MachineIdentifiers,
30    book_from_osis_identifier, book_from_usfm_identifier, reference_from_osis_identifier,
31    reference_from_usfm_identifier,
32};
33pub use language::{Language, ParseLanguageError};
34pub use language_data::{LocalizedBook, localized_books, localized_name, long_name, short_name};
35pub use parser::{
36    AUTO_LANGUAGE_PRECEDENCE, AmbiguityPolicy, BookCandidate, BookMatch, ParseMetadata, Parsed,
37    ParserBuilder, ReferenceParser, auto_language_collisions,
38};
39pub use passage::{
40    BookPassage, ChapterPassage, DEFAULT_SINGLE_CHAPTER_BOOKS, Passage, PassageBuildError,
41    PassageParser, PassageSequence, VersePassage,
42};
43pub use reference::{
44    Coordinate, CoordinateError, MAX_CHAPTER_NUMBER, MAX_VERSE_NUMBER, RangeOrderError, Reference,
45    VerseRange, VerseRef,
46};
47
48/// Compatibility name for callers familiar with the Dart package.
49pub type VerseRangeRef = VerseRange;
50
51/// Parse a verse reference using the crate's normalized parser.
52///
53/// This compatibility helper mirrors the Dart package's named parsing API.
54pub fn verse_ref_from_str(input: &str) -> Result<VerseRef, ParseError> {
55    input.parse()
56}
57
58/// Parse an inclusive verse range using the crate's normalized parser.
59///
60/// This compatibility helper mirrors the Dart package's named parsing API.
61pub fn verse_range_ref_from_str(input: &str) -> Result<VerseRangeRef, ParseError> {
62    input.parse()
63}
64
65/// Parse a verse or inclusive verse range using automatic language detection.
66pub fn parse_reference(input: &str) -> Result<Reference, ParseError> {
67    input.parse()
68}