Sha256: 02a491fc8ed1880d78f3fea7c1cf4ce4a61b7d5b30a77b61f3c20611071d32cc

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

=begin rdoc
  Basic, add an alias_method to the object class
  Add returning to the object
=end
class Object
  def my_methods
    self.methods.sort - (self.class.methods + self.class.superclass.methods)
  end
  def to_os
    self
  end  
  def alias_method(new_id, original_id)
    original = self.method(original_id).to_proc
    define_method(new_id){|*args| original.call(*args)}
  end
  def with_options(opts={}, parent=self, &block)
    @p = parent.clone
    @p.options.merge!(opts)
    @p.instance_eval &block if block
  end  
  def returning(receiver)
    yield receiver
    receiver
  end
  def extended(&block)
    block.in_context(self).call
    self
  end
  def send_if_method(v, *args)
    if (v.nil? || v.to_s.empty? || v.is_a?(Array) || v.is_a?(Integer))
      v
    else
      vs = v.to_s.to_sym
      respond_to?(vs) ? self.send(vs, *args) : v
    end
  end
  def to_option_string
    case self.class
    when String
      self.to_option_string
    when Array
      self.each {|a| a.to_option_string }.join(" ")
    else
      "#{self}"
    end
  end
  def block_instance_eval(*args, &block)
    return instance_eval(*args,&block) unless block_given? && !block.arity.zero?
    old_method = (self.class.instance_method(:__) rescue nil)
    self.class.send(:define_method, :__, &block)
    block_method = self.class.instance_method(:__)
    if old_method
      self.class.send(:define_method, :__, old_method)
    else
      self.class.send(:remove_method, :__)
    end
    block_method.bind(self).call(*args)
  end
  def meta_def name, &blk
    (class << self; self; end).instance_eval { define_method name, &blk }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
auser-poolparty-0.2.20 lib/poolparty/core/object.rb
auser-poolparty-0.2.21 lib/poolparty/core/object.rb