From 78c81b183ae018a1cb1c403323d2395310d0843b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 20 Mar 2013 23:41:27 +0530 Subject: [PATCH] Conversion: Add support for CSS tylesheets that wrap their rules inside a @media rule. Fixes #1157345 (CSS stripped in Mobi-to-Mobi conversion) --- src/calibre/ebooks/oeb/stylizer.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 114bc3587f..3fac8c43cc 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -305,8 +305,17 @@ class Stylizer(object): href = stylesheet.href self.stylesheets.add(href) for rule in stylesheet.cssRules: - rules.extend(self.flatten_rule(rule, href, index)) - index = index + 1 + if rule.type == rule.MEDIA_RULE: + media = {rule.media.item(i) for i in + xrange(rule.media.length)} + if not media.intersection({'all', 'screen', 'amzn-kf8'}): + continue + for subrule in rule.cssRules: + rules.extend(self.flatten_rule(subrule, href, index)) + index += 1 + else: + rules.extend(self.flatten_rule(rule, href, index)) + index = index + 1 rules.sort() self.rules = rules self._styles = {}