Menu

[r1]: / ValueList.py  Maximize  Restore  History

Download this file

126 lines (74 with data), 3.0 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
from Translator import *
import SimpleList
import PrimitiveValue
class SSSValueList(object):
CSS_INHERIT = 0
CSS_PRIMITIVE_VALUE = 1
CSS_VALUE_LIST = 2
CSS_CUSTOM = 3
def __init__(self, sourceText = '', parentObject = None):
self._parentObject = parentObject
self._values = None
self._sourceText = sourceText
self._isImportant = False
if (self._sourceText):
self._parse(self._sourceText)
def appendValue(self, value):
if (value != ''):
val = PrimitiveValue.SSSPrimitiveValue(value, self._parentObject)
self._values.appendItem(val)
def item(self, index):
return self._values.item(index)
def _parse(self, text):
self._sourceText = trim(text)
self._isImportant = self.isImportant(text)
self._values = SimpleList.SSSSimpleList()
ruleText = ''
in_single_quote = False
in_double_quote = False
in_paren = []
for i in xrange(len(self._sourceText)):
char = self._sourceText[i]
ruleText += char
if (char == '"'):
in_double_quote = not in_double_quote
elif (char == "'"):
in_single_quote = not in_single_quote
elif (char == "("):
in_paren.append("(")
elif (char == ")"):
array_pop(in_paren)
if char == ' ' and not in_single_quote and not in_double_quote and len(in_paren) == 0:
self.appendValue(ruleText)
ruleText = ''
if ruleText != '':
self.appendValue(ruleText)
def isImportant(self, value):
return preg_match(' \!important', value)
def stripImportantDeclaration(self, value):
exp = ' \!important'
return preg_replace(exp, '', value)
def __call(self, method, args):
if (method == 'item'):
return self._values.item(args[0])
def __set(self, var, value):
if (var == 'cssText'): return self._parse(text)
def get_length(self):
return self._values.length
length = property(get_length)
def get_cssValueType(self):
return SSSValue.CSS_VALUE_LIST
cssValueType = property(get_cssValueType)
def get_parentObject(self):
return self._parentObject
parentObject = property(get_parentObject)
def get_cssText(self):
return self.__str__()
cssText = property(get_cssText)
def __str__(self):
string = ''
#addLogMessage('SSSValueList __str__: self._values.length = ' + str(self._values.length))
for i in xrange(self._values.length): #(i = 0; i < self._values.length; i++):
#addLogMessage('ValueList __str__: i self._values.item(' + str(i) + ') = ' + str(self._values.item(i)))
string += self._values.item(i).cssText + ' '
return string.rstrip()
MongoDB Logo MongoDB