Sha256: 6c747374c772bcaa1e3bcfbba6fbe6ad7f5e3474a09ac18e7fa5f58e3659ec01

Contents?: true

Size: 884 Bytes

Versions: 3

Compression:

Stored size: 884 Bytes

Contents

require 'ripl'

module Ripl::Rc; end
module Ripl::Rc::U
  def self.included mod
    mod.send(:include, Ripl::Rc)
    class << mod
      attr_accessor :disabled

      def enable
        self.disabled = false
      end

      def disable
        self.disabled = true
      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}
          #{mod.name}.#{meth}
        end
      RUBY
    } + %w[enabled? disabled?].map{ |meth|
      <<-RUBY
        def #{snake_name}_#{meth}
          #{mod.name}.#{meth}
        end
      RUBY
    }).join("\n")
    module_eval(code)
  end
end

Ripl.extend(Ripl::Rc::U)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ripl-rc-0.2.2 lib/ripl/rc/u.rb
ripl-rc-0.2.1 lib/ripl/rc/u.rb
ripl-rc-0.2.0 lib/ripl/rc/u.rb