from Translator import *
import Declaration
import ValueList

class SSSProperty(Declaration.SSSDeclaration):

    _name = ''
    _value = ''
    
    _sourceText = ''
    
    def __init__(self, text = None):

        addLogMessage(get_class(self) + ' creating SSSProperty.')
    
        super(SSSProperty, self).__init__()

        if text: self._parse(text)


    def _parse(self, text):

        addLogMessage('Property trying to parse: text = ' + text)

        text = trim(text)

        self._sourceText = text

        ruleText = ''
        
        #foreach(self._sourceText as i=>$char):
        for i in xrange(len(self._sourceText)):

            if (self._sourceText[i] == ';'):

                self.appendDeclaration(ruleText)

                return

            ruleText += self._sourceText[i]


        if (ruleText != ''): self.appendDeclaration(ruleText)


    def appendDeclaration(self, declaration):

        matches = preg_match(r'(.*)\:(.*);?', trim(declaration))

        if (matches):

            self._setName(trim(matches[0][0]))
            self._setValue(trim(matches[0][1]))


    def _setValue(self, value):

        addLogMessage('SSSProperty _setValue: value = ' + value)

        self._value = ValueList.SSSValueList(value, self)


    def _setName(self, name):

        self._name = name


    def isVar(self):
    
        return preg_match(r'^\$', self._name, get_class(self))

    
    def get_name(self):
        return self._name
    name = property(get_name, _setName)

    def get_value(self):
        if (self._value):

            return self._value.cssText

        return ''
    value = property(get_value, _setValue)

    def get_cssText(self):
        return self.__str__()
    cssText = property(get_cssText, _parse)
    

    def getVar(self, name):
        #pdb.set_trace()
        return self.parentObject.getVar(name)


    def __str__(self):

        if self._value:
            string = self._name + ": " + self._value.cssText + ";"

        if self._name:
            matches = preg_match(r'\$', self._name)

            if (matches):
                string = self.createCommentText(string)

            return string + "\n"

        return ''


