Package chianti :: Package fortranformat :: Module _misc
[hide private]
[frames] | no frames]

Source Code for Module chianti.fortranformat._misc

 1  '''
 
 2  Miscellaneous functions, classes etc
 
 3  ''' 
 4  import sys 
 5  IS_PYTHON3 = sys.version_info[0] >= 3 
 6  
 
7 -class has_next_iterator(object):
8 ''' 9 A wrapper class for iterators so that the .has_next() method is implemented 10 11 See - http://stackoverflow.com/questions/1966591/hasnext-in-python-iterators 12 '''
13 - def __init__(self, it):
14 self.it = iter(it) 15 self._has_next = None
16 - def __iter__(self): return self
17 - def __next__(self):
18 if self._has_next: 19 result = self._the_next 20 else: 21 if IS_PYTHON3: 22 result = next(self.it) 23 else: 24 result = self.it.next() 25 self._has_next = None 26 return result
27 - def next(self):
28 if self._has_next: 29 result = self._the_next 30 else: 31 if IS_PYTHON3: 32 result = next(self.it) 33 else: 34 result = self.it.next() 35 self._has_next = None 36 return result
37 - def has_next(self):
38 if self._has_next is None: 39 try: 40 if IS_PYTHON3: 41 self._the_next = next(self.it) 42 else: 43 self._the_next = self.it.next() 44 except StopIteration: self._has_next = False 45 else: self._has_next = True 46 return self._has_next
47 48
49 -def expand_edit_descriptors(eds):
50 expanded_eds = [] 51 for ed in eds: 52 if hasattr(ed, 'repeat') and (ed.repeat is not None): 53 expanded_eds.extend(ed.repeat * [ed]) 54 else: 55 expanded_eds.append(ed) 56 return expanded_eds
57