module SHACL::Refinements
Localized refinements to externally defined classes
Public Instance Methods
deep_merge(second)
click to toggle source
@!parse
# Refinements on Hash class Hash ## # Deep merge two hashes folding array values together. # # @param [Hash] second # @return [Hash] def deep_merge(second); end end
# File lib/shacl/refinements.rb, line 16 def deep_merge(second) merger = ->(_, v1, v2) {Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : Array === v1 && Array === v2 ? v1 | v2 : v2.nil? ? v1 : v2 } merge(second.to_h, &merger) end
each_statement(&block)
click to toggle source
# File lib/shacl/refinements.rb, line 37 def each_statement(&block) @subject = RDF::Node.new elements = operands.map do |op| if op.respond_to?(:each_statement) op.each_statement(&block) op.subject else op end end list = RDF::List(*elements) list.each_statement(&block) block.call(RDF::Statement(@subject, RDF::Vocab::SHACL.alternativePath, list.subject)) end