Sha256: 672c2e1150c4f1a3a004bf52f08d19c6839b6528e6c2305203e988231ee7d90e
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flex-station-data-0.3.2 | lib/flex_station_data/services/value_quality.rb |