Esempio n. 1
0
        private void AppendWord(FlowDocument document, WordInfo word)
        {
            ArticleParser parser  = new ArticleParser();
            WordArticle   article = parser.Parse(word.Word.Name, word.Word.Description);

            Paragraph paragraph = FlowDocumentStyles.CreateParagraph();

            document.Blocks.Add(paragraph);

            IEnumerable <WordFormGroup> formGroups = article.FormGroups.Where(fg => fg.TranslationGroups.SelectMany(tg => tg.Translations).Contains(Translation));

            foreach (WordFormGroup formGroup in formGroups)
            {
                bool firstForm = true;
                foreach (string form in formGroup.Forms)
                {
                    Hyperlink link = new Hyperlink();
                    link.Command          = Commands.NavigateTo;
                    link.CommandParameter = NavigationTarget.ToWord(word.Word.Name);
                    paragraph.Inlines.Add(link);

                    Run run = new Run(form);
                    link.Inlines.Add(run);
                    if (firstForm)
                    {
                        FlowDocumentStyles.FormatWord(run);
                        firstForm = false;
                    }
                    else
                    {
                        FlowDocumentStyles.FormatWordForm(run);
                    }

                    paragraph.Inlines.Add(new LineBreak());
                }
                foreach (WordTranslationGroup translationGroup in formGroup.TranslationGroups.Where(tg => tg.Translations.Contains(Translation)))
                {
                    foreach (string translation in translationGroup.Translations)
                    {
                        Run run = new Run("\u2022 " + translation);
                        paragraph.Inlines.Add(run);
                        FlowDocumentStyles.FormatTranslation(run);
                        paragraph.Inlines.Add(new LineBreak());
                    }
                    foreach (string example in translationGroup.Examples)
                    {
                        Run run = new Run("Example: " + example);
                        paragraph.Inlines.Add(run);
                        FlowDocumentStyles.FormatExample(run);
                        paragraph.Inlines.Add(new LineBreak());
                    }
                }
            }
        }
Esempio n. 2
0
        public void Test()
        {
            ArticleParser parser  = new ArticleParser();
            WordArticle   article = parser.Parse("a", "b");

            Assert.That(article.FormGroups.Count, Is.EqualTo(1));
            Assert.That(article.FormGroups[0].Forms, Is.EquivalentTo(new string[] { "a" }));
            Assert.That(article.FormGroups[0].TranslationGroups.Count, Is.EqualTo(1));
            Assert.That(article.FormGroups[0].TranslationGroups[0].Translations, Is.EquivalentTo(new string[] { "b" }));
            Assert.That(article.Format(), Is.EqualTo("#a\nb\n"));
        }