public static HorizontalLineBlock TryParse(CreoleReader reader) { var line = reader.PeekLine().Trim(); if (!line.StartsWith("----")) return null; if (line.Any(c => c != '-')) return null; reader.SkipLine(); return new HorizontalLineBlock(); }
public static IEnumerable<ParagraphBlock> Parse(string paragraphs) { var reader = new CreoleReader(paragraphs); while (!reader.EndOfMarkup) { var content = reader.ReadLineUntil(l => l.Trim().Length <= 0 ? l.Length : -1); if (content == null) content = reader.ReadToEnd(); else reader.SkipLine(); if (content.Trim().Length <= 0) continue; yield return new ParagraphBlock(content.Trim()); } }
public static HeadingBlock TryParse(CreoleReader reader) { var line = reader.PeekLine().Trim(); if (!line.StartsWith("=")) return null; var level = 0; for (level = 1; level < 6; level++) if (line[level] != '=') break; var endIndex = 0; for (endIndex = line.Length - 1; endIndex >= line.Length - level; endIndex--) if (line[endIndex] != '=') break; reader.SkipLine(); var content = line.Substring(level, endIndex - (level - 1)); return new HeadingBlock(level, content); }