Pregunta

Estoy usando el paquete de marcado de Django para transformar reStructuredText en html. ¿Hay una manera de personalizar el escritor HTML para agregar un atributo de clase a cada etiqueta <p>?

Podría usar la directiva de clase rel="noreferrer"> para cada párrafo, pero me gustaría para automatizar este proceso.

Por ejemplo, quiero que este texto reestructurado:

hello
=====

A paragraph of text.

Para ser convertido a esta html.

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

La razón por la que quiero insertar clases es porque estoy usando el guionizador biblioteca cuales funciona mediante la adición guiones a todas las etiquetas con una clase "con guión". Podría agregar la clase con guión de la etiqueta del recipiente, pero luego todos los hijos heredaría la clase separación silábica. Podría usar javascript para añadir dinámicamente la clase, pero pensé que podría ser una forma sencilla de hacerlo con reStructuredText.

Gracias por la ayuda,

Joe

¿Fue útil?

Solución

Usted no dice qué desea agregar una clase a cada párrafo, pero podría ser más fácil tomar un enfoque diferente. Por ejemplo, si usted está tratando con el estilo de los párrafos, se puede utilizar una técnica diferente CSS para seleccionar todos los párrafos de la salida:

CSS:

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

HTML:

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

Actualización: ya que usted está intentando utilizar hyphenator.js, se recomienda usar su ajuste selectorfunction para seleccionar los elementos de manera diferente:

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

Otros consejos

subclase la incorporada en el escritor html4css1, utilizando esta como referencia ..

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')

A continuación, utilizar de esta manera:

from docutils.core import publish_string
print publish_string("*This* is the input text", writer=MyHTMLWriter())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top