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()); } } } }
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")); }