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

Version Path
rib-1.5.1 lib/rib/plugin.rb
rib-1.5.0 lib/rib/plugin.rb
rib-1.4.0 lib/rib/plugin.rb
rib-1.3.1 lib/rib/plugin.rb
rib-1.3.0 lib/rib/plugin.rb
rib-1.2.91 lib/rib/plugin.rb
rib-1.2.9 lib/rib/plugin.rb
rib-1.2.8 lib/rib/plugin.rb
rib-1.2.7 lib/rib/plugin.rb
rib-1.2.6 lib/rib/plugin.rb
rib-1.2.5 lib/rib/plugin.rb
rib-1.2.4 lib/rib/plugin.rb
rib-1.2.3 lib/rib/plugin.rb
rib-1.2.2 lib/rib/plugin.rb
rib-1.2.1 lib/rib/plugin.rb
rib-1.2.0 lib/rib/plugin.rb
rib-1.1.6 lib/rib/plugin.rb
rib-1.1.5 lib/rib/plugin.rb
rib-1.1.4 lib/rib/plugin.rb
rib-1.1.3 lib/rib/plugin.rb