Sha256: 1f0fa359cb01a87217de8a0823bdd257288b2a9151a268bedbd24e3a3be4becc
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 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 add_extension(name, &blk) item = name.to_s.camelize.to_sym return unless const_defined?(item) target = const_get(item) if target.is_a?(Class) target.class_eval(&blk) elsif target.is_a?(Module) target.module_eval(&blk) else raise "Unable to extend #{target.inspect}" end end def attempt_require(*files) files.each do |file| begin require file rescue LoadError end end end end class Class def is(*mixins) ns = Perennial::Manifest.namespace return if ns.blank? mixins.each do |mixin| begin include ns.const_get(mixin.to_s.camelize) rescue NameError end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
Sutto-perennial-0.2.3.5 | lib/perennial/core_ext/misc.rb |