From 5952f8708f64f0a28dcf2ae44c4d8e4610682448 Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sat, 15 Jul 2023 00:45:46 +0200 Subject: [PATCH 1/2] change the getters show_all_languages argument from to include_languages --- lib/goo/base/settings/settings.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/goo/base/settings/settings.rb b/lib/goo/base/settings/settings.rb index 1308bef0..1263a44a 100644 --- a/lib/goo/base/settings/settings.rb +++ b/lib/goo/base/settings/settings.rb @@ -401,7 +401,7 @@ def read_only(attributes) end def show_all_languages?(args) - args.first.is_a?(Hash) && args.first.keys.include?(:show_languages) && args.first[:show_languages] + args.first.is_a?(Hash) && args.first.keys.include?(:include_languages) && args.first[:include_languages] end def not_show_all_languages?(values, args) From a81f12ca1d5d6cf7c4b7c30718ff6bd8e4a56aff Mon Sep 17 00:00:00 2001 From: Syphax Bouazzouni Date: Sat, 15 Jul 2023 00:46:21 +0200 Subject: [PATCH 2/2] make the map_attributes handle the option showing all the languages --- lib/goo/base/resource.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/goo/base/resource.rb b/lib/goo/base/resource.rb index 5166a967..02709f5e 100644 --- a/lib/goo/base/resource.rb +++ b/lib/goo/base/resource.rb @@ -361,13 +361,13 @@ def self.range_object(attr,id) - def self.map_attributes(inst,equivalent_predicates=nil) + def self.map_attributes(inst,equivalent_predicates=nil, include_languages: false) if (inst.kind_of?(Goo::Base::Resource) && inst.unmapped.nil?) || (!inst.respond_to?(:unmapped) && inst[:unmapped].nil?) raise ArgumentError, "Resource.map_attributes only works for :unmapped instances" end klass = inst.respond_to?(:klass) ? inst[:klass] : inst.class - unmapped = inst.respond_to?(:klass) ? inst[:unmapped] : inst.unmapped + unmapped = inst.respond_to?(:klass) ? inst[:unmapped] : inst.unmapped(include_languages: include_languages) list_attrs = klass.attributes(:list) unmapped_string_keys = Hash.new unmapped.each do |k,v| @@ -398,13 +398,18 @@ def self.map_attributes(inst,equivalent_predicates=nil) object = unmapped_string_keys[attr_uri] end - object = object.map {|o| o.is_a?(RDF::URI) ? o : o.object} + if object.is_a?(Hash) + object = object.transform_values{|values| Array(values).map{|o|o.is_a?(RDF::URI) ? o : o.object}} + else + object = object.map {|o| o.is_a?(RDF::URI) ? o : o.object} + end if klass.range(attr) object = object.map { |o| o.is_a?(RDF::URI) ? klass.range_object(attr,o) : o } end - object = object.first unless list_attrs.include?(attr) + + object = object.first unless list_attrs.include?(attr) || include_languages if inst.respond_to?(:klass) inst[attr] = object else