def setValue(self, value): newValues = [] for v in value: val = Value.createFromType(self.mType) val.setValue(v) newValues.append(val) self.mValues = newValues
def _init_attr_value_text(self, txt, value_type): # Value self.mValue = Value.createFromType(value_type) if isinstance(self.mValue, PlainTextValue) or isinstance(self.mValue, UnknownValue): self.mValue.setValue(txt) # Parameters self.setupValueParameter()
def parseText(cls, data): """ Parse the text format data and return a L{Property} @param data: text data @type data: C{str} """ try: prop = cls() # Look for parameter or value delimiter prop_name, txt = stringutils.strduptokenstr(data, ";:") if not prop_name: raise InvalidProperty("Invalid property: empty name", data) # Get the name if prop.sUsesGroup: # Check for group prefix splits = prop_name.split(".", 1) if len(splits) == 2: # We have both group and name prop.mGroup = splits[0] prop.mName = splits[1] else: # We have the name prop.mName = prop_name else: prop.mName = prop_name # Get the parameters txt = prop.parseTextParameters(txt, data) # Tidy first prop.mValue = None # Get value type from property name value_type = prop.determineValueType() # Check for multivalued if prop.mName.upper() in prop.sMultiValues: prop.mValue = MultiValue(value_type) else: # Create the type prop.mValue = Value.createFromType(value_type) # Now parse the data prop.mValue.parse(txt, prop.sVariant) prop._postCreateValue(value_type) return prop except Exception as e: raise InvalidProperty("Invalid property: '{}'".format(e), data)
def parseText(cls, data): """ Parse the text format data and return a L{Property} @param data: text data @type data: C{str} """ try: prop = cls() # Look for parameter or value delimiter prop_name, txt = stringutils.strduptokenstr(data, ";:") if not prop_name: raise InvalidProperty("Invalid property", data) # Get the name if prop.sUsesGroup: # Check for group prefix splits = prop_name.split(".", 1) if len(splits) == 2: # We have both group and name prop.mGroup = splits[0] prop.mName = splits[1] else: # We have the name prop.mName = prop_name else: prop.mName = prop_name # Get the parameters txt = prop.parseTextParameters(txt, data) # Tidy first prop.mValue = None # Get value type from property name value_type = prop.determineValueType() # Check for multivalued if prop.mName.upper() in prop.sMultiValues: prop.mValue = MultiValue(value_type) else: # Create the type prop.mValue = Value.createFromType(value_type) # Now parse the data prop.mValue.parse(txt, prop.sVariant) prop._postCreateValue(value_type) return prop except Exception: raise InvalidProperty("Invalid property", data)
def parse(self, data, variant): # Tokenize on comma if "," in data: tokens = data.split(",") else: tokens = (data, ) for token in tokens: # Create single value, and parse data value = Value.createFromType(self.mType) value.parse(token, variant) self.mValues.append(value)
def parse(self, data, variant): # Tokenize on comma if "," in data: tokens = data.split(",") else: tokens = (data,) for token in tokens: # Create single value, and parse data value = Value.createFromType(self.mType) value.parse(token, variant) self.mValues.append(value)
def parseJSON(cls, jobject): """ Parse a JSON property of the form: [name, attrs, type, value1, value2, ...] @param jobject: a JSON array @type jobject: C{list} """ try: prop = cls() # Get the name prop.mName = jobject[0].encode("utf-8").upper() # Get the parameters if jobject[1]: for name, value in jobject[1].items(): # Now add parameter value name = name.upper() attrvalue = Parameter(name=name.encode("utf-8"), value=value.encode("utf-8")) prop.mParameters.setdefault(name, []).append(attrvalue) # Get default value type from property name and insert a VALUE parameter if current value type is not default value_type = cls.sValueTypeMap.get(jobject[2].upper(), Value.VALUETYPE_UNKNOWN) default_type = cls.sDefaultValueTypeMap.get(prop.mName.upper(), Value.VALUETYPE_UNKNOWN) if default_type != value_type: attrvalue = Parameter(name=cls.sValue, value=jobject[2].encode("utf-8").upper()) prop.mParameters.setdefault(cls.sValue, []).append(attrvalue) # Get value type from property name value_type = prop.determineValueType() # Check for multivalued values = jobject[3:] if prop.mName.upper() in cls.sMultiValues: prop.mValue = MultiValue(value_type) prop.mValue.parseJSONValue(values) else: # Create the type prop.mValue = Value.createFromType(value_type) prop.mValue.parseJSONValue(values[0]) # Special post-create for some types prop._postCreateValue(value_type) return prop except Exception as e: raise InvalidProperty("Invalid property: '{}'".format(e), jobject)
def parseJSON(cls, jobject): """ Parse a JSON property of the form: [name, attrs, type, value1, value2, ...] @param jobject: a JSON array @type jobject: C{list} """ try: prop = cls() # Get the name prop.mName = jobject[0].encode("utf-8").upper() # Get the parameters if jobject[1]: for name, value in jobject[1].items(): # Now add parameter value name = name.upper() attrvalue = Parameter(name=name.encode("utf-8"), value=value.encode("utf-8")) prop.mParameters.setdefault(name, []).append(attrvalue) # Get default value type from property name and insert a VALUE parameter if current value type is not default value_type = cls.sValueTypeMap.get(jobject[2].upper(), Value.VALUETYPE_UNKNOWN) default_type = cls.sDefaultValueTypeMap.get(prop.mName.upper(), Value.VALUETYPE_UNKNOWN) if default_type != value_type: attrvalue = Parameter(name=cls.sValue, value=jobject[2].encode("utf-8").upper()) prop.mParameters.setdefault(cls.sValue, []).append(attrvalue) # Get value type from property name value_type = prop.determineValueType() # Check for multivalued values = jobject[3:] if prop.mName.upper() in cls.sMultiValues: prop.mValue = MultiValue(value_type) prop.mValue.parseJSONValue(values) else: # Create the type prop.mValue = Value.createFromType(value_type) prop.mValue.parseJSONValue(values[0]) # Special post-create for some types prop._postCreateValue(value_type) return prop except Exception: raise InvalidProperty("Invalid property", jobject)
def createValue(self, data): # Tidy first self.mValue = None # Get value type from property name value_type = self.determineValueType() # Check for multivalued if self.mName.upper() in self.sMultiValues: self.mValue = MultiValue(value_type) else: # Create the type self.mValue = Value.createFromType(value_type) # Now parse the data try: self.mValue.parse(data, self.sVariant) except ValueError as e: raise InvalidProperty("Invalid property value: '{}'".format(e), data) self._postCreateValue(value_type)
def createValue(self, data): # Tidy first self.mValue = None # Get value type from property name value_type = self.determineValueType() # Check for multivalued if self.mName.upper() in self.sMultiValues: self.mValue = MultiValue(value_type) else: # Create the type self.mValue = Value.createFromType(value_type) # Now parse the data try: self.mValue.parse(data, self.sVariant) except ValueError: raise InvalidProperty("Invalid property value", data) self._postCreateValue(value_type)
def setValue(self, value): # Tidy first self.mValue = None # Get value type from property name value_type = self.sDefaultValueTypeMap.get(self.mName.upper(), Value.VALUETYPE_TEXT) # Check whether custom value is set if self.sValue in self.mParameters: value_type = self.sValueTypeMap.get(self.getParameterValue(self.sValue), value_type) # Check for multivalued if self.mName.upper() in self.sMultiValues: self.mValue = MultiValue(value_type) else: # Create the type self.mValue = Value.createFromType(value_type) self.mValue.setValue(value) # Special post-create for some types self._postCreateValue(value_type)
def parseJSONValue(self, jobject): for jvalue in jobject: value = Value.createFromType(self.mType) value.parseJSONValue(jvalue) self.mValues.append(value)