1 import sys
2 IS_PYTHON3 = sys.version_info[0] >= 3
3
4 if IS_PYTHON3:
5 exec('from ._output import output as _output')
6 exec('from ._lexer import lexer as _lexer')
7 exec('from ._parser import parser as _parser')
8 else:
9 exec('from _output import output as _output')
10 exec('from _lexer import lexer as _lexer')
11 exec('from _parser import parser as _parser')
12
14 '''
15 Generate a writer object for FORTRAN format strings
16
17 Typical use case ...
18
19 >>> header_line = FortranRecordWriter('(A15, A15, A15)')
20 >>> header_line.write(['x', 'y', 'z'])
21 ' x y z'
22 >>> line = FortranRecordWriter('(3F15.3)')
23 >>> line.write([1.0, 0.0, 0.5])
24 ' 1.000 0.000 0.500'
25 >>> line.write([1.1, 0.1, 0.6])
26 ' 1.100 0.100 0.600'
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 '''
33 self._eds = []
34 self._rev_eds = []
35 self.format = format
36
42
44 '''
45 Pass a list of values correspoding to the FORTRAN format specified
46 to generate a string
47 '''
48 return _output(self._eds, self._rev_eds, values)
49
52
56
57 format = property(get_format, set_format)
58
61
62
63 if __name__ == '__main__':
64 import doctest
65 doctest.testmod()
66