コード例 #1
0
        private RichTextNode ToRichTextNode(string example, string currentWord)
        {
            var segments        = zc.tH(MaybeAddPeriod(example)).Split("~");
            var normalTextNodes = segments.Select(s => new RichTextNode.Types.TextNode()
            {
                Text = s,
            });
            var currentWordNode = new RichTextNode.Types.TextNode()
            {
                Text   = zc.tH(currentWord),
                Styles = { "current-word" }
            };
            var inlineNodes = Join(normalTextNodes, currentWordNode)
                              .Select(t =>
                                      new RichTextNode.Types.InlineNode()
            {
                Text = t
            });

            return(new RichTextNode()
            {
                InlineContainer = new RichTextNode.Types.InlineContainerNode()
                {
                    Children =
                    {
                        inlineNodes
                    }
                },
                Styles = { "example" }
            });
        }
コード例 #2
0
 private static IEnumerable <RichTextNode.Types.TextNode> Join(IEnumerable <RichTextNode.Types.TextNode> list, RichTextNode.Types.TextNode separator)
 {
     return(list.Aggregate(new List <RichTextNode.Types.TextNode>(),
                           (list, next) =>
     {
         if (list.Count > 0)
         {
             list.Add(separator);
         }
         list.Add(next);
         return list;
     }, list => list.AsReadOnly()));
 }