Module: Minitel::StrictArgs
Instance Method Summary collapse
- #enforce(args, required, allowed = [], uuid_field = nil) ⇒ Object
- #ensure_is_uuid(uuid) ⇒ Object
- #ensure_no_nils(args, keys) ⇒ Object
-
#ensure_strict_args(keys, required, allowed) ⇒ Object
A Ruby 2.1 required keyword argument sorta backport.
Instance Method Details
#enforce(args, required, allowed = [], uuid_field = nil) ⇒ Object
7 8 9 10 11 |
# File 'lib/minitel/strict_args.rb', line 7 def enforce(args, required, allowed = [], uuid_field = nil) ensure_strict_args(args.keys, required, allowed) ensure_no_nils(args, required) ensure_is_uuid(args[uuid_field]) if uuid_field end |
#ensure_is_uuid(uuid) ⇒ Object
31 32 33 34 35 |
# File 'lib/minitel/strict_args.rb', line 31 def ensure_is_uuid(uuid) unless /\A[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}\z/i.match?(uuid) raise ArgumentError, "'#{uuid.inspect}' not formated like a uuid" end end |
#ensure_no_nils(args, keys) ⇒ Object
25 26 27 28 29 |
# File 'lib/minitel/strict_args.rb', line 25 def ensure_no_nils(args, keys) keys.each do |key| raise ArgumentError, "keyword #{key} is nil" unless args[key] end end |
#ensure_strict_args(keys, required, allowed) ⇒ Object
A Ruby 2.1 required keyword argument sorta backport
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/minitel/strict_args.rb', line 14 def ensure_strict_args(keys, required, allowed) missing = required - keys unless missing.empty? raise ArgumentError, "missing keywords: #{missing.join(", ")}" end unknown = keys - (required + allowed) unless unknown.empty? raise ArgumentError, "extra keywords: #{unknown.join(", ")}" end end |