2016-01-28 3 views
0

Je voudrais convertir les tableaux de démarques en textile un.Regexp qui convertit les tables de démarques en tables textiles.

tables Markdown suivent ce modèle:

| column | column | 
|--------|--------| 
|  |  | 

Alors que le textile celui-ci:

|_.column |_.column | 
|   |   | 

Maintenant, j'ai écrit l'expression suivante:

text.gsub(/\|[-|]+/, '') 

qui éliminent les |--------| barres. Je voudrais également ajouter le _. avant chaque titre de colonne, afin de les rendre en gras.

Avez-vous une idée d'obtenir ce résultat?

Répondre

1

Je ne sais pas du tout rubis, ne peut donc pas être sûr de quoi que ce soit au sujet de ses propres aspects syntaxiques. Voici donc une solution proposée Javascript, espérons-le, il est connu suffisamment large pour être facilement transposable:

function markdown2textileTables(source) { 
    var lines = source.split('\n'); 
    lines.forEach(function(line, index, lines) { 
    if (!!line.match(/^\|(?:[-]+\|)+$/)) { 
     var prevLineCols = lines[index - 1].split('|'); 
     prevLineCols = prevLineCols.map(function(col) { 
     return !!col ? '_.' + col.trim() : col; 
     }); 
     lines[index - 1] = prevLineCols.join('|'); 
     lines.splice(index, 1); 
    } 
    }); 
    return lines.join('\n'); 
} 

Exemple de travail here.

Notez que je n'ai pas pris en compte la longueur des colonnes de titre lorsque je suis passé de | column | à |_.column|, parce que je ne sais pas si c'est important ou non.
Si oui, le code ci-dessus doit être amélioré à l'instruction return !!col ? '_.' + col.trim() : col;, en fonction de l'actuel col.length et en ajoutant des espaces ou un titre de coupe.

3

Vous pouvez utiliser pandoc:

pandoc mytable.md -t textile -o mytable.textile