home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import re
- import posixpath
-
- def VariableFactory(cls, **old_kwargs):
-
- def variable_factory(**new_kwargs):
- kwargs = old_kwargs.copy()
- kwargs.update(new_kwargs)
- return cls(**kwargs)
-
- return variable_factory
-
-
- try:
- from functools import partial as VariableFactory
- except ImportError:
- pass
-
-
- class Variable(object):
- _value = None
- _required = True
- attribute = None
-
- def __init__(self, attribute = None, value = None, value_factory = None, required = True):
- self.attribute = attribute
- self._required = required
- if value is not None:
- self.set(value)
-
- if value_factory is not None:
- self.set(value_factory())
-
-
-
- def get(self, default = None):
- value = self._value
- if value is None:
- return default
- return self.parse_get(value)
-
-
- def set(self, value):
- if value is None:
- if self._required is True:
- raise Exception, "None isn't an acceptable value"
- self._required is True
- new_value = None
- else:
- new_value = self.parse_set(value)
- self._value = new_value
-
-
- def parse_get(self, value):
- return value
-
-
- def parse_set(self, value):
- return str(value)
-
-
-
- class BoolVariable(Variable):
-
- def parse_get(self, value):
- if re.match('(yes|true)', value, re.IGNORECASE):
- return True
- if re.match('(no|false)', value, re.IGNORECASE):
- return False
- return bool(int(value))
-
-
-
- class StringVariable(Variable):
-
- def parse_get(self, value):
- return str(value)
-
-
-
- class PathVariable(StringVariable):
-
- def parse_get(self, value):
- path = super(PathVariable, self).parse_get(value)
- return posixpath.expanduser(path)
-
-
-
- class IntVariable(Variable):
-
- def parse_get(self, value):
- return int(value)
-
-
-
- class FloatVariable(Variable):
-
- def parse_get(self, value):
- return float(value)
-
-
-
- class ListVariable(Variable):
-
- def __init__(self, item_factory, *args, **kwargs):
- super(ListVariable, self).__init__(*args, **kwargs)
- self._item_factory = item_factory
-
-
- def parse_get(self, value):
- item_factory = self._item_factory
- if not len(value):
- values = []
- else:
- values = re.split('\\s*,?\\s+', value)
- return [ item_factory(value = v).get() for v in values ]
-
-
- def parse_set(self, value):
- if isinstance(value, list):
- return ', '.join(value)
- return value
-
-
-
- def get_variable(obj, attribute):
- return get_variables(obj)[attribute]
-
-
- def get_variables(obj):
- get_attributes = get_attributes
- import checkbox.attribute
- if '__checkbox_variables__' in obj.__dict__:
- return obj.__dict__['__checkbox_variables__']
- variables = { }
- cls = type(obj)
- for attribute in get_attributes(cls).itervalues():
- variable = attribute.variable_factory(attribute = attribute)
- variables[attribute] = variable
-
- return obj.__dict__.setdefault('__checkbox_variables__', variables)
-
-