class BikeReg::Object
Public Class Methods
new(attributes)
click to toggle source
Calls superclass method
# File lib/bike_reg/object.rb, line 7 def initialize(attributes) super(to_ostruct(attributes)) end
Public Instance Methods
to_ostruct(obj)
click to toggle source
# File lib/bike_reg/object.rb, line 11 def to_ostruct(obj) case obj when Hash new_obj = obj.transform_keys { |key| underscore(key) } OpenStruct.new(new_obj.transform_values { |val| to_ostruct(val) }) when Array obj.map { |o| to_ostruct(o) } else # Assumed to be a primitive value obj end end
Private Instance Methods
underscore(camel_cased_word)
click to toggle source
# File lib/bike_reg/object.rb, line 25 def underscore(camel_cased_word) return camel_cased_word.to_s unless /[A-Z-]|::/.match?(camel_cased_word) word = camel_cased_word.to_s.gsub('::', '/') # word.gsub!(inflections.acronyms_underscore_regex) { "#{$1 && '_' }#{$2.downcase}" } word.gsub!(/([A-Z]+)(?=[A-Z][a-z])|([a-z\d])(?=[A-Z])/) { (Regexp.last_match(1) || Regexp.last_match(2)) << '_' } word.tr!('-', '_') word.downcase! word end