public static bool IsTextType(this WikiNode node, WikiTextNodeType type) { var textNode = node as WikiTextNode; if (textNode == null) { return(false); } return(textNode.Type == type); }
private static WikiTextNode ParseTextGreedy(string page, WikiTextNodeType type, int start, out int idx) { string delimiter; switch (type) { case WikiTextNodeType.Comment: delimiter = "-->"; break; case WikiTextNodeType.Section2: delimiter = "=="; break; case WikiTextNodeType.Section3: delimiter = "==="; break; case WikiTextNodeType.Section4: delimiter = "===="; break; case WikiTextNodeType.Section5: delimiter = "====="; break; default: throw new ArgumentOutOfRangeException("type"); } WikiTextNode node = new WikiTextNode(type); idx = start; int closingidx = page.IndexOf(delimiter, idx); if (closingidx < 0) { node.Text = page.Substring(idx).TrimWhitespace(); idx = page.Length; } else { node.Text = page.Substring(idx, closingidx - idx).TrimWhitespace(); idx = closingidx + delimiter.Length; } return(node); }
internal WikiTextNode(WikiTextNodeType type, string text) { this.Type = type; this.Text = text; }
internal WikiTextNode(WikiTextNodeType type) : this(type, null) { }