예제 #1
0
        public static bool IsTextType(this WikiNode node, WikiTextNodeType type)
        {
            var textNode = node as WikiTextNode;

            if (textNode == null)
            {
                return(false);
            }
            return(textNode.Type == type);
        }
예제 #2
0
        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);
        }
예제 #3
0
 internal WikiTextNode(WikiTextNodeType type, string text)
 {
     this.Type = type;
     this.Text = text;
 }
예제 #4
0
 internal WikiTextNode(WikiTextNodeType type) : this(type, null)
 {
 }