Change arg order for easier partial functions

This commit is contained in:
Kovid Goyal 2016-04-12 15:46:23 +05:30
parent a853e4dac0
commit 0654256f67
2 changed files with 11 additions and 11 deletions

View File

@ -208,7 +208,7 @@ def resolve_styles(container, name, select=None, sheet_callback=None):
style_map = {elem:resolve_declarations(x) for elem, x in style_map.iteritems()}
pseudo_style_map = {elem:resolve_pseudo_declarations(x) for elem, x in pseudo_style_map.iteritems()}
return style_map, pseudo_style_map, select
return partial(resolve_property, style_map), partial(resolve_pseudo_property, pseudo_style_map), select
_defvals = None
@ -219,7 +219,7 @@ def defvals():
_defvals = {k:Values(Property(k, u(val)).propertyValue) for k, val in DEFAULTS.iteritems()}
return _defvals
def resolve_property(elem, name, style_map):
def resolve_property(style_map, elem, name):
''' Given a `style_map` previously generated by :func:`resolve_styles()` and
a property `name`, returns the effective value of that property for the
specified element. Handles inheritance and CSS cascading rules. Returns
@ -237,7 +237,7 @@ def resolve_property(elem, name, style_map):
q = q.getparent() if inheritable else None
return defvals().get(name)
def resolve_pseudo_property(elem, prop, name, pseudo_style_map):
def resolve_pseudo_property(pseudo_style_map, elem, prop, name):
style_map = pseudo_style_map.get(elem)
if style_map is not None:
prop_map = style_map.get(prop)

View File

@ -10,7 +10,7 @@ from functools import partial
from calibre.constants import iswindows
from calibre.ebooks.oeb.base import OEB_STYLES, OEB_DOCS
from calibre.ebooks.oeb.polish.cascade import iterrules, resolve_property, resolve_styles, DEFAULTS, resolve_pseudo_property
from calibre.ebooks.oeb.polish.cascade import iterrules, resolve_styles, DEFAULTS
from calibre.ebooks.oeb.polish.container import ContainerBase, href_to_name
from calibre.ebooks.oeb.polish.tests.base import BaseTest
from calibre.utils.logging import Log, Stream
@ -65,16 +65,16 @@ class CascadeTest(BaseTest):
def test_resolve_styles(self):
def test_property(select, style_map, selector, name, val=None):
def test_property(select, resolve_property, selector, name, val=None):
elem = next(select(selector))
ans = resolve_property(elem, name, style_map)
ans = resolve_property(elem, name)
if val is None:
val = type('')(DEFAULTS[name])
self.assertEqual(val, ans.cssText)
def test_pseudo_property(select, pseudo_style_map, selector, prop, name, val=None):
def test_pseudo_property(select, resolve_pseudo_property, selector, prop, name, val=None):
elem = next(select(selector))
ans = resolve_pseudo_property(elem, prop, name, pseudo_style_map)
ans = resolve_pseudo_property(elem, prop, name)
if val is None:
val = type('')(DEFAULTS[name])
self.assertEqual(val, ans.cssText)
@ -82,11 +82,11 @@ class CascadeTest(BaseTest):
def get_maps(html, styles=None, pseudo=False):
html = '<html><head><link href="styles.css"></head><body>{}</body></html>'.format(html)
c = VirtualContainer({'index.html':html, 'styles.css':styles or 'body { color: red; font-family: "Kovid Goyal", sans-serif }'})
style_map, pseudo_style_map, select = resolve_styles(c, 'index.html')
resolve_property, resolve_pseudo_property, select = resolve_styles(c, 'index.html')
if pseudo:
tp = partial(test_pseudo_property, select, pseudo_style_map)
tp = partial(test_pseudo_property, select, resolve_pseudo_property)
else:
tp = partial(test_property, select, style_map)
tp = partial(test_property, select, resolve_property)
return tp
t = get_maps('<p style="margin:11pt"><b>x</b>xx</p>')