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

Version Path
krikri-0.15.2 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.15.1 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.15.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.14.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.13.2 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.13.1 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.13.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.12.4 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.12.3 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.12.1 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.12.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.12.0.pre.rc.1 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.11.2 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.11.1 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.11.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.10.1 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.10.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.9.0 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.8.9 lib/krikri/mapping_dsl/rdf_subjects.rb
krikri-0.8.8 lib/krikri/mapping_dsl/rdf_subjects.rb