2010-08-09 6 views
0

Je travaille dans le code Insitiki et essaie d'étendre la syntaxe maruku pour générer des balises html personnalisées.Extension de MaRuKu pour générer des balises html brutes, md_html échappe html

Exemple:

|youtube 0FWPr6u8YF | 

imprime le code html comme suit:

<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> 

me donnant ainsi un youtube embbeded vidéo.

Pour que cela fonctionne, j'ai suivi ce tutoriel http://maruku.rubyforge.org/extending/extensions.html et j'ai regardé la documentation de maruku.

Le problème est, selon la méthode de Maruku:

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

Le code html résultant est échappé, donc ce que je reçois est un texte mot à mot et non le HTML brut que je voulais.

J'ai essayé de changer la stratégie et en utilisant quelque chose comme:

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

Pour ne sert à rien ... ce que je reçois est maintenant: REXML could not parse this XML/HTML:

rien sur cette question, les documents sont Maruku vraiment mince (ou je suis vraiment mauvais à la recherche) ... ce gars semble avoir un problème similaire textile and maruku problem

Toute aide est appréciée.

Répondre

1

Je n'arrive pas à reproduire ce bogue sous maruku version 0.6.0. Génère le résultat attendu, sans échappement HTML. Peut-être que le problème a été corrigé?

Maruku est assez strict le code HTML que vous générez, donc peut-être qu'il n'aime pas quelque chose sur le code réel que vous insérez au lieu de <p>raw html</p>

Pour référence ultérieure, voici comment je suis parvenu à enregistrer un l'extension durée pour remplacer {{var_name}} avec <span class='text_var' text_var='var_name'>&nbsp;</span> sous 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) 
+0

Merci pour la réponse. Ça fait longtemps que je l'ai demandé et j'ai pensé que cette question était morte! J'avais renoncé à cette idée, mais maintenant il est temps d'en explorer d'autres. – lfzawacki