Module: CoreExtensions::Hash::Parameters

Included in:
Hash
Defined in:
lib/hash_args.rb

Overview

Allows a Hash to more easily be used to pass arguments to methods.

Instance Method Summary collapse

Instance Method Details

#fetch_arg(key, default = nil, opts = {}, &block) ⇒ Object

Works like Hash#fetch with 2 additions. It will optionally treat nil like a missing key (that’s the default). It will also allow the caller to require a parameter or it will raise an exception.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/hash_args.rb', line 6

def fetch_arg(key, default = nil, opts = {}, &block)
	if opts[:required] == true
		raise ArgumentError, "#{key.to_s.capitalize} required." if not has_key? key
	end

	if not default.nil? or block.nil?
		ret = fetch key, default
	else
		ret = fetch key, &block
	end

	if ret == nil and opts[:ignore_nil] != true
		if opts[:required] == true
			raise ArgumentError, "#{key.to_s.capitalize} required."
		end

		if not block.nil?
			ret = block.call(key)
		else
			ret = default
		end
	end

	if opts[:array] == true and not ret.is_a? Array
		ret = [ret]
	end

	ret
end

#fetch_arg_array(key, default = nil, opts = {}, &block) ⇒ Object



36
37
38
39
# File 'lib/hash_args.rb', line 36

def fetch_arg_array(key, default = nil, opts = {}, &block)
	opts.merge!(:array => true)
	fetch_arg(key, default, opts, &block)
end