كيفية الحصول على إعادة هيكلة لإضافة فئة إلى كل علامة HTML
؟
-
11-09-2019 - |
سؤال
أنا أستخدم حزمة ترميز Django لتحويل إعادة هياكل إلى HTML. هل هناك طريقة لتخصيص كاتب HTML لإضافة سمة فئة لكل منهما <p>
بطاقة شعار؟
أنا يمكن أن تستخدم توجيه الطبقة لكل فقرة، ولكن أود أتمتة هذه العملية.
على سبيل المثال، أريد هذا النص المعاد الهيكل:
hello
=====
A paragraph of text.
لتحويلها إلى هذا HTML.
<h1>hello</h1>
<p class="specialClass">A paragraph of text.</p>
السبب في أنني أريد إدراج الفصول هو لأنني أستخدم مكتبة الصفقة الذي يعمل بإضافة الواصلات إلى جميع العلامات مع فئة "الواصلة". يمكنني إضافة فئة الواصلة إلى علامة الحاويات، ولكن بعد ذلك، يرث جميع الأطفال فئة الواصلة. يمكنني استخدام JavaScript لإضافة الفصل ديناميكيا، لكنني اعتقدت أنه قد يكون هناك طريقة بسيطة للقيام بذلك مع إعادة التحديث.
شكرا للمساعدة،
جو
المحلول
لا تقول لماذا تريد إضافة فئة إلى كل فقرة، ولكن قد يكون من الأسهل اتخاذ نهج مختلف. على سبيل المثال، إذا كنت تحاول أن تكون أسلوب الفقرات، فيمكنك استخدام تقنية CSS مختلفة لتحديد جميع الفقرات في الإخراج:
CSS:
div.resttext p {
/* all the styling you want... */
}
لغة البرمجة:
<div class='resttext'>
<p>Blah</p>
<p>Bloo</p>
</div>
تحديث: نظرا لأنك تحاول استخدام الواصلة.js، أود أن أقترح باستخدامها selectorfunction
الإعداد لتحديد العناصر بشكل مختلف:
Hyphenator.config({
selectorfunction: function () {
/* Use jQuery to find all the REST p tags. */
return $('div.resttext p');
}
});
Hyphenator.run();
نصائح أخرى
فئة Subclass المدمج 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())