public VERS GetVerse(ModuleVersePointer versePointer, string moduleShortName, bool getVerseNumberForEmptyVerses, out VerseIndex verseIndex, out bool isPartOfBigVerse) { isPartOfBigVerse = false; verseIndex = new VerseIndex(versePointer.Verse, versePointer.TopVerse); if (_versesDictionary == null) { LoadVersesDictionary(versePointer, moduleShortName); } if (_versesDictionary.TryGetValue(versePointer.VerseNumber.Verse, out VERS result)) { verseIndex = result.VerseIndex; isPartOfBigVerse = verseIndex.IsSeveralVerses; } else { result = Verses.FirstOrDefault(v => v.IsMultiVerse && (v.Index <= versePointer.VerseNumber.Verse && versePointer.VerseNumber.Verse <= v.TopIndex)); if (result != null) { if (getVerseNumberForEmptyVerses) { verseIndex = result.VerseIndex; } isPartOfBigVerse = true; result = VERS.Empty; // так как стих является частью бОльшего стиха } } return(result); }
public bool VerseExists(ModuleVersePointer vp, out VerseIndex verseIndex) { verseIndex = new VerseIndex(vp.Verse, vp.TopVerse); try { this.BooksDictionary[vp.BookIndex].GetVerseContent(vp, ModuleShortName, string.Empty, true, out verseIndex, out bool isEmpty, out bool isFullVerse, out bool isPartOfBigVerse, out bool hasValueEvenIfEmpty); return(true); } catch (VerseNotFoundException) { return(false); } catch (ChapterNotFoundException) { return(false); } }
/// <summary> /// /// </summary> /// <param name="versePointer"></param> /// <param name="moduleShortName"></param> /// <param name="strongPrefix"></param> /// <param name="getVerseNumberForEmptyVerses"></param> /// <param name="verseIndex"></param> /// <param name="isEmpty"></param> /// <param name="isFullVerse"></param> /// <param name="isPartOfBigVerse"></param> /// <param name="hasValueEvenIfEmpty">У нас есть стих в ibs (Лев 12:7). Ему по смыслу соответствуют два стиха из rst (Лев 12:7-8). Но поделить стих в ibs не поулчается, потому палочка стоит в конце стиха. Но это не значит, что воьсмой стих пустой!</param> /// <returns></returns> public string GetVerseContent(ModuleVersePointer versePointer, string moduleShortName, string strongPrefix, bool getVerseNumberForEmptyVerses, out VerseIndex verseIndex, out bool isEmpty, out bool isFullVerse, out bool isPartOfBigVerse, out bool hasValueEvenIfEmpty) { isFullVerse = true; isEmpty = false; isPartOfBigVerse = false; hasValueEvenIfEmpty = false; verseIndex = new VerseIndex(versePointer.Verse, versePointer.TopVerse); if (versePointer.IsEmpty) { isEmpty = true; return(null); } if (this.Chapters.Count < versePointer.Chapter) { throw new ChapterNotFoundException(versePointer, moduleShortName, BaseVersePointerException.Severity.Warning); } var chapter = this.Chapters[versePointer.Chapter - 1]; if (versePointer.VerseNumber.IsChapter) { return(string.Empty); } var verse = chapter.GetVerse(versePointer, moduleShortName, getVerseNumberForEmptyVerses, out verseIndex, out isPartOfBigVerse); if (verse == null) { throw new VerseNotFoundException(versePointer, moduleShortName, BaseVersePointerException.Severity.Warning); } if (verse.IsEmpty) { isEmpty = true; return(string.Empty); } string result = null; var verseContent = verse.GetValue(true, strongPrefix); var shelledVerseContent = ShellVerseText(verseContent); if (versePointer.PartIndex.HasValue) { var versesParts = verseContent.Split(new char[] { '|' }); if (versesParts.Length > versePointer.PartIndex.Value) { result = versesParts[versePointer.PartIndex.Value].Trim(); } if (result == SystemConstants.NotEmptyVerseContentSymbol) { hasValueEvenIfEmpty = true; } result = ShellVerseText(result); if (result != shelledVerseContent) { isFullVerse = false; } } else { if (verseContent == SystemConstants.NotEmptyVerseContentSymbol) // пока эту строчку не тестировал. Не понятно, можно ли такое использовать и зачем. { hasValueEvenIfEmpty = true; } result = shelledVerseContent; } return(result); }