Example #1
0
def iterdeclaration(decl):
    for p in all_properties(decl):
        n = normalizers.get(p.name)
        if n is None:
            yield p
        else:
            for k, v in iteritems(n(p.name, p.propertyValue)):
                yield Property(k, v, p.literalpriority)
Example #2
0
def iterdeclaration(decl):
    for p in all_properties(decl):
        n = normalizers.get(p.name)
        if n is None:
            yield p
        else:
            for k, v in n(p.name, p.propertyValue).iteritems():
                yield Property(k, v, p.literalpriority)
Example #3
0
 def __iter__(self):
     dec = self.css_declaration
     for p in all_properties(dec):
         n = normalizers.get(p.name)
         if n is None:
             yield p, None
         else:
             if p not in self.expanded_properties:
                 self.expanded_properties[p] = [Property(k, v, p.literalpriority) for k, v in n(p.name, p.propertyValue).iteritems()]
             for ep in self.expanded_properties[p]:
                 yield ep, p
Example #4
0
 def __iter__(self):
     dec = self.css_declaration
     for p in all_properties(dec):
         n = normalizers.get(p.name)
         if n is None:
             yield p, None
         else:
             if p not in self.expanded_properties:
                 self.expanded_properties[p] = [Property(k, v, p.literalpriority) for k, v in n(p.name, p.propertyValue).iteritems()]
             for ep in self.expanded_properties[p]:
                 yield ep, p
Example #5
0
def filter_declaration(style, properties):
    changed = False
    for prop in properties:
        if style.removeProperty(prop) != "":
            changed = True
    all_props = set(style.keys())
    for prop in style.getProperties():
        n = normalizers.get(prop.name, None)
        if n is not None:
            normalized = n(prop.name, prop.propertyValue)
            removed = properties.intersection(set(normalized))
            if removed:
                changed = True
                style.removeProperty(prop.name)
                for prop in set(normalized) - removed - all_props:
                    style.setProperty(prop, normalized[prop])
    return changed
Example #6
0
def filter_declaration(style, properties=()):
    changed = False
    for prop in properties:
        if style.removeProperty(prop) != '':
            changed = True
    all_props = set(style.keys())
    for prop in style.getProperties():
        n = normalizers.get(prop.name, None)
        if n is not None:
            normalized = n(prop.name, prop.propertyValue)
            removed = properties.intersection(set(normalized))
            if removed:
                changed = True
                style.removeProperty(prop.name)
                for prop in set(normalized) - removed - all_props:
                    style.setProperty(prop, normalized[prop])
    return changed
Example #7
0
 def flatten_style(self, cssstyle):
     style = {}
     for prop in cssstyle:
         name = prop.name
         normalizer = normalizers.get(name, None)
         if normalizer is not None:
             style.update(normalizer(name, prop.cssValue))
         elif name == 'text-align':
             style['text-align'] = self._apply_text_align(prop.value)
         else:
             style[name] = prop.value
     if 'font-size' in style:
         size = style['font-size']
         if size == 'normal':
             size = 'medium'
         if size == 'smallest':
             size = 'xx-small'
         if size in FONT_SIZE_NAMES:
             style['font-size'] = "%dpt" % self.profile.fnames[size]
     return style
Example #8
0
 def flatten_style(self, cssstyle):
     style = {}
     for prop in cssstyle:
         name = prop.name
         normalizer = normalizers.get(name, None)
         if normalizer is not None:
             style.update(normalizer(name, prop.cssValue))
         elif name == "text-align":
             style["text-align"] = self._apply_text_align(prop.value)
         else:
             style[name] = prop.value
     if "font-size" in style:
         size = style["font-size"]
         if size == "normal":
             size = "medium"
         if size == "smallest":
             size = "xx-small"
         if size in FONT_SIZE_NAMES:
             style["font-size"] = "%dpt" % self.profile.fnames[size]
     return style
Example #9
0
 def flatten_style(self, cssstyle):
     style = {}
     for prop in cssstyle:
         name = prop.name
         normalizer = normalizers.get(name, None)
         if normalizer is not None:
             style.update(normalizer(name, prop.propertyValue))
         elif name == 'text-align':
             style['text-align'] = self._apply_text_align(prop.value)
         else:
             style[name] = prop.value
     if 'font-size' in style:
         size = style['font-size']
         if size == 'normal':
             size = 'medium'
         if size == 'smallest':
             size = 'xx-small'
         if size in FONT_SIZE_NAMES:
             style['font-size'] = "%.1frem" % (self.profile.fnames[size] / float(self.profile.fbase))
     if '-epub-writing-mode' in style:
         for x in ('-webkit-writing-mode', 'writing-mode'):
             style[x] = style.get(x, style['-epub-writing-mode'])
     return style
Example #10
0
 def flatten_style(self, cssstyle):
     style = {}
     for prop in cssstyle:
         name = prop.name
         normalizer = normalizers.get(name, None)
         if normalizer is not None:
             style.update(normalizer(name, prop.cssValue))
         elif name == 'text-align':
             style['text-align'] = self._apply_text_align(prop.value)
         else:
             style[name] = prop.value
     if 'font-size' in style:
         size = style['font-size']
         if size == 'normal':
             size = 'medium'
         if size == 'smallest':
             size = 'xx-small'
         if size in FONT_SIZE_NAMES:
             style['font-size'] = "%.1frem" % (self.profile.fnames[size] / float(self.profile.fbase))
     if '-epub-writing-mode' in style:
         for x in ('-webkit-writing-mode', 'writing-mode'):
             style[x] = style.get(x, style['-epub-writing-mode'])
     return style