Sha256: 7e2528e97e053578e45c232fe5036bcdf45955fea79e948a118cc48ff45147a2

Contents?: true

Size: 974 Bytes

Versions: 11

Compression:

Stored size: 974 Bytes

Contents

require 'hashie/mash'

module Alula
  class Plugin
    def self.register(name, klass); plugins[name.to_s] = klass; end
    def self.plugins; @@plugins ||= {}; end
    def plugins; self.class.plugins; end
    
    def self.load(name, options)
      if plugins[name] and !(!!options == options and !options)
        plugin = plugins[name]
        return plugin if plugin.install(options || Hashie::Mash.new)
      end
    end
    
    def self.addons; @@addons ||= Hash.new {|hash, key| hash[key] = []}; end
    def self.addon(type, content_or_block); addons[type] << content_or_block; end
    def self.prepend_addon(type, content_or_block); addons[type].unshift content_or_block; end
    
    def self.script_load_mode=(mode)
      @@script_load_mode = case mode
      when :sync
        :sync
      when :defer
        self.script_load_mode == :sync ? :sync : :defer
      end
    end
    
    def self.script_load_mode
      @@script_load_mode ||= :async
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
alula-0.4.16 lib/alula/plugin.rb
alula-0.4.15 lib/alula/plugin.rb
alula-0.4.14 lib/alula/plugin.rb
alula-0.4.13 lib/alula/plugin.rb
alula-0.4.12 lib/alula/plugin.rb
alula-0.4.11 lib/alula/plugin.rb
alula-0.4.11a lib/alula/plugin.rb
alula-0.4.10 lib/alula/plugin.rb
alula-0.4.9 lib/alula/plugin.rb
alula-0.4.8 lib/alula/plugin.rb
alula-0.4.7 lib/alula/plugin.rb