public BibleTranslationDifferencesParallelVersesFormula(string parallelVersesFormula, BibleTranslationDifferencesBaseVersesFormula baseVersesFormula, BibleBookDifference.CorrespondenceVerseType correspondenceType, int?valueVersesCount, bool skipCheck, bool emptyVerseContent) : base(parallelVersesFormula) { if (valueVersesCount.HasValue && valueVersesCount == 0) { throw new NotSupportedException("ValueVersesCount must be greater than 0."); } if (valueVersesCount.HasValue && correspondenceType == BibleBookDifference.CorrespondenceVerseType.All) { throw new ArgumentException("CorrespondenceType must not be 'All' if ValueVersesCount defined."); } this.BaseVersesFormula = baseVersesFormula; this.CorrespondenceType = correspondenceType; this.ValueVersesCount = valueVersesCount; if (!string.IsNullOrEmpty(OriginalFormula)) { var indexOfColon = OriginalFormula.IndexOf(":"); if (indexOfColon != OriginalFormula.LastIndexOf(":")) { var indexOfComma = OriginalFormula.IndexOf(","); if (indexOfComma == -1) { throw new NotSupportedException(string.Format("Two colons must be devided by comma: '{0}'", OriginalFormula)); } if (indexOfComma != OriginalFormula.LastIndexOf(",")) { throw new NotSupportedException(string.Format("Only one comma is supported: '{0}'", OriginalFormula)); } var parts = OriginalFormula.Split(new char[] { ',' }); this.OriginalFormula = parts[0]; SecondFormula = new BibleTranslationDifferencesParallelVersesFormula( parts[1], this.BaseVersesFormula, this.CorrespondenceType, this.ValueVersesCount, skipCheck, emptyVerseContent); } ChapterFormulaPart = new ParallelChapterFormulaPart(OriginalFormula.Substring(0, indexOfColon), this); VersesFormulaPart = new ParallelVersesFormulaPart(OriginalFormula.Substring(indexOfColon + 1), this, correspondenceType); } else { this.IsEmpty = true; } this.SkipCheck = skipCheck; this.EmptyVerseContent = emptyVerseContent; }
//internal int LastChapter //{ // get // { // return BaseVersePointer.TopVerseNumber.GetValueOrDefault().Chapter; // } //} public BibleTranslationDifferencesBaseVersesFormula(int bookIndex, string baseVersesFormula, string parallelVersesFormula, BibleBookDifference.CorrespondenceVerseType correspondenceType, bool skipCheck, bool emptyVerseContent, VerseFactory verseFactory) : base(baseVersesFormula) { this.BookIndex = bookIndex; if (string.IsNullOrEmpty(this.OriginalFormula)) { if (parallelVersesFormula.IndexOfAny(new char[] { 'X', '+' }) != -1) { throw new NotSupportedException( string.Format("For empty base verse must be defined concrete parallel verse: '{0}'", parallelVersesFormula)); } var indexOfColon = OriginalFormula.IndexOf(":"); if (indexOfColon != OriginalFormula.LastIndexOf(":")) { throw new NotSupportedException( string.Format("The verses formula with two colons (':') is not supported yet: '{0}'", OriginalFormula)); } Initialize(parallelVersesFormula, verseFactory); IsEmpty = true; } else { Initialize(baseVersesFormula, verseFactory); } if (IsMultiVerse && correspondenceType != BibleBookDifference.CorrespondenceVerseType.All) { throw new NotSupportedException( "Multi Base Verses are not supported for not strict processing (when correspondenceType != 'All')."); } this.SkipCheck = skipCheck; this.EmptyVerseContent = emptyVerseContent; }