Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
     }
 }
Esempio n. 3
0
        /// <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);
        }