Reference constructor
The universal constructor, determines what kind of reference
this is based on which fields are left null
.
Implementation
Reference(String book, [int? schp, int? svn, int? echp, int? evn])
: startChapterNumber = schp ?? 1,
startChapter = schp != null ? Chapter(book, schp) : Chapter(book, 1),
startVerseNumber = svn ?? 1,
startVerse = svn != null
? Verse(book, schp, svn)
: schp != null
? Verse(book, schp, 1)
: Verse(book, 1, 1),
endChapterNumber = echp ?? schp ?? Librarian.getLastChapterNumber(book),
endChapter = echp != null
? Chapter(book, echp)
: schp != null
? Chapter(book, schp)
: Librarian.getLastChapter(book),
endVerseNumber = evn ?? svn ?? Librarian.getLastVerseNumber(book, echp ?? schp),
endVerse = evn != null
? Verse(book, schp, evn)
: svn != null
? Verse(book, schp, svn)
: Librarian.getLastVerse(book, schp),
reference = Librarian.createReferenceString(book, schp, svn, echp, evn),
referenceType =
Librarian.identifyReferenceType(book, schp, svn, echp, evn),
isValid = Librarian.verifyReference(book, schp, svn, echp, evn),
super(book);