Class: NMatrix::IO::FortranFormat::Reader
- Defined in:
- lib/nmatrix/io/fortran_format.rb
Overview
Class for reading strings in FORTRAN format for specifying attributes of numerical data in a file. Supports F (float), E (exponential) and R (real).
Usage
p = NMatrix::IO::FortranFormat::Reader.new("(16I5)")
v = p.parse
puts v #=> { :format_code => "INT_ID",
#=> :repeat => 16,
#=> :field_width => 5 }
Instance Method Summary collapse
-
#initialize(string) ⇒ Reader
constructor
Accepts a string in FORTRAN format and initializes the NMatrix::IO::FortranFormat::Reader object for further parsing of the data.
-
#parse ⇒ Object
Parses the FORTRAN format string passed in initialize and returns a hash of the results.
Constructor Details
#initialize(string) ⇒ Reader
Accepts a string in FORTRAN format and initializes the NMatrix::IO::FortranFormat::Reader object for further parsing of the data.
Arguments
-
string
- FORTRAN format string to be parsed.
54 55 56 |
# File 'lib/nmatrix/io/fortran_format.rb', line 54 def initialize string @string = string end |
Instance Method Details
#parse ⇒ Object
Parses the FORTRAN format string passed in initialize and returns a hash of the results.
Result Hash Format
Take note that some of the below parameters may be absent in the hash depending on the type of string being parsed.
-
:format_code
- A string containing the format code of the read data.Can be "INT_ID", "FP_ID" or "EXP_ID"
-
:repeat
- Number of times this format will repeat in a line. -
:field_width
- Width of the numerical part of the number. -
:post_decimal_width
- Width of the numerals after the decimal point. -
:exponent_width
- Width of exponent part of the number.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/nmatrix/io/fortran_format.rb', line 72 def parse raise(IOError, "Left or right parentheses missing") \ if parentheses_missing? # change tests to handle 'raise' not return @result = {} @string = @string[1..-2] if valid_fortran_format? load_result else raise(IOError, "Invalid FORTRAN format specified. Only Integer, Float or Exponential acceptable.") end @result end |