2010-10-04 5 views
2

Im en utilisant démarquage python pour mon projet django, quand j'ai la valeurcomment passer attribut de classe et de la valeur à Markdown syntaxe

#/usr/bin/env python 
print "this is converted to html code block" 

la sortie est

<pre><code>  
#/usr/bin/env python 
print "this is converted to html code block" 
</code><pre> 

Maintenant, ma question est que comment puis-je transmettre l'attribut de classe et la valeur au code elem. Exemple:

#i should be using some markdown syntax below 
[class="python"] 
#/usr/bin/env python 
print "this is converted to html code block" 

puis la sortie ici

<pre><code class="python">  
#/usr/bin/env python 
print "this is converted to html code block" 
</code><pre> 

est-ce possible? et comment?

Répondre

2

Vous pouvez écrire HTML dans Markdown, mais vous ne pouvez pas ajouter des choses comme des classes et des ids. Pour plus de détails, voir this question ou this question pour plus de détails.

+0

droite Skilldrick, alors que je viens d'écrire mes blocs de code manuellement - envelopper l'intérieur

code here
et ne pas indentera par 4 espaces sinon il sera converti en Markdown –

+0

C'est exact. J'écris mon blog dans Markdown, donc je dois faire des choses comme ça tout le temps. C'est bien que tu puisses aller au HTML quand tu en as besoin (un peu comme descendre à l'assembleur de C). – Skilldrick

0

Vous pouvez transmettre le code HTML résultant via un autre filtre qui recherche et analyse la ligne #! et ajoute la classe Python en fonction de celle-ci. lxml serait un bon moyen de le faire. Je ne sais pas comment vous vous y prendrez avec Django.

0

Ceci est ma solution. Tout d'abord, le Markdown, en retrait de sorte qu'il deviendra un bloc de code:

|*|-language-css-|*| 
    .code { 
     color: red; 
    } 

Notez la | * | - et - | * | J'utilise ces symboles juste pour m'assurer que j'ai quelque chose d'unique à analyser ensuite.

Puis, un peu de JavaScript (jQuery pour l'instant, je vais écrire dans JS droite pour optimiser):

$('pre code').each(function() { 

    var code = $(this).html(), 
     the_code = code.split('-|*|')[1].substring(1), 
     language = code.split('|*|-')[1].split('-|*|')[0]; 

    $(this).html(the_code).addClass(language); 

}); 

ci-dessus JavaScript, comme vous pouvez le voir, prendra tout ce qui était à l'intérieur du | * | - et - | * | et ajoutez-le en tant que classe sur l'élément CODE. Modifiez selon vos besoins.

Le résultat est le suivant:

<pre> 
    <code class="language-css"> 
     .code { 
      color: red; 
     } 
    </code> 
</pre> 
1

Si vous utilisez Github aromatisée Markdown vous pouvez utiliser ce

```python 
    print "I am python!" 
``` 

Il ajoutera une classe "lang-python". J'avais besoin de ça pour highlightjs.

Voir here

Questions connexes