12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- """
- Author Daniel Riegelhaupt
- November 2014
- A simple position object.
- Needed to be able to search in trees using line and column
- """
- class Position(object):
- """
- a position object with the comparison operators implemented so that we can use the position to search
- for backwards compatibility the operator [] has also been overridden
- ["line"] or ["row"] will get/set self.line and ["column"] or ["col"] will get or set self.column
- This is not needed and self.line or column can be accesed directly as well
- """
- def __init__(self, line, col):
- self.line = line
- self.column = col
- def toDictionary(self):
- return { 'line': self.line, 'column': self.column}
- def __repr__(self):
- return "{'line': " + str(self.line) +", 'column': " + str(self.column) +"}"
- def __str__(self):
- #return str({ 'line' : self.line , 'column' : self.column })
- return "{'line': " + str(self.line) +", 'column': " + str(self.column) +"}"
- def __eq__(self, other):
- # ==
- return ((self.line == other.line) and (self.column == other.column))
- def __lt__(self, other):
- # <
- return ((self.line < other.line) or ((self.line == other.line) and (self.column < other.column)))
- def __le__(self, other):
- # <=
- return ((self.line < other.line) or ((self.line == other.line) and (self.column <= other.column)))
- def __ne__(self, other):
- # !=
- return ((self.line != other.line) or (self.column != other.column))
- def __gt__(self, other):
- # >
- return ((self.line > other.line) or ((self.line == other.line) and (self.column > other.column)))
- def __ge__(self, other):
- # <=
- return ((self.line > other.line) or ((self.line == other.line) and (self.column >= other.column)))
- def __getitem__(self, item):
- # varname = position['line']
- if item == 'line' or item == 'row':
- return self.line
- elif item == 'column' or item == 'col':
- return self.column
- else:
- raise AttributeError("'Position' object has no attribute '"+str(item)+"'")
- def __setitem__(self, item, value):
- # position['line'] = 5
- if item == 'line' or item == 'row':
- self.line = value
- elif item == 'column' or item == 'col':
- self.column =value
- else:
- raise AttributeError("'Position' object has no attribute '"+str(item)+"'")
- def deepcopy(self):
- pass
|