Class: Lingo::Attendee::HalFilter

Inherits:
Lingo::Attendee show all
Defined in:
lib/lingo/attendee/hal_filter.rb

Constant Summary

Constants inherited from Lingo::Attendee

DEFAULT_SKIP, TERMINALS

Constants included from Language

Language::CHAR_PUNCT, Language::LA_SORTORDER, Language::TA_ABBREVIATION, Language::TA_HELP, Language::TA_HTML, Language::TA_NUMBER, Language::TA_OTHER, Language::TA_PUNCTUATION, Language::TA_SKIP, Language::TA_SPACE, Language::TA_URL, Language::TA_WIKI, Language::TA_WORD, Language::WA_COMPOUND, Language::WA_IDENTIFIED, Language::WA_MULTIWORD, Language::WA_SEQUENCE, Language::WA_UNKMULPART, Language::WA_UNKNOWN, Language::WA_UNSET

Instance Attribute Summary

Attributes inherited from Lingo::Attendee

#lingo, #subscribers

Instance Method Summary collapse

Methods inherited from Lingo::Attendee

#command, #forward, #initialize

Constructor Details

This class inherits a constructor from Lingo::Attendee

Instance Method Details

#control(cmd) ⇒ Object



50
51
52
53
54
55
# File 'lib/lingo/attendee/hal_filter.rb', line 50

def control(cmd, *)
  case cmd
    when :EOL       then :skip_command
    when *TERMINALS then send_vectors unless @hal.empty?
  end
end

#initObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/lingo/attendee/hal_filter.rb', line 33

def init
  require_lib('hal4r')

  @lex  = get_re('lexicals', '[sy]')
  @skip = get_ary('skip', DEFAULT_SKIP, :upcase)

  @norm = get_key('norm', true)
  @sep  = get_key('sep', '^')
  @min  = get_flo('min', false)
  @dim  = get_int('dim', 2)

  @sort = get_key('sort', false)
  @sort.downcase! if @sort.respond_to?(:downcase!)

  @hal = Hal4R.new([], get_int('window-size', Hal4R::DEFAULT_WINDOW_SIZE))
end

#process(obj) ⇒ Object



57
58
59
60
61
# File 'lib/lingo/attendee/hal_filter.rb', line 57

def process(obj)
  obj.is_a?(Word) && !@skip.include?(obj.attr) &&
    # TODO: which lexical to select? (currently: first)
    obj.lex_form(@lex) { |form| @hal << Unicode.downcase(form) }
end