示例#1
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string content = "";

            switch (type)
            {
            case HeaderType.H1:
                content = "# ";
                break;

            case HeaderType.H2:
                content = "## ";
                break;

            case HeaderType.H3:
                content = "### ";
                break;

            case HeaderType.H4:
                content = "#### ";
                break;
            }
            string htype = content;

            content += base.ToMarkdown(ctx);
            return(content + "\n");
        }
示例#2
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string c = base.ToMarkdown(ctx);

            c = string.Join("\n", c.Split('\n').Select(l => l == "" ? "" : "> " + l));
            return(c);
        }
示例#3
0
 public override string ToMarkdown(MarkdownTranslationContext ctx)
 {
     if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
     {
         return(Content);
     }
     return(Content.Replace("*", "\\*").Replace("~~", "\\~~").Replace("_", "\\_"));
 }
示例#4
0
 public override string ToMarkdown(MarkdownTranslationContext ctx)
 {
     if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
     {
         return(base.ToMarkdown(ctx));
     }
     return("<span id=\"" + Attributes["id"] + "\">" + base.ToMarkdown(ctx) + "</span>");
 }
示例#5
0
 public override string ToMarkdown(MarkdownTranslationContext ctx)
 {
     if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
     {
         return(base.ToMarkdown(ctx));
     }
     return("<sup>" + base.ToMarkdown(ctx) + "</sup>");
 }
示例#6
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string content = base.ToMarkdown(ctx);

            if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
            {
                return(content);
            }
            return("**" + content + "**");
        }
示例#7
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string content = base.ToMarkdown(ctx);

            if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
            {
                return(content);
            }
            return("<span style=\"" + Attributes["style"] + "\">" + content + "</span>");
        }
示例#8
0
文件: LinkNode.cs 项目: lbrugnara/dml
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string href  = (Attributes.ContainsKey("href") ? Attributes["href"] : "").Trim();
            string title = (Attributes.ContainsKey("title") ? Attributes["title"] : "").Trim();

            if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
            {
                return(string.Format("[[ {0} | {1} | {2} ]]", base.ToMarkdown(ctx), href, title));
            }
            return($"[{base.ToMarkdown(ctx)}]({href} \"{title}\")");
        }
示例#9
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string src   = (Attributes.ContainsKey("src") ? Attributes["src"] : "").Trim();
            string alt   = (Attributes.ContainsKey("alt") ? Attributes["alt"] : "").Trim();
            string title = (Attributes.ContainsKey("title") ? Attributes["title"] : "").Trim();

            if (AncestorIs(DmlElementType.CodeBlock, DmlElementType.InlineCode))
            {
                return(string.Format("[{ {0} | {1} | {2} }]", alt, src, title));
            }
            return($"![{alt}]({src} \"{title}\")");
        }
示例#10
0
文件: CodeNode.cs 项目: lbrugnara/dml
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string content = "";

            if (!isBlock)
            {
                content = base.ToMarkdown(ctx);
                int needed = 0;
                while (content.Contains("".PadLeft(needed++, '`')))
                {
                    ;
                }
                string wrap = "".PadLeft(needed - 1, '`');
                content = wrap + "" + content + "" + wrap;
            }
            else
            {
                string lang = (Attributes.ContainsKey("class") ? Attributes["class"] : "");
                string body = base.ToMarkdown(ctx);

                int needed = 2;
                while (body.Contains("".PadLeft(needed++, '`')))
                {
                    ;
                }
                string wrap = "".PadLeft(needed, '`');

                if (ctx.CodeBlockSupport.HasFlag(CodeBlockSupport.Full))
                {
                    body = body.TrimEnd('\n');
                }
                else if (ctx.CodeBlockSupport.HasFlag(CodeBlockSupport.Multiline))
                {
                    body = string.Join("\n", body.Split('\n').Where(s => s != string.Empty)); // -> Remove empty spaces, MD doesn't continue the block with them
                }
                else
                {
                    var bodyparts = body.Split('\n');
                    if (bodyparts.Last() == "")
                    {
                        bodyparts = bodyparts.Take(bodyparts.Length - 1).ToArray();
                    }
                    body = string.Join("\n", bodyparts.Select(s => s != string.Empty ? s : wrap + "\n" + wrap)); // -> Close and re open in different code blocks
                }

                content = wrap + lang + "\n" + body + "\n" + wrap + "\n\n"; // End with two NewLines
            }
            return(content);
        }
示例#11
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            string content = base.ToMarkdown(ctx);
            var    parts   = content.Split('\n');

            // Beauty hack: Check if after the first "\n" there is an indentation
            // in that case, use the \n, if not, discard it
            if (parts.Count() > 1 && !parts[1].StartsWith("    "))
            {
                parts = parts.Skip(1).ToArray();
            }
            content = string.Join("\n", parts);
            if ((int)Properties["indents"] == 0)
            {
                content += "\n";
            }
            return(content);
        }
示例#12
0
        public override string ToMarkdown(MarkdownTranslationContext ctx)
        {
            ListNode parent = Parent as ListNode;
            int      level  = 0;

            if (parent.Properties.ContainsKey("indents"))
            {
                level = (int)parent.Properties["indents"] * 4;
            }
            else
            {
                parent.Properties["indents"] = level;
            }

            if (complete)
            {
                return("\n" + "".PadRight(level, ' ') + "- [x] " + base.ToMarkdown(ctx));
            }
            return("\n" + "".PadRight(level, ' ') + "- [ ] " + base.ToMarkdown(ctx));
        }
示例#13
0
 public virtual string ToMarkdown(MarkdownTranslationContext ctx) => string.Join("", Children.Select(c => c.ToMarkdown(ctx)));
示例#14
0
 public override string ToMarkdown(MarkdownTranslationContext ctx)
 {
     return("- - - -");
 }
示例#15
0
 public override string ToMarkdown(MarkdownTranslationContext ctx)
 {
     return(base.ToMarkdown(ctx) + "\n");
 }