Sha256: dab8c77dd89f31dece1a4a58bee10db89a266350fa53693246be6d8f5224633a

Contents?: true

Size: 1.89 KB

Versions: 25

Compression:

Stored size: 1.89 KB

Contents

module EasySettings
  class Mapper

    def initialize
      @all_keys = {}
    end

    # Be careful for double definition of the same key
    # Last definition wins
    def key(name, **options, &block)
      name = name.to_s

      if block_given?
        key_dsl = EasySettings::KeyDSL.new
        key_dsl.instance_eval(&block)
        options = options.merge(key_dsl.options)
      end

      EasySetting.mapper_clear_caches
      @all_keys[name] = EasySettings::Key.init(name, options)
    end
    alias_method :add_key, :key

    def keys(*names, **options, &block)
      names.each do |name|
        key(name, options, &block)
      end
    end
    alias_method :add_keys, :keys

    # Shortcust due to frequent usage
    def boolean_keys(*names)
      names.each do |name|
        key(name, type: 'boolean')
      end
    end

    def default_values
      values = {}
      @all_keys.each do |name, key|
        values[name] = key.default
      end
      values
    end

    def validate(easy_setting)
      if @all_keys.has_key?(easy_setting.name)
        @all_keys[easy_setting.name].validate(easy_setting)
      else
        true
      end
    end

    def after_save(easy_setting)
      if @all_keys.has_key?(easy_setting.name)
        @all_keys[easy_setting.name].after_save(easy_setting)
      else
        true
      end
    end

    def from_params(easy_setting, value)
      if @all_keys.has_key?(easy_setting.name)
        @all_keys[easy_setting.name].from_params(easy_setting, value)
      else
        value
      end
    end

    def disabled_from_params?(easy_setting)
      if @all_keys.has_key?(easy_setting.name)
        @all_keys[easy_setting.name].disabled_from_params?
      else
        false
      end
    end

    def skip_blank_params?(easy_setting)
      if @all_keys.has_key?(easy_setting.name)
        @all_keys[easy_setting.name].skip_blank_params?
      else
        false
      end
    end

  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
redmine_extensions-0.3.11 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.10 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.9 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.8 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.7 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.6 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.4 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.3 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.2 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.3.00 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.16 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.14 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.13 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.12 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.11 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.10 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.9 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.8 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.7 lib/redmine_extensions/easy_settings/mapper.rb
redmine_extensions-0.2.6 lib/redmine_extensions/easy_settings/mapper.rb