2017-02-21 2 views
1

Dans kramdown, il est généralement facile d'ajouter une classe à un peu de texte. Ici, par exemple, est un blockquote:Ajouter une classe aux lignes de table dans Kramdown

> This is a blockquote. 
{:.example} 

sortie HTML:

<blockquote class="example">This is a blockquote.</blockquote> 

Bien que cette technique fonctionne dans de nombreux endroits, il ne semble pas fonctionner avec des tables. Je veux définir une classe sur une ligne de table. je me attends à ce qui suit pour faire l'affaire:

... 
|one|two|three|{:.example} 
... 

En d'autres termes, j'attends la sortie partielle suivante:

<tr class="example"> 
... 
</tr> 

Ce que je reçois en fait est la suivante:

<tr> 
    <td>one</td> 
    <td>two</td> 
    <td>three</td> 
    <td>{:.example}</td> 
</tr> 

I Je me rends compte que je pourrais simplement écrire la table en HTML, mais je préférerais avoir l'avantage de lisibilité de kramdown. Est-il possible de faire ce que je veux dans kramdown? Si non, y a-t-il une meilleure solution que de passer au HTML?

+0

Pas strictement un "doublon" comme c'est pour une bibliothèque différente (Kramdown vs Python-Markdown), mais la réponse est la plupart du temps la même chose: [Python markdown ajouter une classe à la table] (http://stackoverflow.com/ a/21885984/866026) – Waylan

Répondre

1

Ceci n'est actuellement pas possible dans kramdown: voir les numéros #417 et #436. Si vous voulez rester dans le kramdown pur, vous devez utiliser le HTML.

Si vous ne voulez pas faire cela et que vous souhaitez effectuer un post-traitement mineur, vous pouvez utiliser des expressions régulières. Par exemple, si vous voulez le style que la deuxième ligne de la table

| foo | bar | baz | 
| xyzzy | plugh | thud | 

puis

$ kramdown file.md | perl -pe 's{tr}{++$n == 2 ? "tr class=\"waldo\"" : $&}ge' 

ou

$ kramdown file.md | tr '\n' '^' | sed 's/<tr/<tr class="waldo"/2' | tr '^' '\n' 

deux produits:

<table> 
    <tbody> 
    <tr> 
     <td>foo</td> 
     <td>bar</td> 
     <td>baz</td> 
    </tr> 
    <tr class="waldo"> 
     <td>xyzzy</td> 
     <td>plugh</td> 
     <td>thud</td> 
    </tr> 
    </tbody> 
</table> 

changement 2 à n'importe quel numéro que vous aimez. C'est un kludge, mais je ne connais pas d'autres solutions qui utilisent kramdown et ne retournent pas aux tables HTML.