Sha256: fa5389b4065faa3a999f5bc78121e97887af483c18eb9a285c012fe857f38207
Contents?: true
Size: 1.85 KB
Versions: 3
Compression:
Stored size: 1.85 KB
Contents
module Docks class Process @@pattern_processors = { early: [], middle: [], late: [] } @@pattern_library_processors = { early: [], middle: [], late: [] } 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 def self.register_pattern_processor(hook = :middle, &block) @@pattern_processors[hook] << block unless @@pattern_processors[hook].include?(block) end def self.register_pattern_library_processor(hook = :middle, &block) @@pattern_library_processors[hook] << block unless @@pattern_library_processors[hook].include?(block) end private def self.clean @@pattern_processors = { early: [], middle: [], late: [] } @@pattern_library_processors = { early: [], middle: [], late: [] } end 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 def self.process_pattern(pattern) [:early, :middle, :late].each do |hook| @@pattern_processors[hook].each { |processor| processor.call(pattern) } end end 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
docks_app-0.0.3 | lib/docks/process.rb |
docks_app-0.0.2 | lib/docks/process.rb |
docks_app-0.0.1 | lib/docks/process.rb |