Module: Minitel::StrictArgs

Extended by:
StrictArgs
Included in:
StrictArgs
Defined in:
lib/minitel/strict_args.rb

Instance Method Summary collapse

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