public void Read() { var reader = new CreoleReader("1234567890"); var actual = reader.Read(5); Assert.AreEqual("12345", actual); Assert.AreEqual(5, reader.Position); }
internal string ParseInlines(string markup, params Func<CreoleReader, CreoleElement>[] ignore) { var elements = new List<InlineElement>(); // parse markup var reader = new CreoleReader(markup); var textBuilder = new StringBuilder(); while (!reader.EndOfMarkup) { InlineElement inline = null; foreach (var inlineParser in InlineElements) { if (ignore.Contains(inlineParser)) continue; inline = inlineParser(reader); if (inline == null) continue; break; } if (inline == null) { textBuilder.Append(reader.Read(1)); } else { elements.AddRange(TextInline.Parse(textBuilder.ToString())); textBuilder.Clear(); elements.Add(inline); } } if (textBuilder.Length > 0) elements.AddRange(TextInline.Parse(textBuilder.ToString())); // render output var writer = new CreoleWriter(); foreach (var element in elements) { element.Render(this, writer); } return writer.ToString().Replace("\n", Environment.NewLine); }