Sha256: a29ebfc885a679fb89a65a61e02a39d2134782fd8ea66bbf8a7a24ce2a602764

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

require 'rbbt-util'
require 'rbbt/entity'

module DocID
  extend Entity
  self.annotation :corpus

  class << self
    attr_accessor :default_corpus
  end

  def id
    self
  end

  def corpus
    annotation_values[:corpus] || DocID.default_corpus
  end

  property :to do |type|
    namespace, code = self.split(":")
    DocID.setup([namespace, code, "title"] * ":", :corpus => corpus)
  end

  property :document => :both do
    if Array === self
      namespace, id, type = nil, nil, nil
      docs = self.collect do |docid|
        self.corpus[docid]
      end
      Document.setup(docs, :corpus => corpus)
    else
      text = self.corpus[self]
      namespace, id, type = self.split(":")
      Document.setup(text, :namespace => namespace, :code => id, :type => type, :corpus => corpus)
    end
  end
end

module Document
  extend Entity
  self.annotation :namespace, :code, :type, :corpus

  property :docid do |corpus=nil|
    digest = Misc.digest(self)
    corpus = self.corpus if corpus.nil?

    DocID.setup([namespace, code, type, digest] * ":", :corpus => corpus)
  end

  property :to do |type|
    docid.to(type).document
  end

  alias id docid
end

#class String
#  def docid
#    digest = Misc.digest(self)
#    ["STRING", digest, nil, nil] * ":"
#  end
#end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rbbt-text-1.5.2 lib/rbbt/document.rb
rbbt-text-1.5.1 lib/rbbt/document.rb
rbbt-text-1.5.0 lib/rbbt/document.rb
rbbt-text-1.4.0 lib/rbbt/document.rb
rbbt-text-1.3.11 lib/rbbt/document.rb
rbbt-text-1.3.10 lib/rbbt/document.rb