Menu

[r4]: / StyleRule.py  Maximize  Restore  History

Download this file

142 lines (78 with data), 4.1 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
from Translator import *
import SelectorList
import Object, pdb
class SSSStyleRule(Object.SSSObject):
def __init__(self, rule = ''):
super(SSSStyleRule, self).__init__()
self._selectors = SelectorList.SSSSelectorList('', self)
if rule: self._parse(rule)
def _parse(self, text):
text = trim(text)
matches = preg_match(r'^([^\{]*)\{([\w|\W]*)\}$', text)
if (matches):
self._selectors = SelectorList.SSSSelectorList(matches[0][0], self)
super(SSSStyleRule, self)._parse(matches[0][1])
def get_computedSelector(self):
return self._selectors.selectorArrayToString(self.get_computedSelectorAsArray())
selectorText = property(get_computedSelector)
def get_computedSelectorAsArray(self):
if get_class(self.parentObject) == 'SSSStyleRule':
computedSelector = []
parentSelectorList = SelectorList.SSSSelectorList( self.parentObject.selectorText, self)
for parentSelector in parentSelectorList.selectors:
for selector in self.selectorList.selectors:
computedSelector.append( parentSelector + ' ' + trim( selector ) )
return computedSelector
else:
return self._selectors.selectors
def prependToAllSelectors(self, args):
return self._selectors.prependToAllSelectors(args)
def set_cssText(self, value):
return self._parse(value)
def get_cssText(self):
return self.__str__()
cssText = property(get_cssText, set_cssText)
def get_type(self):
return SSSObject.STYLE_RULE
type = property(get_type)
def get_style(self):
return self.declaration.cssText
style = property(get_style)
def get_styleDeclaration(self):
return self.declaration
styleDeclaration = property(get_styleDeclaration)
def get_selectorText(self):
return self._selectors.selectorText
def get_selectorList(self):
return self._selectors
selectorList = property(get_selectorList)
def __str__(self):
#// output current rule...
string = preg_replace(r'\, ', ",\n", self.selectorText) + " {\n"
#string = self.selectorText + " {\n"
string += self.getCssTextFromArray(self.getNonStyleRulesAsArray())
string += "}\n\n"
string += self.getCssTextFromArray(self.getStyleRulesAsArray())
return string
def appendSelector(self, selector):
return self._selectors.appendSelector(selector)
def addInheritRule(self, cssText):
import InheritRule
inherit_rule = InheritRule.SSSInheritRule()
self.addDeclaration(inherit_rule)
inherit_rule.cssText = cssText
if (self.hostStyleSheet):
for i in xrange(inherit_rule.selectorList.length):
inherit_rule_selector = inherit_rule.selectorList.item(i)
superclass_rules = self.hostStyleSheet.getRulesWithSelector(inherit_rule_selector)
for superclass_rule in superclass_rules:
num_selectors = superclass_rule.selectorList.length
for j in xrange(num_selectors):
superclass_rule_selector = superclass_rule.selectorList.item(j)
self_rule_selectors = self.get_computedSelectorAsArray()
for k in xrange(len(self_rule_selectors)):
self_rule_selector = self_rule_selectors[k]
if (preg_match(' ' + inherit_rule_selector + ' ', ' ' + superclass_rule_selector + ' ')):
additional_selector = preg_replace(' ' + inherit_rule_selector + ' ', ' ' + self_rule_selector + ' ', ' ' + superclass_rule_selector + ' ')
superclass_rule.appendSelector(additional_selector)
return inherit_rule
MongoDB Logo MongoDB