Module: CodewarsClient::ObjectBuilder
- Included in:
- AttemptSolution, DeferredResponse, Finalize, NextKata, User
- Defined in:
- lib/codewars_client/object_builder.rb
Instance Method Summary collapse
- #_build_attr_reader(key) ⇒ Object
- #_build_methods(values) ⇒ Object
- #_build_object(data) ⇒ Object
- #_mount_values_and_methods(key, value) ⇒ Object
- #_set_attr_value(key, value) ⇒ Object
- #_underscore_key(key) ⇒ Object
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 |