class Docks::Process
Public Class Methods
process(item)
click to toggle source
# File lib/docks/process.rb, line 6 def self.process(item) case item when Containers::Symbol then item = process_symbol(item) when Containers::Pattern then process_pattern(item) when Containers::PatternLibrary then process_pattern_library(item) end item end
register_pattern_library_processor(hook = :middle, &block)
click to toggle source
# File lib/docks/process.rb, line 20 def self.register_pattern_library_processor(hook = :middle, &block) @@pattern_library_processors[hook] << block unless @@pattern_library_processors[hook].include?(block) end
register_pattern_processor(hook = :middle, &block)
click to toggle source
# File lib/docks/process.rb, line 16 def self.register_pattern_processor(hook = :middle, &block) @@pattern_processors[hook] << block unless @@pattern_processors[hook].include?(block) end
Private Class Methods
clean()
click to toggle source
# File lib/docks/process.rb, line 26 def self.clean @@pattern_processors = { early: [], middle: [], late: [] } @@pattern_library_processors = { early: [], middle: [], late: [] } end
process_pattern(pattern)
click to toggle source
# File lib/docks/process.rb, line 48 def self.process_pattern(pattern) [:early, :middle, :late].each do |hook| @@pattern_processors[hook].each { |processor| processor.call(pattern) } end end
process_pattern_library(pattern_library)
click to toggle source
# File lib/docks/process.rb, line 54 def self.process_pattern_library(pattern_library) [:early, :middle, :late].each do |hook| @@pattern_library_processors[hook].each { |processor| processor.call(pattern_library) } end end
process_symbol(symbol)
click to toggle source
# File lib/docks/process.rb, line 31 def self.process_symbol(symbol) # For when the initial symbol type was overwritten if symbol.symbol_type != symbol.class.type symbol = Containers.container_for(symbol.symbol_type).new(symbol.to_h) end # Allow tags to change the symbol's type tags = symbol.tags tags.each do |tag| next unless tag.respond_to?(:process) new_symbol = tag.process(symbol) symbol = new_symbol if new_symbol.kind_of?(Containers::Symbol) end symbol end