2009-10-27 18 views
1

J'ai récemment utilisé Markdown. L'un de mes plus gros problèmes avec Markdown est que Markdown n'a pas de syntaxe pour inclure des fichiers dans un document (par exemple, le paquet listings pour LaTeX).Demande de commentaires: Quelle devrait être la syntaxe pour inclure des extraits de code dans Markdown? (à partir de fichiers externes)

Je voudrais étendre Markdown à la prise en charge incluant des fichiers entiers et partiels comme extraits de code. Par exemple, il pourrait ressembler à ceci:

![:include src/foo/bar.rb](10-20) 

et qui placerait le contenu des bar.rb lignes 10-20 dans mon document comme un bloc code. La logique est que

  • la documentation peut être mise à jour lorsque le code change. (Par rapport à copier et coller qui obtient toujours dépassée)
  • , vous pouvez tester l'unité le code exact qui se trouve dans la documentation

Mes questions sont les suivantes:

  1. Que doit la syntaxe être?
  2. Cela a-t-il déjà été fait et il me manque?
+0

me rappelle un Wiki – lexu

Répondre

1

Je serais plus enclin à trouver un moyen général d'étendre la syntaxe Markdown, puis l'utiliser pour fournir un support pour une fonction d'inclusion. Ainsi, par exemple, vous pouvez définir la syntaxe comme (je ne suis pas vraiment suggérer cette syntaxe particulière, juste un exemple):

[[command: arg arg arg...]] 

..where command fait référence à une commande que l'analyseur de démarquage ne comprend pas, mais peut rappeler à autre chose pour le traiter. Vous pouvez ensuite créer une fonction d'inclusion qui fonctionnera avec markdown, mais qui n'en fera pas partie. Quelque chose comme:

[[include: src/foo/bar.md]] 

Oh, et si vous faites cela, je serais probablement pas fourni un moyen d'inclure un fichier partiel, du moins pas en utilisant les numéros de ligne - comme cela signifie que vous devez revenir en arrière et modifier tous les appels d'inclusion si vous changez la longueur du document, ce qui rend la réutilisation plus difficile (si vous pouviez trouver un moyen de marquer les sections, cela pourrait fonctionner mieux).

+0

* J'aime l'idée d'avoir un 'command' générique. Bonne idée * Bon point sur l'utilisation des marqueurs plutôt que sur les numéros de ligne. Je vais devoir réfléchir à la façon de faire ce travail bien * Cette syntaxe est idiomatique de Markdown ainsi –

1

Je suis généralement enclin à voir si les choses peuvent fonctionner de manière raisonnable avec la syntaxe existante. Actuellement, la

 
    ![Example Photo](http://example.com/example.jpg) 

syntaxe et ses parents sont utilisés pour inclure une image dans le texte. Dans la même veine,

 
    +[Generic Heading](http://example.com/heading.txt) 

ou

 
    +[Local Heading](file:///dir/a/b/c/example.txt) 

peut être utilisé pour inclure du texte. Dans ce cas, le texte entre crochets est similaire à l'attribut alt-text pour les images en ligne: Il contient une description courte et compréhensible du fichier inclus.

+ à l'aide est intuitive pour moi: Cela signifie ajouter le contenu de ce fichier dans ce document ici.

+0

J'aime l'idée d'essayer de garder la même syntaxe autant que possible, mais une partie de la question ici est que nous ne "savoir" ce que le "texte à inclure du système de fichiers local" est. Nous voulons le charger à partir du fichier sans le mettre dans le fichier Markdown lui-même. Donc, il y a un peu un problème de poulet et l'oeuf avec cette syntaxe. –

+0

@Nate Murray: Vous m'avez mal compris. '+ [Texte à inclure à partir du système de fichiers local]' est exactement comme l'attribut 'alt text'. Utilisez-le comme 'REMark' pour donner une description de ce qui est inclus. –

+0

Ah, ça a plus de sens. Cool merci. –