Sha256: b9bcba9fb068f70c47e07cc366dd71c41dcb2155d699f5f7cddac1a11b8a029f

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

class Object

  def metaclass
    class << self; self; end
  end
  
  def meta_def(name, &blk)
    metaclass.define_method(name, &blk)
  end

end



module Kernel
  
  # From http://oldrcrs.rubypal.com/rcr/show/309
  def __DIR__(offset = 0)
    (/^(.+)?:\d+/ =~ caller[offset + 1]) ? File.dirname($1) : nil
  end
  
  # Shorthand for lambda
  # e.g. L{|r| puts r}
  def L(&blk)
    lambda(&blk)
  end
  
  # Shorthand for Proc.new
  # e.g. P{|r| puts r}
  def P(&blk)
    Proc.new(&blk)
  end
end

class String
  def /(*args)
    File.join(self, *args)
  end
  
  def to_pathname
    Pathname.new(self)
  end
end

class Array
  def extract_options!
    last.is_a?(Hash) ? pop : {}
  end
end

class Module
  
  def has_library(*items)
    namespace = self.to_s.underscore
    items.each do |item|
      require File.join(namespace, item.to_s.underscore)
    end
  end
  
  def extends_library(*items)
    namespace = self.to_s.underscore
    items.each do |item|
      klass = item.to_s.camelize.to_sym
      # Load if it isn't loaded already.
      const_get(klass) unless const_defined?(klass)
      # And finally load the file.
      require File.join(namespace, item.to_s.underscore)
    end 
  end
  
  def attempt_require(*files)
    files.each do |file|
      begin
        require file
      rescue LoadError
      end
    end
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
Sutto-perennial-0.2.3.3 lib/perennial/core_ext/misc.rb