Sha256: ebf94de936e75b6994f43a1fb4fd240eb4e1563cc523a340070fae1ddbfd10b7

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

module Kernel
	def raise_without_self *args
		error, message, the_self = nil
		if args.size == 1
			error = RuntimeError
			message = args[0]
			the_self = self
		elsif args.size == 2
			message, the_self = args
			error = RuntimeError
		elsif args.size == 3
			error, message, the_self = args
		else
			raise RuntimeError, "Invalid arguments!", caller
		end
		
		the_self = the_self.is_a?(Array) ? the_self : [the_self]
		
		list = []
		the_self.each do |s|
			klass = (s.class == Class or s.class == Module) ?	s : s.class
			klass.ancestors.each do |a|
				next if a == Object or a == Module
				name = a.name
				path = nil
				if RubyExt::Resource.class_exist?(name)		            
					path = RubyExt::Resource.class_to_virtual_file(name)
					path.sub!(".rb", "")
				else
					path = name.gsub("::", "/")
				end
				list << /#{path}/
			end
		end
		
		stack = caller
		stack = stack.delete_if do |line|
			list.any?{|re| line =~ re} and line !~ /\/spec\// # Do not exclude Spec stacktrace.
		end
		raise error, message, stack		
	end
	
	def respond_to sym, *args
		return nil if not respond_to? sym
		send sym, *args
	end
	
	#	def _ &b
	#		raise "Block isn't provided!" unless b
	#		return b 
	#	end
	
	def singleton_class(&block)
		if block_given?
		(class << self; self; end).class_eval(&block)
		self
		else
		(class << self; self; end)
		end
	end		
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
RubyExt-0.1.1 lib/RubyExt/kernel.rb
RubyExt-0.1.2 lib/RubyExt/kernel.rb