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

Version Path
inesita-1.0.pre.9 opal/inesita/injection.rb
inesita-1.0.pre.8 opal/inesita/injection.rb
inesita-1.0.pre.7 opal/inesita/injection.rb
inesita-1.0.pre.6 opal/inesita/injection.rb
inesita-1.0.pre.5 opal/inesita/injection.rb
inesita-1.0.pre.4 opal/inesita/injection.rb
inesita-1.0.pre.3 opal/inesita/injection.rb
inesita-1.0.pre.2 opal/inesita/injection.rb
inesita-1.0.pre.1 opal/inesita/injection.rb
inesita-0.9.2 opal/inesita/injection.rb
inesita-0.9.1 opal/inesita/injection.rb
inesita-0.9.0 opal/inesita/injection.rb
inesita-0.8.2 opal/inesita/injection.rb
inesita-0.8.1 opal/inesita/injection.rb
inesita-0.7.0 opal/inesita/injection.rb
inesita-0.6.1 opal/inesita/injection.rb
inesita-0.6.0 opal/inesita/injection.rb