Sha256: 1339622d58f39a1846cbe6b7e218e7308e9a1e37a8d78bb3c530f6dc7722aafe

Contents?: true

Size: 835 Bytes

Versions: 3

Compression:

Stored size: 835 Bytes

Contents

module Tunable

  module Normalizer

    TRUTHIES = ['true', 't', 'on', 'yes', 'y', '1'].freeze
    FALSIES  = ['false', 'f', 'off', 'no', 'n', '0'].freeze

    def normalize_value(val)
      return 1 if TRUTHIES.include?(val.to_s)
      return 0 if FALSIES.include?(val.to_s)
      return if val.blank? # false.blank? returns true so this needs to go after the 0 line
      val
    end

    def getter_value(normalized)
      return normalized === 1 ? true : normalized === 0 ? false : normalized
    end

    # Called from Setting#normalized_value and DeviceActions#toggle_action
    def normalize_and_get(val)
      getter_value(normalize_value(val))
    end

    def matching_type(a, b)
      if [true, false].include?(a)
        return [true, false].include?(b)
      else
        a.class == b.class
      end
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tunable-0.0.3 lib/tunable/normalizer.rb
tunable-0.0.2 lib/tunable/normalizer.rb
tunable-0.0.1 lib/tunable/normalizer.rb