Sha256: 0e998011fe145c53d264536b558779ed315bc967e599b8b1968168a56fc70439

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module SerialPreference
  class Preference

    SUPPORTED_TYPES = [:string,:integer,:real,:float,:boolean,:password]

    attr_accessor :data_type, :name, :default, :required, :label, :hint, :field_type

    def initialize(name,opts = {})
      self.data_type = opts[:data_type] || :string
      self.name = name
      self.default = opts[:default]
      self.required = !!opts[:required]
      self.label = opts[:label]
      self.hint = opts[:hint]
      self.field_type = opts[:field_type]
    end

    def required?
      required
    end

    def numerical?
      [:integer,:float,:real].include?(data_type)
    end

    def field_type
      @field_type || (numerical? ? :string : data_type)
    end

    def value(value)
      value = value.nil? ? default : value
      if !value.nil?
        case data_type
        when :string, :password
          value.to_s
        when  :integer
          value.to_i
        when :float, :real
          value.to_f
        when :boolean
          return false if value == 0
          return false if value == ""
          return false if value == nil
          return false if value.to_s.downcase == "false"
          return false if value == "0"
          return false if value.to_s.downcase == "no"
          !!value
        else
          nil
        end
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
serial_preference-0.2.2 lib/serial_preference/preference.rb