From be8190b467c5989fc1e5e0502c42afa86ad15dd7 Mon Sep 17 00:00:00 2001 From: "G. Gibson" Date: Sun, 31 May 2026 22:34:00 -0700 Subject: [PATCH] updated merge --- gxg/web/gxg_database.rb | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/gxg/web/gxg_database.rb b/gxg/web/gxg_database.rb index 9bf202e..3468f82 100644 --- a/gxg/web/gxg_database.rb +++ b/gxg/web/gxg_database.rb @@ -1168,6 +1168,62 @@ module GxG result end # + def merge!(input_object=nil, options={}) + result = self + if input_object.is_any?(::Hash, ::GxG::Database::DetachedHash, ::GxG::Database::PersistedHash) + # + if @format + # merge only keys common to both + input_object.keys.each do |import_key| + if result.keys.include?(import_key) + result[(import_key)] = input_object[(import_key)] + if input_object.is_any?(::GxG::Database::DetachedHash, ::GxG::Database::PersistedHash) + result.set_property_version(import_key, input_object.property_version(import_key)) + end + end + end + else + input_object.keys.each do |import_key| + result[(import_key)] = input_object[(import_key)] + if input_object.is_any?(::GxG::Database::DetachedHash, ::GxG::Database::PersistedHash) + result.set_property_version(import_key, input_object.property_version(import_key)) + end + end + end + # + end + result + end + # + def merge(input_object=nil, options={}) + result = self + if input_object.is_any?(::Hash, ::GxG::Database::DetachedHash, ::GxG::Database::PersistedHash) + result = ::GxG::Database::DetachedHash::iterative_detached_persist(self.unpersist) + # + if @format + # merge only keys common to both + input_object.keys.each do |import_key| + if result.keys.include?(import_key) + result[(import_key)] = input_object[(import_key)] + if input_object.is_any?(::GxG::Database::DetachedHash, ::GxG::Database::PersistedHash) + result.set_property_version(import_key, input_object.property_version(import_key)) + end + end + end + result.format = @format + else + input_object.keys.each do |import_key| + result[(import_key)] = input_object[(import_key)] + if input_object.is_any?(::GxG::Database::DetachedHash, ::GxG::Database::PersistedHash) + result.set_property_version(import_key, input_object.property_version(import_key)) + end + end + end + # + end + result + end + # end # class DetachedArray