public VerseViewModel( int chapterNumber, int verseNumber, VerseAnalysisWord selectedWord, VerseAnalysisWordPart selectedWordPart, IEnumerable <VerseAnalysisWord> words) { if (words == null) { throw new ArgumentNullException(nameof(words)); } ChapterNumber = chapterNumber; VerseNumber = verseNumber; SelectedWord = selectedWord; SelectedWordPart = selectedWordPart; Words = words.ToList().AsReadOnly(); }
private VerseViewModel CreateVerseViewModel( VerseAnalysis verseAnalysis, VerseAnalysisWord analysisWord, VerseAnalysisWordPart analysisWordPart) { const int WordsBeforeAndAfter = 3; int lower = Math.Max(1, analysisWord.WordNumber - WordsBeforeAndAfter); int upper = Math.Min(verseAnalysis.Words.Count, analysisWord.WordNumber + WordsBeforeAndAfter); var words = new List <VerseAnalysisWord>(); for (int index = lower - 1; index < upper; index++) { words.Add(verseAnalysis.Words[index]); } var result = new VerseViewModel( chapterNumber: verseAnalysis.ChapterNumber, verseNumber: verseAnalysis.VerseNumber, selectedWord: analysisWord, selectedWordPart: analysisWordPart, words: words); return(result); }