class CompositeSexpProcessor
Implements the Composite pattern on SexpProcessor
. Need we say more?
Yeah… probably. Implements a SexpProcessor
of SexpProcessors so you can easily chain multiple to each other. At some stage we plan on having all of them run process
and but only ever output something when generate
is called, allowing for deferred final processing.
Attributes
processors[R]
The list o’ processors to run.
Public Instance Methods
<<(processor)
click to toggle source
Add a processor
to the list of processors to run.
# File lib/composite_sexp_processor.rb, line 27 def << processor raise ArgumentError, "Can only add sexp processors" unless SexpProcessor === processor || processor.respond_to?(:process) @processors << processor end
on_error_in(node_type, &block)
click to toggle source
# File lib/composite_sexp_processor.rb, line 44 def on_error_in node_type, &block @processors.each do |processor| processor.on_error_in(node_type, &block) end end
process(exp)
click to toggle source
Run exp
through all of the processors, returning the final result.
# File lib/composite_sexp_processor.rb, line 37 def process exp @processors.each do |processor| exp = processor.process(exp) end exp end