Sha256: 09ad84e50fb83aba54a03a744a5123ba80a3af0bfd3fe6eac59fde57024be7d6

Contents?: true

Size: 882 Bytes

Versions: 7

Compression:

Stored size: 882 Bytes

Contents

module Sufia
  module Noid
    extend ActiveSupport::Concern

    ## This overrides the default behavior, which is to ask Fedora for a pid
    # @see ActiveFedora::Sharding.assign_pid
    def assign_pid
      Sufia::IdService.mint
    end

    def noid
      Noid.noidify(id)
    end

    # Redefine this for more intuitive keys in Redis
    def to_param
      noid
    end

    class << self
      def noidify(identifier)
        String(identifier).split(":").last
      end

      # Create a pairtree like path for the given identifier
      def treeify(identifier)
        (identifier.scan(/..?/).first(4) + [identifier]).join('/')
      end

      def namespaceize(identifier)
        return identifier if identifier.include?(':')
        "#{namespace}:#{identifier}"
      end

      protected

      def namespace
        Sufia.config.id_namespace
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
sufia-6.0.0.rc2 sufia-models/app/services/sufia/noid.rb
sufia-models-6.0.0.rc2 app/services/sufia/noid.rb
sufia-6.0.0.rc1 sufia-models/app/services/sufia/noid.rb
sufia-models-6.0.0.rc1 app/services/sufia/noid.rb
sufia-6.0.0.beta1 sufia-models/app/services/sufia/noid.rb
sufia-models-6.0.0.beta1 app/services/sufia/noid.rb
sufia-models-5.0.0.beta1 app/services/sufia/noid.rb