class Treebank::Sentence

Attributes

elliptic_nodes[R]

Public Class Methods

new(sentence_node) click to toggle source
# File lib/treebank/sentence.rb, line 8
def initialize(sentence_node)
  @node = sentence_node
  @last_id = @next_id = last_id
  @elliptic_nodes = {}
end

Public Instance Methods

add_ellipsis(attrs, string) click to toggle source
# File lib/treebank/sentence.rb, line 14
def add_ellipsis(attrs, string)
  id = next_id
  all_attrs = {
    id: id,
    insertion_id: get_insertion_id,
    form: "[#{string}]"
  }.merge(attrs)

  new_node = new_word(all_attrs)
  @elliptic_nodes[string] = id

  @node.add_child(indent)
  @node.add_child(new_node)
  @node.add_child(new_line)
  new_node
end
ctsify() click to toggle source
# File lib/treebank/sentence.rb, line 31
def ctsify
  doc_id  = @node['document_id']
  cts_urn = CtsMap.doc_id_to_cts_urn(doc_id)
  return unless cts_urn

  @node['document_id'] = cts_urn
  subdoc = @node['subdoc']
  @node['subdoc'] = subdoc.gsub(/\D/, ' ').split.join('.')
end

Private Instance Methods

get_insertion_id() click to toggle source
# File lib/treebank/sentence.rb, line 61
def get_insertion_id
  "#{last_id.to_s.rjust(4, '0')}#{suffix}"
end
indent() click to toggle source
# File lib/treebank/sentence.rb, line 71
def indent
  Nokogiri::XML::Text.new("  ", @node)
end
last_id() click to toggle source
# File lib/treebank/sentence.rb, line 47
def last_id
  return @last_id if @last_id
  last_word = @node.xpath('word').last
  @last_id = last_word['id'].to_i
end
new_line() click to toggle source
# File lib/treebank/sentence.rb, line 75
def new_line
  Nokogiri::XML::Text.new("\n  ", @node)
end
new_word(attrs) click to toggle source
# File lib/treebank/sentence.rb, line 65
def new_word(attrs)
  word = Nokogiri::XML::Node.new('word', @node)
  attrs.each { |k, v| word[k] = v }
  word
end
next_id() click to toggle source
# File lib/treebank/sentence.rb, line 43
def next_id
  update_last_id
end
suffix() click to toggle source
# File lib/treebank/sentence.rb, line 57
def suffix
  @suffix = @suffix ? Alphabet.next_letter(@suffix) : 'e'
end
update_last_id() click to toggle source
# File lib/treebank/sentence.rb, line 53
def update_last_id
  @next_id += 1
end