Пример #1
0
        // helpers:

        //      parse paragraph words and fillers, convert text to objects with word offsets, etc...
        private void AddParagraph(Protocol protocol, Person speaker, string paragraphContent, KnessetContext context)
        {
            if (string.IsNullOrWhiteSpace(paragraphContent))
            {
                return;
            }
            if (!speakerParahraphs.ContainsKey(speaker.pn_name))
            {
                speakerParahraphs.Add(speaker.pn_name, 0);
            }
            Paragraph p = new Paragraph
            {
                protocol     = protocol,
                speaker      = speaker,
                pg_number    = newParagraphs.Count + 1,
                pn_pg_number = ++speakerParahraphs[speaker.pn_name]
            };

            newParagraphs.Add(p);
            int           offset      = 0;
            StringBuilder fillBuilder = new StringBuilder();

            paragraphReader.Read(paragraphContent,
                                 word =>
            {
                Word wordObj;
                if (!existingWords.ContainsKey(word))
                {
                    wordObj = new Word {
                        word = word
                    };
                    newWords.Add(wordObj);
                    existingWords.Add(word, wordObj);
                }
                else
                {
                    wordObj = existingWords[word];
                }
                newParagraphWords.Add(new ParagraphWord
                {
                    paragraph   = p,
                    WordObj     = wordObj,
                    pg_offset   = offset,
                    word_number = p.pg_num_words++
                });
                offset += word.Length;
            },
                                 filler =>
            {
                fillBuilder.Append(filler);
                offset += filler.Length;
            });
            p.pg_space_fillers = fillBuilder.ToString();
        }