module JsonToOpenStruct

Public Class Methods

included(host_class) click to toggle source
# File lib/json_to_openstruct.rb, line 6
      def self.included(host_class)
  host_class.extend ClassMethods
end

Public Instance Methods

join(params) click to toggle source
# File lib/json_to_openstruct.rb, line 32
def join(params)
        hash = self.to_hash
        parse(hash, params)
        hash
end
to_hash() click to toggle source
# File lib/json_to_openstruct.rb, line 15
def to_hash
        hash = {}
        self.to_h.each do |key, value|
                if self[key].kind_of?(Array)
                        hash[key] = []
                        self[key].each do |array_item|
                                hash[key] << array_item.to_hash
                        end
                elsif self[key].kind_of?(self.class)
                        hash[key] = value.to_hash
                else
                        hash[key] = value
                end
        end
        hash
end
to_json() click to toggle source
# File lib/json_to_openstruct.rb, line 10
def to_json
        hash = self.to_hash
        hash.to_json
end

Private Instance Methods

parse(hash, params) click to toggle source
# File lib/json_to_openstruct.rb, line 40
def parse(hash, params)
        params.keys.each do |key|
                if params[key].kind_of?(Hash)
                        if key.end_with?("_attributes")
                                params[key].keys.each do |index|
                                        parse(hash[StringHelper.normalize(key).to_sym][index.to_i], params[key][index])
                                end
                        else
                                parse(hash[key.to_sym], params[key])
                        end
                else
                        hash[key.to_sym] = params[key]
                end
        end
end