Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public IActionResult OnPostReset()
 {
     VerseRange = new VerseRange {
         Book = "Genesis", ChapterBeg = 1, VerseBeg = 1, ChapterEnd = 2, VerseEnd = 3
     };
     return(RedirectToPage(Anchors.ServerSide.Index));
 }
Пример #4
0
        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;
        }
Пример #5
0
        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);
        }
Пример #6
0
        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 }));
        }