@@ -19,12 +19,9 @@ module Compact
1919 # @return [Array, Hash]
2020 def compact ( element ,
2121 base : nil ,
22- property : nil )
23- #if property.nil?
24- # log_debug("compact") {"element: #{element.inspect}, ec: #{context.inspect}"}
25- #else
26- # log_debug("compact") {"property: #{property.inspect}"}
27- #end
22+ property : nil ,
23+ log_depth : nil )
24+ log_debug ( "compact" , depth : log_depth . to_i ) { "element: #{ element . inspect } , ec: #{ context . inspect } " }
2825
2926 # If the term definition for active property itself contains a context, use that for compacting values.
3027 input_context = self . context
@@ -33,18 +30,18 @@ def compact(element,
3330 when Array
3431 #log_debug("") {"Array #{element.inspect}"}
3532 result = element . map do |item |
36- compact ( item , base : base , property : property )
33+ compact ( item , base : base , property : property , log_depth : log_depth . to_i + 1 )
3734 end . compact
3835
3936 # If element has a single member and the active property has no
4037 # @container mapping to @list or @set, the compacted value is that
4138 # member; otherwise the compacted value is element
4239 if result . length == 1 &&
4340 !context . as_array? ( property ) && @options [ :compactArrays ]
44- # log_debug("=> extract single element: # {result.first.inspect}")
41+ log_debug ( "=> extract single element" , depth : log_depth . to_i ) { result . first . inspect }
4542 result . first
4643 else
47- # log_debug("=> array result: # {result.inspect}")
44+ log_debug ( "=> array result" , depth : log_depth . to_i ) { result . inspect }
4845 result
4946 end
5047 when Hash
@@ -55,6 +52,7 @@ def compact(element,
5552
5653 # Revert any previously type-scoped (non-preserved) context
5754 if context . previous_context && !element . key? ( '@value' ) && element . keys != %w( @id )
55+ log_debug ( "revert ec" , depth : log_depth . to_i ) { "previous context: #{ context . previous_context . inspect } " }
5856 self . context = context . previous_context
5957 end
6058
@@ -63,20 +61,22 @@ def compact(element,
6361 if td && !td . context . nil?
6462 self . context = context . parse ( td . context ,
6563 override_protected : true )
64+ log_debug ( "prop-scoped" , depth : log_depth . to_i ) { "context: #{ self . context . inspect } " }
6665 end
6766
6867 if element . key? ( '@id' ) || element . key? ( '@value' )
6968 result = context . compact_value ( property , element , base : @options [ :base ] )
7069 if !result . is_a? ( Hash ) || context . coerce ( property ) == '@json'
71- # log_debug("") {"=> scalar result: #{result.inspect}"}
70+ log_debug ( "" , depth : log_depth . to_i ) { "=> scalar result: #{ result . inspect } " }
7271 return result
7372 end
7473 end
7574
7675 # If expanded property is @list and we're contained within a list container, recursively compact this item to an array
7776 if list? ( element ) && context . container ( property ) . include? ( '@list' )
7877 return compact ( element [ '@list' ] , base : base ,
79- property : property )
78+ property : property ,
79+ log_depth : log_depth . to_i + 1 )
8080 end
8181
8282 inside_reverse = property == '@reverse'
@@ -90,11 +90,12 @@ def compact(element,
9090 each do |term |
9191 term_context = input_context . term_definitions [ term ] . context if input_context . term_definitions [ term ]
9292 self . context = context . parse ( term_context , propagate : false ) unless term_context . nil?
93+ log_debug ( "type-scoped" , depth : log_depth . to_i ) { "context: #{ self . context . inspect } " }
9394 end
9495
9596 element . keys . opt_sort ( ordered : @options [ :ordered ] ) . each do |expanded_property |
9697 expanded_value = element [ expanded_property ]
97- # log_debug("") {"#{expanded_property}: #{expanded_value.inspect}"}
98+ log_debug ( "" , depth : log_depth . to_i ) { "#{ expanded_property } : #{ expanded_value . inspect } " }
9899
99100 if expanded_property == '@id'
100101 compacted_value = Array ( expanded_value ) . map do |expanded_id |
@@ -124,8 +125,9 @@ def compact(element,
124125
125126 if expanded_property == '@reverse'
126127 compacted_value = compact ( expanded_value , base : base ,
127- property : '@reverse' )
128- #log_debug("@reverse") {"compacted_value: #{compacted_value.inspect}"}
128+ property : '@reverse' ,
129+ log_depth : log_depth . to_i + 1 )
130+ log_debug ( "@reverse" , depth : log_depth . to_i ) { "compacted_value: #{ compacted_value . inspect } " }
129131 # handle double-reversed properties
130132 compacted_value . each do |prop , value |
131133 if context . reverse? ( prop )
@@ -137,7 +139,7 @@ def compact(element,
137139
138140 unless compacted_value . empty?
139141 al = context . compact_iri ( '@reverse' )
140- # log_debug("") {"remainder: #{al} => #{compacted_value.inspect}"}
142+ log_debug ( "" , depth : log_depth . to_i ) { "remainder: #{ al } => #{ compacted_value . inspect } " }
141143 result [ al ] = compacted_value
142144 end
143145 next
@@ -146,8 +148,9 @@ def compact(element,
146148 if expanded_property == '@preserve'
147149 # Compact using `property`
148150 compacted_value = compact ( expanded_value , base : base ,
149- property : property )
150- #log_debug("@preserve") {"compacted_value: #{compacted_value.inspect}"}
151+ property : property ,
152+ log_depth : log_depth . to_i + 1 )
153+ log_debug ( "@preserve" , depth : log_depth . to_i ) { "compacted_value: #{ compacted_value . inspect } " }
151154
152155 unless compacted_value . is_a? ( Array ) && compacted_value . empty?
153156 result [ '@preserve' ] = compacted_value
@@ -156,14 +159,14 @@ def compact(element,
156159 end
157160
158161 if expanded_property == '@index' && context . container ( property ) . include? ( '@index' )
159- # log_debug("@index") {"drop @index"}
162+ log_debug ( "@index" , depth : log_depth . to_i ) { "drop @index" }
160163 next
161164 end
162165
163166 # Otherwise, if expanded property is @direction, @index, @value, or @language:
164167 if EXPANDED_PROPERTY_DIRECTION_INDEX_LANGUAGE_VALUE . include? ( expanded_property )
165168 al = context . compact_iri ( expanded_property , vocab : true )
166- # log_debug(expanded_property) {"#{al} => #{expanded_value.inspect}"}
169+ log_debug ( expanded_property , depth : log_depth . to_i ) { "#{ al } => #{ expanded_value . inspect } " }
167170 result [ al ] = expanded_value
168171 next
169172 end
@@ -211,8 +214,9 @@ def compact(element,
211214 end
212215
213216 compacted_item = compact ( value , base : base ,
214- property : item_active_property )
215- #log_debug("") {" => compacted key: #{item_active_property.inspect} for #{compacted_item.inspect}"}
217+ property : item_active_property ,
218+ log_depth : log_depth . to_i + 1 )
219+ log_debug ( "" , depth : log_depth . to_i ) { " => compacted key: #{ item_active_property . inspect } for #{ compacted_item . inspect } " }
216220
217221 # handle @list
218222 if list? ( expanded_item )
@@ -315,7 +319,8 @@ def compact(element,
315319 if compacted_item . keys . length == 1 && expanded_item . keys . include? ( '@id' )
316320 compacted_item = compact ( { '@id' => expanded_item [ '@id' ] } ,
317321 base : base ,
318- property : item_active_property )
322+ property : item_active_property ,
323+ log_depth : log_depth . to_i + 1 )
319324 end
320325 compacted_item
321326 end
@@ -332,7 +337,7 @@ def compact(element,
332337 result
333338 else
334339 # For other types, the compacted value is the element value
335- # log_debug("compact") {element.class.to_s}
340+ log_debug ( "compact" , depth : log_depth . to_i ) { element . class . to_s }
336341 element
337342 end
338343
0 commit comments