# File lib/lingo/buffered_attendee.rb, line 30 def initialize(config, lingo) @buffer, @inserts = [], [] super end
# File lib/lingo/buffered_attendee.rb, line 37 def process(obj) @buffer << obj process_buffer if process_buffer? end
# 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
# 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
# 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
# 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
# File lib/lingo/buffered_attendee.rb, line 72 def process_buffer raise NotImplementedError end
# 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
# File lib/lingo/buffered_attendee.rb, line 63 def valid_tokens_in_buffer @buffer.count { |item| item.form != CHAR_PUNCT } end