Module: SNOWTAM
- Defined in:
- src/snowtam_parser.rb
Class Method Summary collapse
Class Method Details
.map_messages!(messages) ⇒ Object
2 3 4 5 6 7 8 |
# File 'src/snowtam_parser.rb', line 2 def self.() .map! do |m| m =~ /\nA\)/ ? parse_old(m) : parse_new(m) rescue => e { parse_error: e., message: m} end end |
.parse_new(m) ⇒ Object
20 21 22 23 24 25 |
# File 'src/snowtam_parser.rb', line 20 def self.parse_new(m) data = { message: m } data.merge!(/(?<id>SW\S+)\s+(?<code>\S{4})\s+(?<date>\d+)\n/m.match(m).named_captures) data.merge!(/\(SNOWTAM\s\d+\n#{data['code']}\n(?<body>.*)\)/m.match(m).named_captures) data end |
.parse_old(m) ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'src/snowtam_parser.rb', line 11 def self.parse_old(m) data = { message: m, version: 'old' } data.merge!(/(?<id>SW\S+)\s+(?<code>\S{4})\s+(?<date>\d+)\n/m.match(m).named_captures) data.merge!(/\(SNOWTAM\s\d+\n(?<body>.*)\)/m.match(m).named_captures) sections = data['body'].scan(/(^|\n|\s)(?<k>[A-Z])\)(?<b>(.(?!(\s|\n)[A-Z]\)))*.)/m).to_h data.merge! sections: sections data end |