【问题标题】:Extending MaRuKu to generate raw html tags, md_html escapes html扩展MaRuKu生成原始html标签,md_html转义html
【发布时间】:2010-08-09 01:39:54
【问题描述】:

我正在使用 Insitiki 代码并尝试扩展 maruku 语法以生成一些自定义 html 标记。

例子:

|youtube 0FWPr6u8YF |

应该打印html代码如下:

<object data='http://www.youtube.com/v/01hcB2zmMqM' style='width:425px; height:350px;' type='application/x-shockwave-flash'><param name='movie' value='http://www.youtube.com/v/01hcB2zmMqM'/></object>

因此给了我一个 youtube 嵌入视频。

为了让它工作,我按照本教程 http://maruku.rubyforge.org/extending/extensions.html 并查看了 maruku 文档。

问题是,使用 maruku 方法:

context.push(doc.md_html("&lt;p&gt;raw html&lt;/p&gt;"))

生成的 html 代码被转义,所以我得到的是逐字文本,而不是我想要的原始 html。

我尝试改变策略并使用类似的方法:

context.push(doc.md_el(:raw_html,[],:raw_html =&gt; "&lt;p&gt; raw raw raw &lt;/p&gt;")

没用...我现在得到的是:REXML could not parse this XML/HTML:

在这个问题上一无所获,maruku 文档真的很薄(或者我真的不擅长搜索)......这家伙似乎有类似的问题textile and maruku problem

感谢任何帮助。

【问题讨论】:

    标签: html ruby-on-rails maruku


    【解决方案1】:

    我似乎无法在 maruku 版本 0.6.0 下重现此错误。

    context.push(doc.md_html("<p>raw html</p>"))
    

    生成预期的结果,没有 html 转义。也许问题已经解决了?

    Maruku 对您生成的 HTML 相当严格,因此它可能不喜欢您插入的实际代码而不是 &lt;p&gt;raw html&lt;/p&gt;

    为了将来参考,这就是我设法注册跨度扩展以在 maruku 0.6.0 下将 {{var_name}} 替换为 &lt;span class='text_var' text_var='var_name'&gt;&amp;nbsp;&lt;/span&gt; 的方法:

    TextVar = /(\{\{)(.+)(\}\})/
    
    MaRuKu::In::Markdown.register_span_extension(
      :chars => 123, #ASCII ordinal of {
      :regexp => TextVar,
      :handler => lambda do |doc, src, con|
        m = src.read_regexp3(TextVar)
        var_name = m.captures.compact[1]
        string = "<span class='text_var' text_var='#{var_name}'>&nbsp;</span>"
        con.push doc.md_html(string)
        #con.push doc.md_html("<p>raw html</p>")
        true
    end)
    

    【讨论】:

    • 感谢您的回答。我已经很久没有问了,我认为这个问题已经死了!我已经放弃了这个想法,但现在是时候进行更多调查了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2019-02-09
    相关资源
    最近更新 更多