Sha256: 7b0f432596b91ff1baff7e16b7119202812dcc4d655f1c4727dd9b65213fda1d

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

class Object
  define_method("ruby:with_block:") do |method, block|
    self.send(method, &block)
  end

  define_method("ruby:args:with_block:") do |method, args, block|
    self.send(method, *args, &block)
  end

  define_method("ruby:args:") do |method, args|
    self.send(method, *args)
  end

  define_method(":to_s") do
    return self.to_s
  end

  define_method("require:") do |path|
    Fancy::CodeLoader.send "require:", path
  end

  # HACK:
  # When we define private/protected/public methods, we usually use
  # Module#private, Module#protected & Module#public methods to set the
  # access of that method.
  # But in cases where we define methods not within a class
  # definition, this fails. To make it work, we define these. Kinda
  # stupid, i know, but oh well. Maybe need to fix this in the future.
  def public
    Rubinius::VariableScope.of_sender.method_visibility = nil
  end
  def private
    Rubinius::VariableScope.of_sender.method_visibility = :private
  end
  def protected
    Rubinius::VariableScope.of_sender.method_visibility = :protected
  end
end

class BasicObject
  instance_methods.each do |m|
    undef_method(m) if m.to_s !~ /(?:^__|^nil?$|^send$|^object_id$)/
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fancy-0.5.0 boot/fancy_ext/object.rb
fancy-0.4.0 boot/fancy_ext/object.rb