Sha256: 95d95a48c6fbd4000ea2c5f867ec4312957e09f040819a9c0c1bb10400685961
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
require "flex_station_data/concerns/presenter" require "flex_station_data/readings" require "flex_station_data/services/sample_quality" module FlexStationData module Presenters class SampleCsv include Concerns::Presenter attr_reader :times, :sample, :quality_control def initialize(times, sample, quality_control: SampleQuality) @times = times @sample = sample @quality_control = quality_control end def readings @readings ||= [ Readings.new("time", times), *sample.readings, sample.mean ] end def headers readings.map(&:label) end def rows readings.map(&:values).transpose end def label "Sample #{sample.label}" end def errors @errors ||= quality_control.call(sample).reject(&:good?) end def errors? errors.present? end def errors_csv errors.map(&:to_s).map(&method(:Array)) end def values_csv [ headers, *rows ] end def present [ [label] ] + (errors? ? errors_csv : values_csv) + [ [] ] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flex-station-data-0.2.0 | lib/flex_station_data/presenters/sample_csv.rb |