Sha256: 953c010b315062d405ef6c9c8a7763546bef5852189d238c91c3a8adcfcaf9ab

Contents?: true

Size: 967 Bytes

Versions: 1

Compression:

Stored size: 967 Bytes

Contents

require 'rbbt/text/segment'

module SegmentWithDocid 
  extend Annotation

  self.annotation :docid

  def masked?
    self[0..5] == "MASKED"
  end

  def mask
    return self if masked?
    raise "Cannot mask an array of elements, they must be masked individually" if Array === self
    raise "Cannot mask a segment with no docid" if not self.respond_to? :docid or docid.nil?
    raise "Cannot mask a segment with no offset" if offset.nil?
    textual_position = ["MASKED", length] * ":"
    self.replace(textual_position)
    self
  end

  def unmasked_text
    return self unless masked?
    tag, length = self.split(":")
    Document.setup(docid).text[offset.to_i..(offset.to_i+length.to_i-1)]
  end

  def unmask
    return self unless masked?
    self.replace(unmasked_text)
    self
  end

  def str_length
    self.length
  end

  def masked_length
    self.split(":").last.to_i
  end

  def segment_length
    masked? ? masked_length : str_length
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rbbt-text-1.1.9 lib/rbbt/text/segment/docid.rb