Sha256: d080043838329cd56139f0cfdfea0573f46f661bedeec3bb090a2d0fd34b4a57

Contents?: true

Size: 786 Bytes

Versions: 8

Compression:

Stored size: 786 Bytes

Contents

module PubliSci
  class Prov
    module Dereferencable
      def dereference
        self.map{|x|
          if x.is_a? Symbol
            raise "Unknown#{method.capitalize}: #{x}" unless Prov.registry[method.to_sym][x]
            Prov.registry[method.to_sym][x]
          else
            x
          end
        }
      end

      def method
        raise "must be overridden"
      end

      def [](index)
        self.dereference.fetch(index)
        # if self.fetch(index).is_a? Symbol
        #   raise "UnknownEntity: #{self.fetch(index)}" unless Prov.entities[self.fetch(index)]
        #   Prov.entities[self.fetch(index)]
        # else
        #   self.fetch(index)
        # end
      end

      def map_(&blk)
        self.dereference.map(&blk)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
publisci-0.1.6 lib/publisci/mixins/dereferencable.rb
publisci-0.1.5 lib/publisci/mixins/dereferencable.rb
publisci-0.1.4 lib/publisci/mixins/dereferencable.rb
publisci-0.1.3 lib/publisci/mixins/dereferencable.rb
publisci-0.1.2 lib/bio-publisci/mixins/dereferencable.rb
bio-publisci-0.1.0 lib/bio-publisci/mixins/dereferencable.rb
bio-publisci-0.0.8 lib/bio-publisci/mixins/dereferencable.rb
bio-publisci-0.0.7 lib/bio-publisci/mixins/dereferencable.rb