удаление документации docinfo в выходных документах с помощью средства записи HTML5 - PullRequest
0 голосов
/ 19 мая 2018

В библиотеке docutils python при использовании модуля записи html5 я не могу найти способ not включить docinfo (поля в начале источника), включенные в вывод.

Вот минимальный пример:

import docutils.io, docutils.core

SOURCE = '''\
:key: value

Title
========

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
'''

docutils_params = {
    'input_encoding': 'utf-8',
}

pub = docutils.core.Publisher(
    source_class=docutils.io.StringInput,
    destination_class=docutils.io.StringOutput)
pub.set_components('standalone', 'restructuredtext', 'html5')
pub.process_programmatic_settings(None, docutils_params, None)
pub.set_source(SOURCE)
pub.publish()

# same thing with parts['body']
body = pub.writer.parts['fragment']

print(body)

Вот первые строки вывода:

<dl class="docinfo simple">
<dt class="key">key</dt>
<dd class="key"><p>value</p>
</dd>
</dl>
<div class="section" id="title">
<h1>Title</h1>
<p>Lorem ipsum dolor sit amet,

Чего я не хочу, так это всего <dl class="docinfo simple">element.

Использование средства записи HTML5 задается в строке pub.set_components(... Если вместо этого я использую html У меня нет этой проблемы, но для своего использования мне нужен средство записи HTML5, а не стандартHTML one.

Что странно, так это то, что документация говорит, что использование pub.writer.parts['fragment'] (или эквивалентно pub.writer.parts['body']) должно удалить информацию docinfo из вывода:

parts['fragment']содержит тело документа (не HTML).Другими словами, он содержит весь документ, за исключением заголовка документа, субтитров, docinfo , верхнего и нижнего колонтитула.

source: http://docutils.sourceforge.net/docs/api/publisher.html

Я что-то не так делаю или это ошибка в HTML5 писателе docutils?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Разработчики Docutils определили это как ошибку и исправили ее.

См. В списке рассылки docutils-users здесь и здесь

@ andref ответ замечательно, но спасибо за указание на этот пакет.

0 голосов
/ 02 июня 2018

Я предлагаю вам использовать rst2html5 вместо Docutils:

from rst2html5_ import HTML5Writer
from docutils.core import publish_parts

SOURCE = '''\
:key: value

Title
========

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.
'''

parts = publish_parts(writer=HTML5Writer(), source=SOURCE)
print(parts['body'])

Это результат:

<section id="title">
    <h1>Title</h1>
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
</section>
...