Sha256: d9cb7bd7fd0b20b105e488347b3bbcbd8819fac559ac2edf041045e7573dfea0
Contents?: true
Size: 999 Bytes
Versions: 23
Compression:
Stored size: 999 Bytes
Contents
module Rib; end module Rib::Plugin attr_accessor :disabled def enable self.disabled = false if block_given? then yield else enabled? end ensure self.disabled = true if block_given? end def disable self.disabled = true if block_given? then yield else enabled? end ensure self.disabled = false if block_given? end def enabled? !disabled end def disabled? !!disabled end def self.extended mod mod.send(:include, Rib) snake_name = mod.name.sub(/(\w+::)+?(\w+)$/, '\2'). 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") Rib.singleton_class.module_eval(code, __FILE__, __LINE__) end end
Version data entries
23 entries across 23 versions & 1 rubygems