module Class2::Util
Public Class Methods
as_json(klass, *argz)
click to toggle source
# File lib/class2.rb, line 365 def self.as_json(klass, *argz) hash = {} klass.to_h.each do |k, v| if v.is_a?(Hash) v = as_json(v, *argz) elsif v.is_a?(Array) v = v.map { |e| as_json(e, *argz) } elsif v.respond_to?(:as_json) v = v.as_json end hash[k.to_s.public_send(*argz)] = v end hash end
convert_attributes(klass) { |old_name| ... }
click to toggle source
# File lib/class2.rb, line 382 def self.convert_attributes(klass) klass.class_eval do new_nested = [] new_attributes = [] __attributes.map do |old_name| new_name = yield(old_name.to_s) alias_method new_name, old_name alias_method "#{new_name}=", "#{old_name}=" new_attributes << new_name.to_sym new_nested << new_attributes.last if __nested_attributes.include?(old_name) end class_eval <<-CODE def self.__attributes #{new_attributes}.freeze end # We need both styles nere to support proper assignment of nested attributes... :( def self.__nested_attributes #{new_nested + __nested_attributes}.freeze end CODE end end