Class: Moory::Filter

Inherits:
Logistic::Unit show all
Defined in:
lib/moory/filter.rb

Constant Summary collapse

IGNORE =
[' ', "\t", "\n"]
DEFAULT_CONSUMER =
$stdout.method(:puts)
IGNORE_FOREIGN =
proc { |c| "Warning! Ignoring unknown character: #{c}" }

Instance Attribute Summary

Attributes inherited from Logistic::Unit

#quarantine

Attributes included from Efferent

#repertoire

Attributes included from Afferent

#state, #transitions

Instance Method Summary collapse

Methods inherited from Logistic::Unit

#prime

Methods included from Afferent

#awaits, #understand?

Constructor Details

#initialize(rules:, consumer: DEFAULT_CONSUMER, quarantine: IGNORE_FOREIGN) ⇒ Filter

Returns a new instance of Filter.



7
8
9
10
11
12
# File 'lib/moory/filter.rb', line 7

def initialize(rules:, consumer:DEFAULT_CONSUMER, quarantine:IGNORE_FOREIGN)
  @buffer = ""
  @consumer = consumer
  @quarantine = quarantine
  super(rules: rules, quarantine:quarantine)
end

Instance Method Details

#configure(rules) ⇒ Object



14
15
16
17
# File 'lib/moory/filter.rb', line 14

def configure(rules)
  super
  repertoire.learn(name: 'produce', item: method(:produce))
end

#issue(stimulus) ⇒ Object



26
27
28
29
30
31
# File 'lib/moory/filter.rb', line 26

def issue(stimulus)
  return if IGNORE.include?(stimulus)
  
  @buffer << stimulus
  super
end

#produce(output) ⇒ Object



19
20
21
22
23
24
# File 'lib/moory/filter.rb', line 19

def produce(output)
  @consumer.call(
    @buffer 
  )
  @buffer = ""
end