Class: LabParser
- Inherits:
-
Object
- Object
- LabParser
- Defined in:
- lib/ecu/interfaces/lab/lab_parser.rb
Class Method Summary collapse
- .block_bounded_by(lines, upper, lower) ⇒ Object
- .call(str) ⇒ Object
- .extract_headers(lines) ⇒ Object
- .extract_labels(lines) ⇒ Object
- .extract_signals(lines) ⇒ Object
Class Method Details
.block_bounded_by(lines, upper, lower) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ecu/interfaces/lab/lab_parser.rb', line 36 def self.block_bounded_by(lines, upper, lower) upper = case upper when Integer then upper when String return [] unless lines.any? { |l| l.strip.downcase == upper.downcase } lines.index { |l| l.strip.downcase == upper.downcase } + 1 when Regexp return [] unless lines.any? { |l| l.match?(upper) } lines.index { |l| l.match?(upper) } + 1 end segment = lines[upper..-1] lower = case lower when Integer then lower when String return lines[upper..-1] unless segment.any? { |l| l.strip.downcase == lower.downcase } upper + segment.index { |l| l.strip.downcase == lower.downcase } when Regexp return lines[upper..-1] unless segment.any? { |l| l.match?(lower) } upper + segment.index { |l| l.match?(lower) } end lines[upper...lower] end |
.call(str) ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/ecu/interfaces/lab/lab_parser.rb', line 5 def self.call(str) lines = str.lines [ extract_signals(block_bounded_by(lines, "[RAMCELL]", /\A\[/)), extract_labels(block_bounded_by(lines, "[Label]", /\A\[/)), extract_headers(block_bounded_by(lines, 0, "[SETTINGS]")), extract_headers(block_bounded_by(lines, "[SETTINGS]", /\A\[/)), ] end |
.extract_headers(lines) ⇒ Object
30 31 32 33 34 |
# File 'lib/ecu/interfaces/lab/lab_parser.rb', line 30 def self.extract_headers(lines) lines. select { |l| l.match(/\A; /) }. map { |l| l[2..-1].chomp } end |