Sha256: 8d3a3630f4c1fd97ebbca7bf2a344768132d10503221a15221224969cccf1577
Contents?: true
Size: 1.21 KB
Versions: 2
Compression:
Stored size: 1.21 KB
Contents
require "singleton" require "active_support/core_ext" require "flex_station_data/concerns/service" module FlexStationData class ValueQuality include Concerns::Service class Good include Singleton def good? true end def to_s "good" end end class Bad attr_reader :description def initialize(description) @description = description end def good? false end def to_s description end end attr_reader :value, :threshold def initialize(value, threshold: nil, **_options) @value = value @threshold = threshold end def no_data? value.blank? end def saturated? value == "#SAT" end def invalid? !(no_data? || saturated? || value.is_a?(Numeric)) end def below_threshold? threshold.present? && value.is_a?(Numeric) && value < threshold end def call if no_data? Bad.new("No data") elsif saturated? Bad.new("Saturated") elsif invalid? Bad.new("Invalid data") elsif below_threshold? Bad.new("Below threshold") else Good.instance end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
flex-station-data-1.0.1 | lib/flex_station_data/services/value_quality.rb |
flex-station-data-1.0.0 | lib/flex_station_data/services/value_quality.rb |