Sha256: faa3d7fca7a7e065b31495a9b1753e50807cf74aef66cd3ac73566d529fe278f
Contents?: true
Size: 1.05 KB
Versions: 4
Compression:
Stored size: 1.05 KB
Contents
module Brief class Publisher::HandlerManager attr_reader :publisher, :document def initialize(publisher, document) @publisher = publisher @document = document end def parser @parser ||= document.parser end def handlers find_parent = lambda do |parent_id| parser.tree.find(parent_id) end get_manager = -> { self } @handlers ||= publisher.order.inject({}) do |memo, level| config = publisher.config_for_level(level) klass_name = config.publish.klass klass = klass_name.nil? ? Brief::Handlers::Base : (klass_name.to_s.constantize rescue Brief::Handlers::Base) memo[level] = parser.tree.level(level).map do |element| obj = klass.new(element) obj.parent(&find_parent) obj.get_manager(&get_manager) obj end memo end end def run publisher.order.each do |level| objects = handlers[level] objects.each(&:handle!) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems