private static VerseRange GetVerseNumbers(XElement verseHref) { VerseRange result = null; if (verseHref != null) { result = new VerseRange(); string[] tokens = verseHref.Value.Split(' '); foreach (var token in tokens) { if (NumberParser.TryParseNumber(token, out int verseNum)) { if (result.FirstVerse == 0) { result.FirstVerse = verseNum; } else if (result.LastVerse == 0) { result.LastVerse = verseNum; } } if (result.IsValid()) { break; } } } return(result != null && result.IsValid() ? result : null); }
private VerseRange GetVerseNumbersNewStyle(string fullPath) { VerseRange result = null; var x = GetXmlFile(fullPath); var attr = x?.Root?.Attribute("xmlns"); if (attr != null) { XNamespace ns = attr.Value; var body = x.Root.Descendants(ns + "body").SingleOrDefault(); var verseRange = body?.Descendants(ns + "a").FirstOrDefault(n => { var xAttribute = n.Attribute("href"); return(xAttribute != null && xAttribute.Value.StartsWith("bibleversenav")); }); if (verseRange != null) { result = GetVerseNumbers(verseRange); } } return(result); }
public IActionResult OnPostReset() { VerseRange = new VerseRange { Book = "Genesis", ChapterBeg = 1, VerseBeg = 1, ChapterEnd = 2, VerseEnd = 3 }; return(RedirectToPage(Anchors.ServerSide.Index)); }
public void OnGet(TestCase test = TestCase.None, bool autosuggested = true) { switch (test) { case TestCase.None: break; case TestCase.Gen_1_1_1: VerseRange = new VerseRange { Book = "Genesis", ChapterBeg = 1, VerseBeg = 1, ChapterEnd = 1, VerseEnd = 1 }; break; case TestCase.Gen_1_1_2: VerseRange = new VerseRange { Book = "Genesis", ChapterBeg = 1, VerseBeg = 1, ChapterEnd = 1, VerseEnd = 2 }; break; case TestCase.Gen_1_2_2_1: VerseRange = new VerseRange { Book = "Genesis", ChapterBeg = 1, VerseBeg = 2, ChapterEnd = 2, VerseEnd = 1 }; break; case TestCase.Gen_1_3_2_1: VerseRange = new VerseRange { Book = "Genesis", ChapterBeg = 1, VerseBeg = 3, ChapterEnd = 2, VerseEnd = 1 }; break; default: break; } AutoSuggested = autosuggested; }
private VerseRange GetVerseNumbersOldStyle(string fullPath) { VerseRange result = null; var x = GetXmlFile(fullPath); var attr = x?.Root?.Attribute("xmlns"); if (attr != null) { XNamespace ns = attr.Value; var body = x.Root.Descendants(ns + "body").SingleOrDefault(); const string chapterToken = "chapter"; var verseElems = body?.Descendants(ns + "a").Where(n => { var idAttr = n.Attribute("id"); return(idAttr != null && idAttr.Value.StartsWith(chapterToken)); }); if (verseElems != null) { int chapterNumber = 0; foreach (var verseElem in verseElems) { var idElem = verseElem.Attribute("id"); if (idElem != null) { if (chapterNumber == 0) { var chapterNumberString = idElem.Value.Substring(chapterToken.Length); int.TryParse(chapterNumberString, out chapterNumber); } else { var token = $"{chapterToken}{chapterNumber}_verse"; if (idElem.Value.StartsWith(token)) { var verseNumberString = idElem.Value.Substring(token.Length); if (int.TryParse(verseNumberString, out var verseNum)) { if (result == null) { result = new VerseRange { FirstVerse = int.MaxValue }; } result.FirstVerse = Math.Min(result.FirstVerse, verseNum); result.LastVerse = Math.Max(result.LastVerse, verseNum); } } } } } } } return(result); }
public IActionResult OnPostNormal(VerseRange verseRange) { string verseUrl = $"{verseRange.Book}-{verseRange.ChapterBeg}-{verseRange.VerseBeg}-{verseRange.ChapterEnd}-{verseRange.VerseEnd}"; return(RedirectToPage(Anchors.VerseList.Index, new { verse = verseUrl })); }