为什么MarkdownSharp不能编码我的HTML?

在我看来,Markdown的一个更大目标是阻止用户直接输入可能格式错误的HTML。

那么在MarkdownSharp中我并不完全适合我。

当你在“abc”之后立即获得额外的换行符时,此示例正常工作… 在此处输入图像描述

但是当那个换行符不存在时,我认为它应该仍然是HtmlEncoded,但这不会发生在这里…… 在此处输入图像描述

在幕后,渲染的标记来自iframe。 这就是它背后的代码……

  

当然,我必须遗漏一些东西。 哦,我正在使用v1.13(撰写本文时的最新版本)。


编辑(这是对StackOverflow实现的测试)

ABC

这不应该是红色的

对于那些不想使用Steve Wortham定制解决方案的人,我已经向MarkdownSharp提交了一个问题并提出了修复建议: http : //code.google.com/p/markdownsharp/issues/detail? id = 43

如果您下载我附加的Markdown.cs文件,您将找到一个可以设置的新选项。 它将阻止MarkdownSharp重新编码代码块中的文本。

在将输入传递给markdown之前,不要忘记对输入进行HTML编码,而不是之后。

另一种解决方案是像Stack Overflow那样列出HTML标签。 您可以在将内容传递给降价后执行此操作。

有关更多信息,请参阅此处: http : //www.CodeTunnel.com/blog/post/24/mardownsharp-and-encoded-html

由于很明显StackOverflow实现包含了很多可能需要耗费时间进行测试和弄清楚的定制,所以我决定转向另一个方向。

我创建了自己的简化标记语言,它是Markdown的一个子集。 这个开源项目位于http://ultralight.codeplex.com/ ,您可以在http://www.bucketsoft.com/ultralight/上看到一个工作示例。

该项目是一个完整的ASP.NET MVC解决方案,带有Javascript编辑器。 与MarkdownSharp不同,保证安全的HTML。 Javascript解析器用于客户端和服务器端,以保证一致的标记(特别感谢Jurassic Javascript编译器 )。 只需要为该解析器维护一个代码库,这是一件很棒的事情。

虽然该项目仍处于测试阶段,但我已经在我自己的网站上使用它,到目前为止似乎运行良好。

也许我不理解? 如果你在Markdown中开始一个新的代码块,你需要一个双线换行和四个空格缩进 – 我必须在任何渲染器中使用一个换行符。

 abc -- Here comes a code block: 
This is code

收益:

abc – 这是一个代码块:

 
This is code

根据你的说法,似乎MarkdownSharp对这个规则做得很好,所以只有一个换行符(但缩进):

  abc -- Here comes a code block: 
This should be code

我们弄得一团糟而不是代码块:

abc – 这是一个代码块:这应该是代码

我假设StackOverflow正在剥离

标签,因为他们认为评论不应该有分歧和类似的东西。 (?)(一般来说,他们不得不做很多其他处理,例如获取语法高亮等等?)

编辑: 我认为人们期待Markdown实施的错误。 例如,正如我在下面所说, 没有“无效降价”这样的事情 它不是一种编程语言或类似的东西。 我已经validation了我可以从命令行中获得的所有三个降价实现,无论是“转换”随机.js和.c文件,还是那些插入到其他合理的markdown中的内容 – 以及插入的zip文件和其他废话 – 都变成了有效的html浏览器根本不介意显示 – 尽管它有鸡肉划痕。 如果你想排除一些东西,例如在wiki程序中,你会做更多的事情,当然,正如大多数降价使用的维基程序那样。