Sha256: 41d2fcab094128d9928a80a0145d39dc35c85b46b356b47c9047046baff3cd2a
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module Rib; end module Rib::Plugin Rib::P = self def self.included mod mod.send(:include, Rib) class << mod attr_accessor :disabled def enable self.disabled = false if block_given? then yield else enabled? end end def disable self.disabled = true if block_given? then yield else enabled? end end def enabled? !disabled end def disabled? !!disabled end end snake_name = mod.name[/::\w+$/].tr(':', ''). # remove namespaces gsub(/([A-Z][a-z]*)/, '\\1_').downcase[0..-2] code = (%w[enable disable].map{ |meth| <<-RUBY def #{meth}_#{snake_name} &block #{mod.name}.#{meth}(&block) end RUBY } + %w[enabled? disabled?].map{ |meth| <<-RUBY def #{snake_name}_#{meth} &block #{mod.name}.#{meth}(&block) end RUBY }).join("\n") meta_rib = if respond_to?(:singleton_class) Rib.singleton_class else class << Rib; self; end end meta_rib.module_eval(code, __FILE__, __LINE__) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rib-0.1.0 | lib/rib/plugin.rb |