Class: Ecu::ValuePrinter
- Inherits:
-
Object
- Object
- Ecu::ValuePrinter
- Defined in:
- lib/ecu/labels/value_printer.rb
Class Method Summary collapse
Class Method Details
.call(label) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ecu/labels/value_printer.rb', line 9 def self.call(label) Terminal::Table.new(style: { alignment: :right }) do |t| case label when Kennfeld t << truncate(["y\\x"] + label.xvalue) t << :separator rows = label.yvalue.zip(label.value).map { |h, r| [h] + r } display_rows(rows).each do |row| t << truncate(row) end when Kennlinie t << truncate(["x"] + label.xvalue) t << :separator t << truncate(["y"] + label.value) when Stuetzstellenverteilung t << truncate(["x"] + label.xvalue) when Festwerteblock label.value.each do |row| t << truncate(row) end else fail "Cannot print value for #{label}" end end.to_s end |
.display_rows(rows) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/ecu/labels/value_printer.rb', line 35 def self.display_rows(rows) disp = rows.uniq return rows unless rows.size > 1 && disp.size < rows.size redundant_row = rows[0].map { "" }.tap { |r| r[0] = "..." } disp.unshift(redundant_row) if disp[0] == rows[1] disp.push(redundant_row) if disp[-1] == rows[-2] disp end |
.truncate(row, maxcols = 10) ⇒ Object
44 45 46 47 |
# File 'lib/ecu/labels/value_printer.rb', line 44 def self.truncate(row, maxcols=10) return row if row.length <= maxcols row[0..(maxcols - 1)] + ["..."] end |