Ejemplo n.º 1
0
        void Render(WikiElement parent, StringBuilder sb, IWikiParser parser)
        {
            WikiNode prev = null;

            foreach (WikiNode cur in parent.Children) {
                try {
                    if (cur is WikiTextNode) {
                        sb.Append (ReplaceInline ((cur as WikiTextNode).Text, parser));
                        continue;
                    }

                    WikiElement element = (WikiElement)cur;
                    string element_name = null;
                    if (element is WikiHeadingElement) {
                        element_name = "h" + (element as WikiHeadingElement).Indent.ToString ();
                    } else if (element is WikiParagraphElement) {
                        element_name = "p";
                    } else if (element is WikiListContainer) {
                        switch ((element as WikiListContainer).ListType) {
                            case WikiListType.Itemizing: element_name = "ul"; break;
                            case WikiListType.Enumerating: element_name = "ol"; break;
                            case WikiListType.Description: element_name = "dl"; break;
                        }
                    } else if (element is WikiListItemElement) {
                        element_name = "li";
                    }
                    if (element_name == null)
                        throw new Exception ();

                    sb.Append ('<');
                    sb.Append (element_name);
                    sb.Append ('>');
                    Render (element, sb, parser);
                    sb.Append ("</");
                    sb.Append (element_name);
                    sb.Append ('>');
                } finally {
                    prev = cur;
                }
            }
        }
Ejemplo n.º 2
0
 public DefinitionProviderWiki(IHttpClientFactory clientFactory, IWikiParser wikiParser)
 {
     this.clientFactory = clientFactory;
     this.wikiParser    = wikiParser;
 }
Ejemplo n.º 3
0
 public string Render(WikiRootElement root, IWikiParser parser)
 {
     StringBuilder sb = new StringBuilder ();
     Render (root, sb, parser);
     return sb.ToString ();
 }
Ejemplo n.º 4
0
        string ReplaceInline(string text, IWikiParser parser)
        {
            // Escape
            text = _escapeRegex.Replace (text, EscapeRegexMatchEvaluator);

            WikiInlineMarkupInfo[] markups = parser.InlineMarkups;
            for (int i = 0; i < markups.Length; i++) {
                Regex r = markups[i].Regex;
                switch (markups[i].Type) {
                    case WikiInlineMarkupType.Bold:
                        text = r.Replace (text, delegate (Match m) {
                            return "<span class=\"bold\">" + m.Groups["text"].Value + "</span>";
                        });
                        break;
                    case WikiInlineMarkupType.Italic:
                        text = r.Replace (text, delegate (Match m) {
                            return "<span class=\"italic\">" + m.Groups["text"].Value + "</span>";
                        });
                        break;
                    case WikiInlineMarkupType.BoldItalic:
                        text = r.Replace (text, delegate (Match m) {
                            return "<span class=\"italic bold\">" + m.Groups["text"].Value + "</span>";
                        });
                        break;
                    case WikiInlineMarkupType.WikiName:
                        text = r.Replace (text, delegate (Match m) {
                            return "<a href=\"" + WikiWebApp.WikiTitleToUrl (Unescape (m.Groups["name"].Value)) + "\">" + m.Groups["name"].Value + "</a>";
                        });
                        break;
                }
            }
            return text;
        }