Sha256: b5801331ae7e50bd8f2a50e81b3e50846f22f377f7906b93d49b13c7366624e4

Contents?: true

Size: 1.54 KB

Versions: 14

Compression:

Stored size: 1.54 KB

Contents

module ActiveFedora
  module RdfNode
    class TermProxy

      attr_reader :graph, :subject, :predicate, :options

      delegate :class, :to_s, :==, :kind_of?, :each, :each_with_index, :map,
               :empty?, :as_json, :is_a?, :to_ary, :to_a, :inspect, :first,
               :last, :include?, :count, :size, :join, :[], :to => :values

      # @param graph RDF::Graph
      # @param subject RDF::URI
      # @param options Hash
      def initialize(graph, subject, predicate, options)
        @graph = graph
        @subject = subject
        @predicate = predicate
        @options = options
      end

      def build
        new_subject = RDF::Node.new
        graph.graph.insert([subject, predicate, new_subject])
        graph.target_class(predicate).new(graph.graph, new_subject)
      end

      def <<(*values)
        values.each { |value| graph.append(subject, predicate, value) }
        values
      end

      def delete(*values)
        values.each do |value| 
          graph.delete_predicate(subject, predicate, value)
        end

        values
      end

      def values
        values = []

        graph.query(subject, predicate).each do |solution|
          v = solution.value
          v = v.to_s if v.is_a? RDF::Literal
          if options[:type] == :date
            v = Date.parse(v)
          end
          values << v
        end
        if options[:class_name]
          values = values.map{ |found_subject| graph.target_class(predicate).new(graph.graph, found_subject)}
        end
        
        values
      end

    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
active-fedora-5.7.1 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-5.7.0 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.1.0 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-5.6.3 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc7 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc6 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc5 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc4 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc3 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc2 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-6.0.0.rc1 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-5.6.2 lib/active_fedora/rdf_node/term_proxy.rb
active-fedora-5.6.1 lib/active_fedora/rdf_node/term_proxy.rb