from argparse import ArgumentParser
from contextlib import contextmanager
import os.path
+from sys import stderr
from typing import Iterator
from texify import PandocTexifier
+def _print_status(msg: str) -> None:
+ print(msg, file=stderr, end='' if msg.endswith('\r') else '\n')
+
+
def _command_line_parser() -> ArgumentParser:
parser = ArgumentParser(prog='paperdoorknob', description='Print glowfic')
parser.add_argument(
'(eg: "%(default)s" produces %(default)s.tex, %(default)s.pdf, etc.)',
default='book')
parser.add_argument('--pandoc', help='Location of the pandoc executable')
+ parser.add_argument(
+ '--quiet',
+ action='store_true',
+ help='Suppress progress messages')
parser.add_argument(
'--texfilters',
help='Which TeX filters to use (default: %(default)s)',
lambda x: ApplyTexFilters(args.texfilters, x),
layout,
args.geometry,
- texout)
+ texout,
+ (lambda _: None) if args.quiet else _print_status)
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, version 3.
-from sys import stderr
-
from typing import Any, Iterable
from bs4 import BeautifulSoup
num_chunks = ilen(chunkDOMs(html))
for i, r in enumerate(chunkDOMs(html)):
percent = 100.0 * i / num_chunks
- print(
- f'Processing chunk {i} of {num_chunks} ({percent:.1f}%)',
- end='\r',
- file=stderr)
+ spec.log(f'Processing chunk {i} of {num_chunks} ({percent:.1f}%)\r')
spec.domfilter(r)
chunk = makeChunk(r, spec.images)
spec.texout.write(spec.texfilter(spec.layout.renderChunk(chunk)))
+ spec.log('')
spec.texout.write(b'\\end{document}\n')
lambda x: x,
ContentOnlyLayout(PandocTexifier('pandoc')),
'margin=20mm',
- buf)
+ buf,
+ lambda _: None)
paperdoorknob.process(spec)
assert re.match(br'''\\documentclass{article}
(\\usepackage{[a-z]+}\n)+\\usepackage\[margin=20mm\]{geometry}
lambda x: x,
ContentOnlyLayout(texifier),
None,
- buf)
+ buf,
+ lambda _: None)
paperdoorknob.process(spec)
def testPDF(self) -> None:
lambda x: x,
BelowIconLayout(PandocTexifier('pandoc'), 20),
None,
- out)
+ out,
+ lambda _: None)
paperdoorknob.process(spec)
subprocess.run(['pdflatex', 'test.tex'],
stdin=subprocess.DEVNULL, check=True)
layout: Layout
geometry: str | None
texout: IO[bytes]
+ log: Callable[[str], None]