#!/usr/bin/env python3 """Общая сборка XHTML для pdf2html.py и epub2html.py. Формат намеренно жёсткий: один блок — одна строка (кроме
, где переносы
значимы). На этом держится мост translate.py — он правит блоки по номеру
строки, а всё, чего не узнал, доносит до результата нетронутым.
"""
import html

CSS = """
body { margin: 0 1em; }
h1 { text-align: center; margin: 2em 0 0.2em; page-break-before: always; }
h1.title { page-break-before: avoid; }
h2 { text-align: center; font-style: italic; font-weight: normal;
     font-size: 1.1em; margin: 0.2em 0 1.5em; }
p { text-indent: 1.2em; margin: 0; text-align: justify; }
p.note { text-indent: 0; margin: 1em 2em; font-size: 0.9em;
         font-family: sans-serif; }
p.li { text-indent: 0; margin: 0.3em 0 0.3em 1.5em; text-align: left; }
p.row { text-indent: 0; margin: 0.3em 0; text-align: left;
        font-size: 0.9em; }
p.figure { text-indent: 0; text-align: center; margin: 1em 0; }
img { max-width: 100%; }
pre { font-family: monospace; font-size: 0.75em; margin: 1em 0;
      white-space: pre-wrap; word-wrap: break-word; text-align: left;
      text-indent: 0; }
code { font-family: monospace; font-size: 0.9em; }
"""


def document(title, parts):
    """parts: [(tag, cls, inner_html)]; tag 'figure' — псевдотег для картинки."""
    buf = ['',
           '',
           "%s" % html.escape(title),
           "" % CSS]
    for tag, cls, txt in parts:
        if tag == "figure":
            buf.append('

%s

' % txt) else: c = ' class="%s"' % cls if cls else "" buf.append("<%s%s>%s" % (tag, c, txt, tag)) buf.append("") return "\n".join(buf)