/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/range.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/range.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/thuban/Thuban/Model/range.py revision 901 by jonathan, Wed May 14 11:15:55 2003 UTC branches/WIP-pyshapelib-bramz/Thuban/Model/range.py revision 2734 by bramz, Thu Mar 1 12:42:59 2007 UTC
# Line 1  Line 1 
 #!/usr/bin/env python  
 #  
1  # Copyright (C) 2002, 2003 by Intevation GmbH  # Copyright (C) 2002, 2003 by Intevation GmbH
2  # Authors:  # Authors:
3  # Thomas Koester <[email protected]>  # Thomas Koester <[email protected]>
# Line 16  __version__ = "$Revision$" Line 14  __version__ = "$Revision$"
14  # $Id$  # $Id$
15    
16  import re  import re
17    import types
18    
19  _inf = float('1e1000')   # FIXME: hack for infinity  _inf = float('1e1000')   # FIXME: hack for infinite
20    
21  class Range:  class Range:
22    
# Line 28  class Range: Line 27  class Range:
27      parse_range = re.compile(range_re)      parse_range = re.compile(range_re)
28    
29      def __init__(self, range=None):      def __init__(self, range=None):
30          self.SetRange(range)          self._SetRange(range)
31    
32      def SetRange(self, range):      def _SetRange(self, range):
33          if isinstance(range, Range):          if isinstance(range, Range):
34              self.SetRange(str(range))              self._SetRange(range.GetRange())
35          elif range in [None, '']:          elif range in [None, '']:
36              self.SetRange(']-oo;oo[')              self._SetRange(']-oo;oo[')
37            elif type(range) == types.TupleType:
38                if (len(range) == 4 and range[0] in ['[', ']']
39                    and range[3] in ['[', ']']):
40                    self._left = range[0]
41                    self._begin = self.float(range[1])
42                    self._end = self.float(range[2])
43                    self._right = range[3]
44                    if (self._begin > self._end or
45                        (self._begin == self._end and
46                         (self._left != '[' or self._right != ']'))):
47                        raise ValueError("illegal range: %s" % (range,))
48                else:
49                    raise ValueError("can't parse range: %r" % (range,))
50          else:          else:
51              self._range = range              self._range = range
52              match = self.parse_range.match(self._range)              match = self.parse_range.match(self._range)
53              if match:              if match:
54                  self._left = match.group('left')                  self._SetRange((match.group('left'),
55                  self._begin = self.float(match.group('begin'))                                match.group('begin'),
56                  self._end = self.float(match.group('end'))                                match.group('end'),
57                  self._right = match.group('right')                                match.group('right')))
58              else:              else:
59                  raise ValueError("can't parse range: %s" % range)                  raise ValueError("can't parse range: %s" % (range,))
             if (self._begin > self._end or  
                 (self._begin == self._end and  
                  (self._left != '[' or self._right != ']'))):  
                 raise ValueError("illegal range: %s" % range)  
60    
61      def GetRange(self):      def GetRange(self):
62          """return internal representation of range          """return internal representation of range
# Line 58  class Range: Line 66  class Range:
66          """          """
67          return (self._left, self._begin, self._end, self._right)          return (self._left, self._begin, self._end, self._right)
68    
69      def float(self, string):      def float(self, value):
70          if string == 'oo':          """convert string or number to float"""
71            if value == 'oo':
72              return _inf              return _inf
73          elif string == '-oo':          elif value == '-oo':
74              return -_inf              return -_inf
75          else:          else:
76              return float(string)              return float(value)
77    
78      def _float2string(self, value):      def _float2string(self, value):
79          """convert float value to string          """convert float value to string
# Line 78  class Range: Line 87  class Range:
87          elif value == -_inf:          elif value == -_inf:
88              return '-oo'              return '-oo'
89          else:          else:
90              return "%g" % value              return "%g" % (value,)
91    
92      def string(self, range):      def string(self, range):
93          """convert internal representation to string"""          """convert internal representation to string"""

Legend:
Removed from v.901  
changed lines
  Added in v.2734

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26