class Lingo::Attendee::AnalysisFilter

Constants

FIELDS

Public Instance Methods

control(cmd, *) click to toggle source
# File lib/lingo/attendee/analysis_filter.rb, line 47
def control(cmd, *)
  :skip_command if cmd == :EOL
end
init() click to toggle source
# File lib/lingo/attendee/analysis_filter.rb, line 43
def init
  @csv, @header = CSV.new('', row_sep: ''), FIELDS.keys
end
process(obj, *) click to toggle source
# File lib/lingo/attendee/analysis_filter.rb, line 51
def process(obj, *)
  forward_row(@header.tap { @header = nil }) if @header

  obj.is_a?(Token) ?
    forward_obj(obj, obj, obj, obj) : begin
  tok = obj.token
    forward_obj(obj, nil, tok, tok, obj, obj)
  obj.lexicals.each { |lex|
    forward_obj(lex, nil, tok, tok, lex, obj) }
  end
end

Private Instance Methods

forward_obj(*args) click to toggle source
# File lib/lingo/attendee/analysis_filter.rb, line 65
def forward_obj(*args)
  forward_row(FIELDS.map.with_index { |(_, method), index|
    arg = args[index] and arg.send(method) })
end
forward_row(row) click to toggle source
# File lib/lingo/attendee/analysis_filter.rb, line 70
def forward_row(row)
  forward(@csv.add_row(row).string.dup)
  @csv.string.clear
  @csv.rewind
end