lib/rico/map.rb in rico-0.4.0 vs lib/rico/map.rb in rico-0.5.0

- old
+ new

@@ -5,11 +5,13 @@ # Obtains the items in the array # # Returns the data in the object as an array def members - ((data || {})["_values"] || {}) + assert_type(::Hash) do + data["_values"] || {} + end end # Resolve conflict between one or more RObject siblings # # robjects - array of RObjects to merge @@ -27,22 +29,42 @@ obj end protected + # Constructs a document map for the given operation + # + # items - Items to add to members + # + # Returns a Hash representing the document map def build_map_add(items) { "_type" => type_key, "_values" => compute_add(items) } end + # Constructs a document map for the given operation + # + # items - Items to remove to members + # + # Returns a Hash representing the document map def build_map_remove(items) keys = extract_keys(items) { "_type" => type_key, "_values" => compute_remove(items), "_deletes" => keys } end + # Add items to our member hash + # + # items - Items to add + # + # Returns a Hash of the resulting merge def compute_add(items) members.merge(items) end + # Remove items from our member hash + # + # items - Items to remove. Can be a hash, array of keys or single key + # + # Returns a Hash of the new object def compute_remove(items) keys = extract_keys(items) members.delete_if {|k,v| keys.include? k.to_s } end