class Lingo::BufferedAttendee

Public Class Methods

new(config, lingo) click to toggle source
# File lib/lingo/buffered_attendee.rb, line 30
def initialize(config, lingo)
  @buffer, @inserts = [], []
  super
end

Protected Instance Methods

process(obj) click to toggle source
# File lib/lingo/buffered_attendee.rb, line 37
def process(obj)
  @buffer << obj
  process_buffer if process_buffer?
end

Private Instance Methods

control_multi(cmd, dic = @dic) click to toggle source
# File lib/lingo/buffered_attendee.rb, line 76
def control_multi(cmd, dic = @dic)
  report_on(cmd, dic)

  if [STR_CMD_RECORD, STR_CMD_EOF].include?(cmd)
    @eof_handling = true

    while valid_tokens_in_buffer > 1
      process_buffer
    end

    forward_number_of_token

    @eof_handling = false
  end
end
form_at(index, klass = WordForm) click to toggle source
# File lib/lingo/buffered_attendee.rb, line 44
def form_at(index, klass = WordForm)
  obj = @buffer[index]
  obj.form if obj.is_a?(klass)
end
forward_buffer() click to toggle source
# File lib/lingo/buffered_attendee.rb, line 49
def forward_buffer
  @inserts.sort_by!(&:first).each { |i| @buffer.insert(*i) }.clear
  @buffer.each(&method(:forward)).clear
end
forward_number_of_token(len = default = @buffer.size, punct = !default) click to toggle source
# File lib/lingo/buffered_attendee.rb, line 54
def forward_number_of_token(len = default = @buffer.size, punct = !default)
  begin
    unless @buffer.empty?
      forward(item = @buffer.delete_at(0))
      len -= 1 unless punct && item.form == CHAR_PUNCT
    end
  end while len > 0
end
process_buffer() click to toggle source
# File lib/lingo/buffered_attendee.rb, line 72
def process_buffer
  raise NotImplementedError
end
process_buffer?() click to toggle source
# File lib/lingo/buffered_attendee.rb, line 67
def process_buffer?
  !instance_variable_defined?(:@expected_tokens_in_buffer) ||
  valid_tokens_in_buffer >= @expected_tokens_in_buffer
end
valid_tokens_in_buffer() click to toggle source
# File lib/lingo/buffered_attendee.rb, line 63
def valid_tokens_in_buffer
  @buffer.count { |item| item.form != CHAR_PUNCT }
end