Module: HashControl::Model::ClassMethods

Defined in:
lib/hash_control/model.rb,
lib/hash_control/model.rb

Overview

JSON support

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#permitted_keysObject (readonly)

Returns the value of attribute permitted_keys.



43
44
45
# File 'lib/hash_control/model.rb', line 43

def permitted_keys
  @permitted_keys
end

#required_keysObject (readonly)

Returns the value of attribute required_keys.



43
44
45
# File 'lib/hash_control/model.rb', line 43

def required_keys
  @required_keys
end

Instance Method Details

#initialize_classObject



39
40
41
42
# File 'lib/hash_control/model.rb', line 39

def initialize_class
  instance_variable_set(:@required_keys, Set.new)
  instance_variable_set(:@permitted_keys, Set.new)
end

#json_create(hash_as_json) ⇒ Object



104
105
106
107
108
# File 'lib/hash_control/model.rb', line 104

def json_create(hash_as_json)
  require 'json'
  hash = JSON.parse hash_as_json
  new hash
end

#key_accessor(name) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/hash_control/model.rb', line 59

def key_accessor(name)
  name = name.to_sym
  return if self.respond_to?(name)
  class_eval do
    define_method(name) { @hash[name] }
  end
end

#permit_all_keysObject



45
46
47
# File 'lib/hash_control/model.rb', line 45

def permit_all_keys
  @permitted_keys = :all
end

#permit_key(*keys) ⇒ Object



54
55
56
57
# File 'lib/hash_control/model.rb', line 54

def permit_key(*keys)
  keys.each { |key| key_accessor(key) }
  permitted_keys.merge keys
end

#require_key(*keys) ⇒ Object



49
50
51
52
# File 'lib/hash_control/model.rb', line 49

def require_key(*keys)
  keys.each { |key| key_accessor(key) }
  required_keys.merge keys
end