private static string[] FlattenExplanation(Explanation.Types.Sense sense) { return((new string[] { sense.Text }) .Concat(sense.ChildSenses .SelectMany(s => FlattenExplanation(s))) .ToArray()); }
public RichTextNode ToRichTextNode(Explanation.Types.Sense sense, string currentWord = "~") { var output = new RichTextNode() { VerticalContainer = new RichTextNode.Types.VerticalContainerNode() { }, Styles = { "sense" } }; if (!string.IsNullOrWhiteSpace(sense.Text)) { output.VerticalContainer.Children.Add(SimpleTextWithOuterStyles( zc.tM(MaybeAddPeriod(sense.Text)), new string[] { "sense" })); } if (sense.Examples.Count() > 0) { output.VerticalContainer.Children.Add( new RichTextNode() { List = new RichTextNode.Types.ListNode() { Children = { sense.Examples.Select(ex => ToRichTextNode(ex, currentWord) ) } }, Styles = { "examples-list" } } ); } if (sense.ChildSenses.Count() > 0) { output.VerticalContainer.Children.Add( new RichTextNode() { List = new RichTextNode.Types.ListNode() { Ordered = true, Children = { sense.ChildSenses.Select(c => ToRichTextNode(c, currentWord) ) } } } ); } return(output); }