Sha256: 06d52cf7e1f15d6d81fdfdc5a9d09e469b5e8ecbe2086b932dc21f67c183d102

Contents?: true

Size: 895 Bytes

Versions: 13

Compression:

Stored size: 895 Bytes

Contents

module TrkDatatables
  class Preferences
    KEY_IN_PREFERENCES = :trk_datatables
    def initialize(holder, field, class_name)
      @holder = holder
      @field = field
      @class_name = class_name
    end

    # Get the key from holder
    # Use check_value proc to ignore wrong format. This is usefull when you
    # change format and you do not want to clear all existing values
    def get(key, check_value = nil)
      return unless @holder

      result = @holder.send(@field).dig KEY_IN_PREFERENCES, @class_name, key
      return result if check_value.nil?
      return result if check_value.call result
    end

    def set(key, value)
      return unless @holder

      h = { KEY_IN_PREFERENCES => { @class_name => { key => value } } }
      @holder.send("#{@field}=", {}) if @holder.send(@field).nil?
      @holder.send(@field).deep_merge! h
      @holder.save!
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
trk_datatables-0.1.23 lib/trk_datatables/preferences.rb
trk_datatables-0.1.22 lib/trk_datatables/preferences.rb
trk_datatables-0.1.21 lib/trk_datatables/preferences.rb
trk_datatables-0.1.20 lib/trk_datatables/preferences.rb
trk_datatables-0.1.19 lib/trk_datatables/preferences.rb
trk_datatables-0.1.18 lib/trk_datatables/preferences.rb
trk_datatables-0.1.17 lib/trk_datatables/preferences.rb
trk_datatables-0.1.16 lib/trk_datatables/preferences.rb
trk_datatables-0.1.15 lib/trk_datatables/preferences.rb
trk_datatables-0.1.14 lib/trk_datatables/preferences.rb
trk_datatables-0.1.13 lib/trk_datatables/preferences.rb
trk_datatables-0.1.12 lib/trk_datatables/preferences.rb
trk_datatables-0.1.11 lib/trk_datatables/preferences.rb