Sha256: 4712a40c04e9026cb7994b098d5ba499eb1991ffdc4e80dd612c82cfb1dd5fdd

Contents?: true

Size: 1.16 KB

Versions: 20

Compression:

Stored size: 1.16 KB

Contents

require 'rib'

module Rib::Underscore
  extend Rib::Plugin
  Shell.use(self)

  IVAR = {:_  => :@__rib_result__,
          :__ => :@__rib_exception__}

  # --------------- Rib API ---------------

  def before_loop
    return super if Underscore.disabled?
    eliminate_warnings
    inject_inspecter
    super
  end

  def print_result result
    return super if Underscore.disabled?
    bound_object.instance_variable_set(:@__rib_result__, result)
    super
  end

  def print_eval_error err
    return super if Underscore.disabled?
    bound_object.instance_variable_set(:@__rib_exception__, err)
    super
  end



  private
  def eliminate_warnings
    IVAR.values.each{ |ivar| bound_object.instance_variable_set(ivar, nil) }
  end

  def inject_inspecter
    IVAR.each{ |k, v|
      bound_singleton.send(:define_method, k){
        instance_variable_get(v)
      } unless bound_object.respond_to?(k) # only inject for innocences
    }
  rescue TypeError
    # can't define singleton method for immediate value
  end

  def bound_singleton
    if respond_to?(:singleton_class)
      bound_object.singleton_class
    else
      class << bound_object; self; end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rib-1.4.0 lib/rib/core/underscore.rb
rib-1.3.1 lib/rib/core/underscore.rb
rib-1.3.0 lib/rib/core/underscore.rb
rib-1.2.91 lib/rib/core/underscore.rb
rib-1.2.9 lib/rib/core/underscore.rb
rib-1.2.8 lib/rib/core/underscore.rb
rib-1.2.7 lib/rib/core/underscore.rb
rib-1.2.6 lib/rib/core/underscore.rb
rib-1.2.5 lib/rib/core/underscore.rb
rib-1.2.4 lib/rib/core/underscore.rb
rib-1.2.3 lib/rib/core/underscore.rb
rib-1.2.2 lib/rib/core/underscore.rb
rib-1.2.1 lib/rib/core/underscore.rb
rib-1.2.0 lib/rib/core/underscore.rb
rib-1.1.6 lib/rib/core/underscore.rb
rib-1.1.5 lib/rib/core/underscore.rb
rib-1.1.4 lib/rib/core/underscore.rb
rib-1.1.3 lib/rib/core/underscore.rb
rib-1.1.2 lib/rib/core/underscore.rb
rib-1.1.1 lib/rib/core/underscore.rb