public VersePointer( BibleBookInfo bookInfo, string moduleShortName, string originalVerseName, VerseNumber verseNumber, VerseNumber?topVerseNumber = null) : base(bookInfo != null ? bookInfo.Index : 0, verseNumber, topVerseNumber) { Book = bookInfo; ModuleShortName = moduleShortName; OriginalVerseName = originalVerseName; SubVerses = new VersesListInfo <ModuleVersePointer>(); }
private VerseNumberEntry TryGetTopVerseNumber(string text, int startIndex, VerseNumber verseNumber) { var cursorIndex = startIndex; var dashWasFound = false; var digitWasFound = false; var indexOfDigit = 0; var maxSpaceBetweenVerseNumbers = 3; while (cursorIndex - startIndex <= maxSpaceBetweenVerseNumbers) { var c = StringUtils.GetChar(text, cursorIndex); if (VerseUtils.IsDash(c) && !dashWasFound) { dashWasFound = true; } else if (char.IsDigit(c) && dashWasFound) { digitWasFound = true; indexOfDigit = cursorIndex; break; } else if (c != ' ') { break; } cursorIndex++; } if (!dashWasFound || !digitWasFound) { return(null); } var result = TryGetVerseNumber(text, indexOfDigit, false); if (result.VerseNumber.IsChapter && !verseNumber.IsChapter) { result.VerseNumber = new VerseNumber(verseNumber.Chapter, result.VerseNumber.Chapter); } if (result.VerseNumber.Chapter < verseNumber.Chapter || (result.VerseNumber.IsChapter && result.VerseNumber.Chapter == verseNumber.Chapter) || (result.VerseNumber.Chapter == verseNumber.Chapter && result.VerseNumber.Verse <= verseNumber.Verse)) { return(null); } return(result); }