Module: CodewarsClient::ObjectBuilder

Included in:
AttemptSolution, DeferredResponse, Finalize, NextKata, User
Defined in:
lib/codewars_client/object_builder.rb

Instance Method Summary collapse

Instance Method Details

#_build_attr_reader(key) ⇒ Object



25
26
27
# File 'lib/codewars_client/object_builder.rb', line 25

def _build_attr_reader(key)
  self.class.instance_eval("attr_reader :#{key}")
end

#_build_methods(values) ⇒ Object



13
14
15
16
17
# File 'lib/codewars_client/object_builder.rb', line 13

def _build_methods(values)
  values.each do |key, value|
    _mount_values_and_methods(key, value)
  end
end

#_build_object(data) ⇒ Object



3
4
5
6
7
8
9
10
11
# File 'lib/codewars_client/object_builder.rb', line 3

def _build_object(data)
  data.each do |key, value|
    if value.is_a? Hash
      _build_methods(value)
    else
      _mount_values_and_methods(key, value)
    end
  end
end

#_mount_values_and_methods(key, value) ⇒ Object



19
20
21
22
23
# File 'lib/codewars_client/object_builder.rb', line 19

def _mount_values_and_methods(key, value)
  new_key = _underscore_key(key)
  _build_attr_reader(new_key)
  _set_attr_value(new_key, value)
end

#_set_attr_value(key, value) ⇒ Object



29
30
31
# File 'lib/codewars_client/object_builder.rb', line 29

def _set_attr_value(key, value)
  instance_variable_set("@#{key}", value)
end

#_underscore_key(key) ⇒ Object



33
34
35
36
37
# File 'lib/codewars_client/object_builder.rb', line 33

def _underscore_key(key)
  match = key.match(/^([a-z]*)([A-Z].*)/)
  return key unless match
  "#{match[1]}_#{match[2].downcase}"
end