Class: Lingo::DeferredAttendee

Inherits:
Attendee
  • Object
show all
Defined in:
lib/lingo/deferred_attendee.rb

Direct Known Subclasses

Attendee::LsiFilter

Constant Summary

Constants inherited from Attendee

Attendee::DEFAULT_SKIP, Attendee::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 Attendee

#lingo, #subscribers

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Attendee

#command, #forward

Constructor Details

#initialize(config, lingo) ⇒ DeferredAttendee

Returns a new instance of DeferredAttendee.



47
48
49
50
# File 'lib/lingo/deferred_attendee.rb', line 47

def initialize(config, lingo)
  self.class.enhance(self)
  super
end

Class Method Details

.enhance(base) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/lingo/deferred_attendee.rb', line 31

def self.enhance(base)
  base.instance_variable_set(:@deferr_buffer, [])

  def base.command(*args)
    @deferr_buffer << buf = [args]

    args.first != :EOT ? buf << control_deferred(*args) :
      flush_deferred { |block|
        @deferr_buffer.each { |command_args, control_args|
          super(*command_args)
          block[*control_args] if control_args
        }
      }
  end
end

Instance Method Details

#control_deferred(cmd) ⇒ Object

Raises:

  • (NotImplementedError)


52
53
54
# File 'lib/lingo/deferred_attendee.rb', line 52

def control_deferred(cmd, *)
  raise NotImplementedError, 'must be implemented by subclass'
end

#flush_deferred(&block) ⇒ Object

Raises:

  • (NotImplementedError)


56
57
58
# File 'lib/lingo/deferred_attendee.rb', line 56

def flush_deferred(&block)
  raise NotImplementedError, 'must be implemented by subclass'
end