Ejemplo n.º 1
0
        /// <summary>
        /// Returns <see cref="InlineElement"/>
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        private IEnumerable <InlineElement> ParseLineBreak(string text)
        {
            string[] lines = text.Replace("\r\n", "\n").Replace("\r", "\n").Split(new[] { '\n' });
            for (int i = 0; i < lines.Length; i++)
            {
                bool isHardBreak = lines[i].EndsWith("  ", StringComparison.Ordinal) ||
                                   (lines[i].EndsWith("\\", StringComparison.Ordinal) &&
                                    !IsEscaped(lines[i], lines.Length - 1));
                if (i < lines.Length - 1)
                {
                    if (lines[i] != string.Empty)
                    {
                        if (isHardBreak && lines[i].EndsWith("\\", StringComparison.Ordinal))
                        {
                            yield return(InlineText.CreateFromText(lines[i].Substring(0, lines[i].Length - 1),
                                                                   parserConfig));
                        }
                        else
                        {
                            yield return(InlineText.CreateFromText(lines[i].TrimEnd(new[] { ' ' }), parserConfig));
                        }
                    }

                    yield return(isHardBreak
                        ? (InlineElement) new HardLineBreak(parserConfig)
                        : new SoftLineBreak(parserConfig));
                }
                else
                {
                    if (lines[i] != string.Empty)
                    {
                        yield return(InlineText.CreateFromText(lines[i], parserConfig));
                    }
                }
            }
        }
Ejemplo n.º 2
0
 internal Link(string destination, ParserConfig config, bool mailto = false) : base(config)
 {
     Children    = new InlineElement[] { InlineText.CreateFromText(destination, config, false) };
     Destination = (mailto ? "mailto:" : string.Empty) + InlineElementUtils.UrlEncode(destination);
 }