1 import sys
2 IS_PYTHON3 = sys.version_info[0] >= 3
3
4 if IS_PYTHON3:
5 exec('from ._input import input as _input')
6 exec('from ._parser import parser as _parser')
7 exec('from ._lexer import lexer as _lexer')
8 else:
9 exec('from _input import input as _input')
10 exec('from _parser import parser as _parser')
11 exec('from _lexer import lexer as _lexer')
12
14 '''
15 Generate a reader object for FORTRAN format strings
16
17 Typical use case ...
18
19 >>> header_line = FortranRecordReader('(A15, A15, A15)')
20 >>> header_line.read(' x y z')
21 [' x', ' y', ' z']
22 >>> line = FortranRecordReader('(3F15.3)')
23 >>> line.read(' 1.000 0.000 0.500')
24 [1.0, 0.0, 0.5]
25 >>> line.read(' 1.100 0.100 0.600')
26 [1.1, 0.1, 0.6]
27
28 Note: it is best to create a new object for each format, changing the format
29 causes the parser to reevalute the format string which is costly in terms of
30 performance
31 '''
32
38
44
46 try:
47 self.read(record)
48 except RecordError:
49 return False
50 else:
51 return True
52
53 - def read(self, record):
54 '''
55 Pass a string representing a FORTRAN record to obtain the relevent
56 values
57 '''
58 return _input(self._eds, self._rev_eds, record)
59
65 format = property(get_format, set_format)
66
69
70
71 if __name__ == '__main__':
72 import doctest
73 doctest.testmod()
74