Question

J'utilise le package de balisage de Django pour transformer ReStructuredText en html. Y at-il un moyen de personnaliser l'écrivain HTML pour ajouter un attribut class pour chaque balise <p>?

Je pourrais utiliser la pour chaque paragraphe, mais je voudrais automatiser ce processus.

Par exemple, je veux que ce texte restructuré:

hello
=====

A paragraph of text.

Pour convertir ce html.

<h1>hello</h1>
<p class="specialClass">A paragraph of text.</p>

La raison pour laquelle je veux insérer des classes est parce que je suis en utilisant la bibliothèque qui Hyphenator fonctionne en ajoutant des traits d'union à tous les tags avec une classe « césure ». Je pourrais ajouter la classe Césure à la balise conteneur, mais tous les enfants hériterait la classe Césure. Je pourrais utiliser javascript pour ajouter dynamiquement la classe, mais je pensais qu'il pourrait y avoir un moyen simple de le faire avec ReStructuredText.

Merci pour l'aide,

Joe

Était-ce utile?

La solution

Vous ne dites pas pourquoi vous voulez ajouter une classe à chaque paragraphe, mais il pourrait être plus facile de prendre une approche différente. Par exemple, si vous essayez de style les paragraphes, vous pouvez utiliser une technique CSS différente pour sélectionner tous les paragraphes de la sortie:

CSS:

div.resttext p {
    /* all the styling you want... */
}

HTML:

<div class='resttext'>
<p>Blah</p>
<p>Bloo</p>
</div>

Mise à jour: puisque vous essayez d'utiliser hyphenator.js, je suggère d'utiliser son réglage de selectorfunction pour sélectionner différemment les éléments:

Hyphenator.config({
    selectorfunction: function () {
        /* Use jQuery to find all the REST p tags. */
        return $('div.resttext p');
        }
    });
Hyphenator.run();

Autres conseils

intégré écrivain html4css1, ce comme référence ..

from docutils.writers import html4css1

class MyHTMLWriter(html4css1.Writer):
  """
  This docutils writer will use the MyHTMLTranslator class below.
  """
  def __init__(self):
      html4css1.Writer.__init__(self)
      self.translator_class = MyHTMLTranslator

class MyHTMLTranslator(html4css1.HTMLTranslator):
  def visit_paragraph(self, node):
      self.section_level += 1
      self.body.append(self.starttag(node, 'p', CLASS='specialClass'))
  def depart_paragraph(self, node):
      self.section_level -= 1
      self.body.append('</p>\n')

Utilisez ensuite comme ceci:

from docutils.core import publish_string
print publish_string("*This* is the input text", writer=MyHTMLWriter())
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top