Skip to content

Commit d172262

Browse files
committed
Reduce object allocations in JSON::LD::Expand#expand
1 parent d12a153 commit d172262

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/json/ld/expand.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,14 @@ def expand(input, active_property, context, ordered: true)
6868
"value object has unknown keys: #{output_object.inspect}"
6969
end
7070

71-
output_object.delete('@language') if Array(output_object['@language']).join('').to_s.empty?
72-
output_object.delete('@type') if Array(output_object['@type']).join('').to_s.empty?
71+
output_object.delete('@language') if output_object.key?('@language') && Array(output_object['@language']).empty?
72+
output_object.delete('@type') if output_object.key?('@type') && Array(output_object['@type']).empty?
7373

7474
# If the value of result's @value key is null, then set result to null.
75-
return nil if Array(output_object['@value']).empty?
75+
ary = Array(output_object['@value'])
76+
return nil if ary.empty?
7677

77-
if !Array(output_object['@value']).all? {|v| v.is_a?(String) || v.is_a?(Hash) && v.empty?} && output_object.has_key?('@language')
78+
if !ary.all? {|v| v.is_a?(String) || v.is_a?(Hash) && v.empty?} && output_object.has_key?('@language')
7879
# Otherwise, if the value of result's @value member is not a string and result contains the key @language, an invalid language-tagged value error has been detected (only strings can be language-tagged) and processing is aborted.
7980
raise JsonLdError::InvalidLanguageTaggedValue,
8081
"when @language is used, @value must be a string: #{output_object.inspect}"

0 commit comments

Comments
 (0)