lib/leancloud/util.rb in leancloud-ruby-client-0.1.1 vs lib/leancloud/util.rb in leancloud-ruby-client-0.2.0

- old
+ new

@@ -1,15 +1,15 @@ # -*- encoding : utf-8 -*- -module AV +module LC # Parse a JSON representation into a fully instantiated # class. obj can be either a primitive or a Hash of primitives as parsed # by JSON.parse # @param class_name [Object] # @param obj [Object] - def AV.parse_json(class_name, obj) + def LC.parse_json(class_name, obj) if obj.nil? nil # Array elsif obj.is_a? Array @@ -20,71 +20,71 @@ # If it's a datatype hash if obj.has_key?(Protocol::KEY_TYPE) parse_datatype obj elsif class_name # otherwise it must be a regular object, so deep parse it avoiding re-JSON.parsing raw Strings - AV::Object.new class_name, Hash[obj.map{|k,v| [k, parse_json(nil, v)]}] + LC::Object.new class_name, Hash[obj.map{|k,v| [k, parse_json(nil, v)]}] else # plain old hash obj end # primitive else obj end end - def AV.parse_datatype(obj) + def LC.parse_datatype(obj) type = obj[Protocol::KEY_TYPE] case type when Protocol::TYPE_POINTER if obj[Protocol::KEY_CREATED_AT] - AV::Object.new obj[Protocol::KEY_CLASS_NAME], Hash[obj.map{|k,v| [k, parse_json(nil, v)]}] + LC::Object.new obj[Protocol::KEY_CLASS_NAME], Hash[obj.map{|k,v| [k, parse_json(nil, v)]}] else - AV::Pointer.new obj + LC::Pointer.new obj end when Protocol::TYPE_BYTES - AV::Bytes.new obj + LC::Bytes.new obj when Protocol::TYPE_DATE - AV::Date.new obj + LC::Date.new obj when Protocol::TYPE_GEOPOINT - AV::GeoPoint.new obj + LC::GeoPoint.new obj when Protocol::TYPE_FILE - AV::File.new obj + LC::File.new obj when Protocol::TYPE_OBJECT # used for relation queries, e.g. "?include=post" - AV::Object.new obj[Protocol::KEY_CLASS_NAME], Hash[obj.map{|k,v| [k, parse_json(nil, v)]}] + LC::Object.new obj[Protocol::KEY_CLASS_NAME], Hash[obj.map{|k,v| [k, parse_json(nil, v)]}] end end - def AV.pointerize_value(obj) - if obj.kind_of?(AV::Object) + def LC.pointerize_value(obj) + if obj.kind_of?(LC::Object) p = obj.pointer raise ArgumentError.new("new object used in context requiring pointer #{obj}") unless p p elsif obj.is_a?(Array) obj.map do |v| - AV.pointerize_value(v) + LC.pointerize_value(v) end elsif obj.is_a?(Hash) Hash[obj.map do |k, v| - [k, AV.pointerize_value(v)] + [k, LC.pointerize_value(v)] end] else obj end end - def AV.object_pointer_equality?(a, b) - classes = [AV::Object, AV::Pointer] + def LC.object_pointer_equality?(a, b) + classes = [LC::Object, LC::Pointer] return false unless classes.any? { |c| a.kind_of?(c) } && classes.any? { |c| b.kind_of?(c) } return true if a.equal?(b) return false if a.new? || b.new? a.class_name == b.class_name && a.id == b.id end - def AV.object_pointer_hash(v) + def LC.object_pointer_hash(v) if v.new? v.object_id else v.class_name.hash ^ v.id.hash end