Beispiel #1
0
 def __int__(self):
     """Integer representation of YAML integer node (or exception)."""
     if isinstance(self.item, YAMLNode):
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "int")
     elif INT_REGEXP.match(str(self.item)) is None:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "int")
     else:
         return int(self.item)
Beispiel #2
0
 def __float__(self):
     """Float representation of YAML float node (or exception)."""
     if isinstance(self.item, YAMLNode):
         raise InvalidYAMLTypeConversion(self.item.__repr__(),
                                         "list or dict")
     elif FLOAT_REGEXP.match(str(self.item)) is None:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "float")
     else:
         return float(self.item)
Beispiel #3
0
 def __iter__(self):
     if isinstance(self.item, dict) or isinstance(self.item, list):
         self._currentindex = 0
         return self
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(),
                                         "list or dict")
Beispiel #4
0
 def __len__(self):
     """If YAML node is a dict or list, return its length."""
     if isinstance(self.item, dict) or isinstance(self.item, list):
         return len(self.item)
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(),
                                         "list or dict")
Beispiel #5
0
 def __bool__(self):
     """If YAML node is a boolean, return bool represenation of it."""
     if isinstance(self.item, str):
         if str(self.item).lower() in [
                 "yes",
                 "true",
         ]:
             return True
         elif str(self.item).lower() in [
                 "no",
                 "false",
         ]:
             return False
         else:
             raise InvalidYAMLTypeConversion(self.item.__repr__(), "bool")
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "bool")
Beispiel #6
0
 def __unicode__(self):
     """If YAML node is a string, return unicode representation of it."""
     if isinstance(self.item, YAMLNode):
         return str(self.item)
     elif isinstance(self.item, str):
         return self.item
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "unicode")
Beispiel #7
0
 def __str__(self):
     """If YAML node is a string, return string representation of it."""
     if isinstance(self.item, YAMLNode):
         return str(self.item)
     elif isinstance(self.item, str):
         return self.item
     else:
         raise InvalidYAMLTypeConversion(
             self.item.__repr__(), "string {0}".format(type(self.item)))
Beispiel #8
0
 def get(self, key, default=None):
     """If YAML node is a dict, return item via its index."""
     if isinstance(self.item, dict):
         if key not in self.item:
             return default
         else:
             return self.item[key]
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "dict")
Beispiel #9
0
 def next(self):
     if self._currentindex == len(self):
         raise StopIteration
     else:
         if isinstance(self.item, list):
             self._currentindex = self._currentindex + 1
             return YAMLNode(self[self._currentindex - 1])
         elif isinstance(self.item, dict):
             self._currentindex = self._currentindex + 1
             return self.keys()[self._currentindex - 1]
         else:
             raise InvalidYAMLTypeConversion(self.item.__repr__(),
                                             "list or dict")
Beispiel #10
0
 def __getitem__(self, key):
     """If YAML node is a dict or list, return item via its index."""
     if isinstance(self.item, dict):
         if key not in self.item:
             raise IndexError
         else:
             return self.item[key]
     elif isinstance(self.item, list):
         if isinstance(key, slice):
             return [self[n] for n in range(*key.indices(len(self)))]
         elif isinstance(key, int):
             if isinstance(key, int) and key < len(self.item):
                 return self.item[key]
             else:
                 raise IndexError
         else:
             raise TypeError(
                 "Key {0} should be an index for list {1}".format(
                     key, self.item.__repr__()))
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(),
                                         "list or dict")
Beispiel #11
0
 def items(self):
     if isinstance(self.item, dict):
         return self.item.items()
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "dict")
Beispiel #12
0
 def __dict__(self):
     """If YAML node is a dict, return a dict representation of it."""
     if isinstance(self.item, dict):
         return self.item
     else:
         raise InvalidYAMLTypeConversion(self.item.__repr__(), "dict")