public IReadOnlyCollection <VerseAndText> GetBibleTextsArray( IReadOnlyList <BookChapter> chapters, int bibleBook, ChapterAndVersesSpec chapterAndVerses, FormattingOptions formattingOptions) { var result = new List <VerseAndText>(); foreach (var vs in chapterAndVerses.ContiguousVerses) { for (var verse = vs.StartVerse; verse <= vs.EndVerse; ++verse) { string s = GetBibleText(chapters, bibleBook, vs.Chapter, verse, formattingOptions); if (!string.IsNullOrEmpty(s)) { result.Add(new VerseAndText { BookNumber = bibleBook, ChapterNumber = vs.Chapter, VerseNumber = verse, Text = s }); } } } return(result.ToArray()); }
public string GetBibleTexts( IReadOnlyList <BookChapter> chapters, int bibleBook, ChapterAndVersesSpec chapterAndVerses, FormattingOptions formattingOptions) { bool showVerseNumbers = formattingOptions.IncludeVerseNumbers; if (!chapterAndVerses.HasMultipleVerses()) { showVerseNumbers = false; } var result = new StringBuilder(); foreach (var vs in chapterAndVerses.ContiguousVerses) { if (result.Length > 0 && formattingOptions.ShowBreakInVerses) { char lastChar = result.ToString().Trim().Last(); if (lastChar == '.') { // looks odd if we have an ellipsis straight after a full stop! var tmpStr = result.ToString().Trim(); tmpStr = tmpStr.Remove(tmpStr.Length - 1, 1); result.Clear(); result.Append(tmpStr); result.Append(Ellipsis); result.Append(' '); } else { result.Append(Ellipsis); } result.Append(' '); } for (var verse = vs.StartVerse; verse <= vs.EndVerse; ++verse) { string s = GetBibleText(chapters, bibleBook, vs.Chapter, verse, formattingOptions); if (!string.IsNullOrEmpty(s)) { if (verse > vs.StartVerse) { result.Append(' '); } if (showVerseNumbers) { result.Append($"|{verse}|"); } result.Append(s); } } } return(TrimPunctuationAndQuotationMarks(result.ToString(), formattingOptions)); }