Exemple #1
0
        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);
        }