0

私は 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 のドキュメントを見ました。

問題は、マルク法を使用することです:

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

結果として得られる html コードはエスケープされるため、得られるのはそのままのテキストであり、必要な生の html ではありません。

戦略を変更して、次のようなものを使用してみました:

context.push(doc.md_el(:raw_html,[],:raw_html => "<p> raw raw raw </p>")

無駄に...私が今得たものは次のとおりです。REXML could not parse this XML/HTML:

この問題については何も見つかりませんでした。maruku のドキュメントは非常に薄いです (または、私は検索が非常に苦手です)。

どんな助けでも大歓迎です。

4

1 に答える 1

1

maruku バージョン 0.6.0 ではこのバグを再現できないようです。

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

HTMLエスケープなしで、期待される結果を生成します。多分問題は修正されましたか?

ただし、Maruku は、生成する HTML についてはかなり厳密です。<p>raw html</p>

今後の参考のために、これは私がスパン拡張を登録し{{var_name}}<span class='text_var' text_var='var_name'>&nbsp;</span>maruku 0.6.0で置き換える方法です:

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)
于 2011-02-10T16:25:20.267 に答える