lib/datapimp/sources.rb in datapimp-1.1.1 vs lib/datapimp/sources.rb in datapimp-1.2.0

- old
+ new

@@ -189,9 +189,34 @@ end def path_to_file Pathname(path).join("#{ file }") end + + def jsonify(value) + case value + when String, Numeric, NilClass, TrueClass, FalseClass + value + when Hash + Hash[value.map { |k, v| [jsonify(k), jsonify(v)] }] + when Array + value.map { |v| jsonify(v) } + when HappyMapper + value.instance_variables.each_with_object({}) do |var_name, memo| + key = var_name.to_s.sub(/^@/, '').to_sym + val = value.instance_variable_get(var_name) + memo[key] = jsonify(val) + end + else + if value.respond_to?(:to_attrs) + value.to_attrs + elsif value.respond_to?(:as_json) + value.as_json + else + value.to_s + end + end + end end end end Dir[Datapimp.lib.join("datapimp/sources/**/*.rb")].each {|f| require(f) }