Question

J'utilise actuellement Jade sur un nouveau projet. Il semble bien adapté à la composition des mises en webapp, mais pas pour l'écriture du contenu statique, comme une page web de

éléments contenant du texte.

Par exemple, pour créer un tel paragraphe, je crois que je dois faire ceci:

p
  | This is my long,
  | multi-line
  | paragraph.

Pour une page Web statique complète des vrais paragraphes de texte, en utilisant jade devient un fardeau en raison de ce symbole de la conduite au début de chaque ligne.

Y at-il une sorte de sucre syntaxique pour marquer le bloc entier comme un nœud de texte, comme le symbole de la conduite fait sur une base ligne par ligne? Ou un filtre existant, je suis pas au courant de?

Une solution que je explore la création d'un: filtre à bloc ou quelque chose, que prepends chaque ligne avec un | puis passe à Jade, mais la documentation de jade sur la création de filtres est rare pour le moins, de sorte que peut prendre un certain temps pour comprendre. Si quelqu'un peut donner des indications quant à une telle solution, je vous en serais reconnaissant.

Était-ce utile?

La solution

De la jade github :

p.
foo asdf
asdf
 asdfasdfaf
 asdf
asd.

génère des résultats:

<p>foo asdf
asdf
  asdfasdfaf
  asdf
asd
.
</p>

La période de fin après la p est ce que vous cherchez.

Autres conseils

Après quelques bricolages, je travaillais sur les détails d'un filtre qui accomplit cela. L'affichage de la réponse ici car je pense que ce sera utile aux autres en utilisant jade.

Le code pour créer le filtre se révèle être assez simple:

var jade = require ("jade");

jade.filters.text = function(block, compiler){
    return new TextBlockFilter(block).compile();
};

function TextBlockFilter(node) {
    this.node = node;
}

TextBlockFilter.prototype.__proto__ = jade.Compiler.prototype;

TextBlockFilter.prototype.visit = function(node){

    // first this is called with a node containing all the block's lines
    // as sub-nodes, with their first word interpreted as the node's name
    //
    // so here, collect all the nodes' text (including its name)
    // into a single Text node, and then visit that instead.
    // the child nodes won't be visited - we're cutting them out of the
    // parse tree

    var text = new jade.nodes.Text();
    for (var i=0; i < node.length; i++) {
        text.push (node[i].name + (node[i].text ? node[i].text[0] : ""));
    }
    this.visitNode (text);
};

Et puis le look de balisage comme celui-ci. Notez qu'il vous permet d'inclure d'autres choses de jade entre: blocs de texte:

p
  :text
    This is my first line of text,
    followed by another
    and another.  Now let's include a jade link tag:
  a(href="http://blahblah.com")
  :text
    and follow it with even more text 
    and more,
    etc
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top