From b34854b6e4682724b4f51924f851ac1693a9b87d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 20 Apr 2009 13:55:21 -0700 Subject: [PATCH] Implement --extra-css --- src/calibre/ebooks/conversion/cli.py | 1 + src/calibre/ebooks/conversion/plumber.py | 11 +++++ src/calibre/ebooks/oeb/stylizer.py | 43 +++++++++++--------- src/calibre/ebooks/oeb/transforms/flatcss.py | 3 +- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/src/calibre/ebooks/conversion/cli.py b/src/calibre/ebooks/conversion/cli.py index fd99e1e346..a30549cbc3 100644 --- a/src/calibre/ebooks/conversion/cli.py +++ b/src/calibre/ebooks/conversion/cli.py @@ -116,6 +116,7 @@ def add_pipeline_options(parser, plumber): 'font_size_mapping', 'line_height', 'linearize_tables', + 'extra_css', ] ), diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index 2b78aca822..22c11303ad 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -219,6 +219,14 @@ OptionRecommendation(name='chapter_mark', 'to mark chapters.') ), +OptionRecommendation(name='extra_css', + recommended_value=None, level=OptionRecommendation.LOW, + help=_('Either the path to a CSS stylesheet or raw CSS. ' + 'This CSS will be appended to the style rules from ' + 'the source file, so it can be used to override those ' + 'rules.') + ), + OptionRecommendation(name='read_metadata_from_opf', @@ -487,6 +495,9 @@ OptionRecommendation(name='language', else: fkey = map(float, fkey.split(',')) + if self.opts.extra_css and os.path.exists(self.opts.extra_css): + self.opts.extra_css = open(self.opts.extra_css, 'rb').read() + flattener = CSSFlattener(fbase=fbase, fkey=fkey, lineh=self.opts.line_height, untable=self.opts.linearize_tables) diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 8bc82883e3..34abea32f5 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -88,7 +88,7 @@ FONT_SIZE_NAMES = set(['xx-small', 'x-small', 'small', 'medium', 'large', class CSSSelector(etree.XPath): MIN_SPACE_RE = re.compile(r' *([>~+]) *') LOCAL_NAME_RE = re.compile(r"(?