Class: CompositeSexpProcessor

### Home Classes Methods

### In Files

- lib/composite_sexp_processor.rb

### Parent

SexpProcessor

### Methods

- #<<
- #on_error_in
- #process

### Files

- History.txt
- Manifest.txt
- README.txt

### Class/Module Index

Quicksearch

- SexpProcessor
- SexpProcessor::Environment
- CompositeSexpProcessor
- Examples
- NotEmptyError
- Object
- ParseTreeTestCase
- Sexp
- SexpAny
- SexpInterpreter
- SexpMatchSpecial
- SexpMatchSpecials
- SexpProcessorError
- SexpTypeError
- Unique
- UnknownNodeError
- UnsupportedNodeError

No matching classes.

# 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.