-
11-09-2019 - |
質問
私はHTMLにreStructuredTextのを変換するために、Djangoのマークアップパッケージを使用しています。各<p>
タグにclass属性を追加するには、HTMLライターをカスタマイズする方法はありますか?
私は、各段落は、クラスディレクティブを使用することができ、しかし、私はこのプロセスを自動化したいと思います。
たとえば、私はこの再構築のテキストが欲しいます:
hello
=====
A paragraph of text.
このHTMLに変換される。
<h1>hello</h1>
<p class="specialClass">A paragraph of text.</p>
私は hyphenatorライブラリに使用していますので、私はクラスを挿入したい理由があります「ハイフネーション」クラスで、すべてのタグにハイフンを追加することで機能します。私は、コンテナタグにハイフネーションクラスを追加することもできますが、すべての子どもたちがハイフネーションクラスを継承します。私は、動的にクラスを追加するためにJavaScriptを使用することができますが、私はreStructuredTextのでそれを行うための簡単な方法があるかもしれないと思っています。
助けてくれてありがとう、
ジョー
解決
あなたはすべての段落にクラスを追加したい、なぜあなたは言いませんが、別のアプローチを取ることが容易かもしれません。あなたは段落のスタイルをしようとしている場合たとえば、あなたは、出力のすべての段落を選択するために、さまざまなCSSのテクニックを使用することができます:
CSSます:
div.resttext p {
/* all the styling you want... */
}
HTMLます:
<div class='resttext'>
<p>Blah</p>
<p>Bloo</p>
</div>
更新:あなたはhyphenator.jsを使用しようとしているので、私は違った要素を選択するために、そのselectorfunction
の設定を使用することをお勧めします:
Hyphenator.config({
selectorfunction: function () {
/* Use jQuery to find all the REST p tags. */
return $('div.resttext p');
}
});
Hyphenator.run();
他のヒント
これを使用して、内蔵のhtml4css1
ライターをサブクラス>参照として..
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')
次に、このようにそれを使用します:
from docutils.core import publish_string
print publish_string("*This* is the input text", writer=MyHTMLWriter())
所属していません StackOverflow