Sha256: 5f4a63d452d1dc1b9d1614fce26ae620f42d000aa283211c0582407a611f817b
Contents?: true
Size: 953 Bytes
Versions: 17
Compression:
Stored size: 953 Bytes
Contents
module Inesita module Injection def init; end def with_root_component(component) @root_component = component self end def inject @root_component.injections.each do |name, instance| define_singleton_method(name) do instance end end self end attr_reader :injections def init_injections @injections ||= {} self.class.injections.each do |name, clazz| if clazz.included_modules.include?(Inesita::Injection) @injections[name] = clazz .new .with_root_component(@root_component) else raise Error, "Invalid #{clazz} class, should mixin Inesita::Injection" end end @injections.each do |key, instance| instance.inject instance.init end end def render! Browser.animation_frame do @root_component.render_if_root end end end end
Version data entries
17 entries across 17 versions & 1 rubygems