/// <summary> /// Например, ":5" /// </summary> /// <param name="verseEntry"></param> /// <param name="docParseContext"></param> /// <returns></returns> private static bool VerseRule(VerseEntry verseEntry, IDocumentParseContext docParseContext) { var latestVp = docParseContext.CurrentParagraph.LatestVerseEntry?.VersePointer; if (latestVp == null) { var chapterEntry = docParseContext.CurrentParagraph.GetHierarchyChapterEntry() ?? docParseContext.CurrentHierarchy?.GetHierarchyChapterEntry(); if (chapterEntry?.Found == true) { latestVp = chapterEntry.ChapterPointer; } else if (docParseContext.TitleChapter?.Found == true) { latestVp = docParseContext.TitleChapter.ChapterPointer; } } if (latestVp != null && latestVp.MultiVerseType <= MultiVerse.OneChapter) { verseEntry.VersePointer.Book = latestVp.Book; verseEntry.VersePointer.ModuleShortName = latestVp.ModuleShortName; var latestTopChapter = string.IsNullOrEmpty(latestVp.ModuleShortName) ? latestVp.MostTopChapter : latestVp.OriginalMostTopChapter; verseEntry.VersePointer.SetChapter(latestTopChapter); return(true); } return(false); }
/// <summary> /// Например, "; 5" /// </summary> /// <param name="verseEntry"></param> /// <param name="docParseContext"></param> /// <returns></returns> private static bool ChapterRule(VerseEntry verseEntry, IDocumentParseContext docParseContext) { if (docParseContext.CurrentParagraph.LatestVerseEntry != null) { var latestVp = docParseContext.CurrentParagraph.LatestVerseEntry.VersePointer; verseEntry.VersePointer.Book = latestVp.Book; verseEntry.VersePointer.ModuleShortName = latestVp.ModuleShortName; return(true); } return(false); }
public bool TryRecognizeVerse(VerseEntry verseEntry, IDocumentParseContext docParseContext) { if (!verseEntry.VersePointerFound) { return(false); } foreach (var func in _funcs[verseEntry.EntryType]) { if (func(verseEntry, docParseContext)) { return(_verseCorrectionService.CheckAndCorrectVerse(verseEntry.VersePointer)); } } return(false); }
/// <summary> /// Например, ",5-6" /// </summary> /// <param name="verseEntry"></param> /// <param name="docParseContext"></param> /// <returns></returns> private static bool ChapterOrVerseRule(VerseEntry verseEntry, IDocumentParseContext docParseContext) { if (docParseContext.CurrentParagraph.LatestVerseEntry != null && StringUtils.CheckDivergence(docParseContext.CurrentParagraph.ParseResult.Text, docParseContext.CurrentParagraph.LatestVerseEntry.EndIndex, verseEntry.StartIndex, 2, ',')) { var latestVp = docParseContext.CurrentParagraph.LatestVerseEntry.VersePointer; verseEntry.VersePointer.Book = latestVp.Book; verseEntry.VersePointer.ModuleShortName = latestVp.ModuleShortName; verseEntry.EntryType = latestVp.VerseNumber.IsChapter ? VerseEntryType.Chapter : VerseEntryType.Verse; var latestTopChapter = string.IsNullOrEmpty(latestVp.ModuleShortName) ? latestVp.MostTopChapter : latestVp.OriginalMostTopChapter; if (verseEntry.EntryType == VerseEntryType.Verse) { verseEntry.VersePointer.MoveChapterToVerse(latestTopChapter); var latestTopVerse = string.IsNullOrEmpty(latestVp.ModuleShortName) ? latestVp.MostTopVerse : latestVp.OriginalMostTopVerse; if (verseEntry.VersePointer.Verse <= latestTopVerse) { return(false); } } else { if (verseEntry.VersePointer.Chapter <= latestTopChapter) { return(false); } } return(true); } return(false); }
public void Init(IDocumentProviderInfo documentProvider, IDocumentParseContext docParseContext) { this.documentProvider = documentProvider; this.docParseContext = docParseContext; }
private static bool FullVerseRule(VerseEntry verseEntry, IDocumentParseContext docParseContext) { return(true); }