Sha256: 731ec2604624b98fbdf890046cc54a12f2a6bd4672c78ce6790f5effcea98134

Contents?: true

Size: 744 Bytes

Versions: 19

Compression:

Stored size: 744 Bytes

Contents

class Object
	def __defun__ (name, *sargs, **sopts, &sbl)
		(class << self;self;end).instance_eval do
			if sbl
				define_method name do |*args, **opts, &bl|
					sbl.call *(sargs + args), **(sopts.merge opts), &bl
				end
			elsif sopts.empty?
				if sargs.empty?
					define_method name do
						nil
					end
				elsif sargs.size == 1
					define_method name do
						sargs[0]
					end
				else
					define_method name do
						sargs
					end
				end
			else
				if sargs.empty?
					define_method name do
						sopts
					end
				else
					define_method name do
						sargs + [sopts]
					end
				end
			end
		end
		self
	end
	def __undefun__ (name)
		(class << self;self;end).instance_eval do
			remove_method name
		end
		self
	end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
YkLib-0.1.8.9 lib/Yk/__defun__.rb
YkLib-0.1.8.8 lib/Yk/__defun__.rb
YkLib-0.1.8.7 lib/Yk/__defun__.rb
YkLib-0.1.8.6 lib/Yk/__defun__.rb
YkLib-0.1.8.5 lib/Yk/__defun__.rb
YkLib-0.1.8.4 lib/Yk/__defun__.rb
YkLib-0.1.8.3 lib/Yk/__defun__.rb
YkLib-0.1.8.2 lib/Yk/__defun__.rb
YkLib-0.1.8.1 lib/Yk/__defun__.rb
YkLib-0.1.8 lib/Yk/__defun__.rb
YkLib-0.1.7.1 lib/Yk/__defun__.rb
YkLib-0.1.7 lib/Yk/__defun__.rb
YkLib-0.1.6 lib/Yk/__defun__.rb
YkLib-0.1.5 lib/Yk/__defun__.rb
YkLib-0.1.4 lib/Yk/__defun__.rb
YkLib-0.1.3 lib/Yk/__defun__.rb
YkLib-0.1.2 lib/Yk/__defun__.rb
YkLib-0.1.1 lib/Yk/__defun__.rb
YkLib-0.1.0 lib/YkLib/Yk/__defun__.rb