class Dish::Plate

Public Instance Methods

inspect() click to toggle source
# File lib/controls/ext/dish/plate.rb, line 11
def inspect
  hash = as_hash
  keys_to_snake_case = hash.keys.map { |key|
    [key, key.to_s.gsub(/([^A-Z])([A-Z]+)/, '\1_\2').downcase]
  }
  keys_to_snake_case = Hash[keys_to_snake_case]

  vars = hash.map do |key, value|
    "#{keys_to_snake_case[key]}: #{_get_value(key)}"
  end

  "#<#{self.class}: #{vars.join(', ')}>"
end
methods(all = true) click to toggle source
Calls superclass method
# File lib/controls/ext/dish/plate.rb, line 3
def methods(all = true)
  valid_keys = as_hash.keys.map do |key|
    key.to_s.gsub(/([^A-Z])([A-Z]+)/, '\1_\2').downcase.to_sym
  end

  valid_keys + super
end
to_json(*args) click to toggle source
# File lib/controls/ext/dish/plate.rb, line 27
def to_json(*args)
  as_hash.to_json(*args)
end

Private Instance Methods

_set_value(key, value) click to toggle source
# File lib/controls/ext/dish/plate.rb, line 33
def _set_value(key, value)
  value = _convert_value(value, self.class.coercions[key])
  @_original_hash[key] = value
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/controls/ext/dish/plate.rb, line 38
def method_missing(method, *args, &block)
  method = method.to_s
  camel_case_key = method.split('_').map(&:capitalize).join
  camel_case_key[0] = camel_case_key[0].downcase

  if method.end_with? '?'
    key = camel_case_key[0..-2]
    _check_for_presence(key)
  elsif method.end_with? '='
    key = camel_case_key[0..-2]
    _set_value(key, args.first)
  else
    if @_original_hash.key?(camel_case_key)
      _get_value(camel_case_key)
    else
      super(method.to_sym, *args, &block)
    end
  end
end