Sha256: cdbd66b58c6af353725cb1dd55cbf7b1f1e9220f899ed0552ba49d403f4f7022

Contents?: true

Size: 800 Bytes

Versions: 1

Compression:

Stored size: 800 Bytes

Contents

module SerialPreference
  class PreferenceGroup

    attr_accessor :name, :label

    def initialize(name, opts = {})
      @preferences = {}
      @name = name
      @label = opts[:label]
    end

    def label
      @label.presence || name.to_s.titleize
    end

    def preference_keys
      @preferences.keys
    end

    def preferences
      @preferences.values
    end

    def pref(name,opts = {})
      @preferences[name] = Preference.new(name,opts)
    end

    SerialPreference::Preference::SUPPORTED_TYPES.each do |dt|
      define_method dt do |name,opts = {}|
        pref(name,opts.merge!(:data_type => dt))
      end
    end

    def respond_to?(name,*opts)
      @preferences[name].present?
    end

    def method_missing(name,*opts,&block)
      pref(name,*opts)
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
serial_preference-0.1.2 lib/serial_preference/preference_group.rb