class FixerUpper::EngineRegistry
Public Class Methods
new()
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 3 def initialize @engines = {} end
Public Instance Methods
[](engine_name)
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 28 def [](engine_name) @engines[engine_name.to_s] end
engine?(engine)
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 24 def engine?(engine) @engines.key?(engine.to_s) end
register(*names, engine:, options: {})
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 7 def register(*names, engine:, options: {}) if definitely_like_tilt_template?(engine) register_tilt(*names, engine: engine, options: options) else register_fixer_upper(names, engine, options) end end
register_tilt(*names, engine:, options: {})
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 15 def register_tilt(*names, engine:, options: {}) engine_bridge = TiltTemplateClassBridge.new(engine, options) names.each do |name| register_single(name, engine_bridge) end end
Private Instance Methods
definitely_like_tilt_template?(engine)
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 34 def definitely_like_tilt_template?(engine) engine < Tilt::Template end
engine_class_name(engine)
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 38 def engine_class_name(engine) if engine.is_a?(TiltTemplateClassBridge) engine.tilt_engine_class.name else engine.name end end
register_fixer_upper(names, engine, options)
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 46 def register_fixer_upper(names, engine, options) if options.any? raise Error::EngineDoesntAcceptOptions, \ "Only Tilt templates can accept options" end names.each do |name| register_single(name, engine) end end
register_single(name, engine)
click to toggle source
# File lib/fixer_upper/engine_registry.rb, line 57 def register_single(name, engine) if engine?(name) existing_engine = self[name] raise Error::MultipleEnginesForOneName, \ "Trying to register `#{engine_class_name(engine)}` " \ "to the name `#{name}`, " \ "but `#{engine_class_name(existing_engine)}` is already registered." end @engines[name.to_s] = engine end