Sha256: 19fe3c62b76752ebf712f1cebfb54de2d955fc378919648ea50837bb5d80dd05
Contents?: true
Size: 1.01 KB
Versions: 52
Compression:
Stored size: 1.01 KB
Contents
module Krikri::MappingDSL ## # Methods for setting URI/ActiveTriples #rdf_subject values in MappingDSL module RdfSubjects def uri(value, &block) properties.delete_if { |prop| prop.is_a? SubjectDeclaration } properties << SubjectDeclaration.new(nil, value, &block) end class SubjectDeclaration < Krikri::MappingDSL::PropertyDeclaration def to_proc block = @block if @block value = @value lambda do |target, record| value = value.call(record) if value.respond_to? :call return target.rdf_subject if Array(value).empty? raise "Error mapping #{record}, #{target}\t" \ "URI must be set to a single value; got #{value}" if Array(value).count != 1 value = value.first if value.is_a? Enumerable return target.send(setter, value) unless block target.send(setter, instance_exec(value, &block)) end end private def setter :set_subject! end end end end
Version data entries
52 entries across 52 versions & 1 rubygems