/// <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)); } } } }
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); }