Class: Textus::Hooks::Signature

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/hooks/signature.rb

Instance Method Summary collapse

Constructor Details

#initialize(callable) ⇒ Signature

Returns a new instance of Signature.



6
7
8
# File 'lib/textus/hooks/signature.rb', line 6

def initialize(callable)
  @params = callable.parameters
end

Instance Method Details

#accepts_keyrest?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/textus/hooks/signature.rb', line 10

def accepts_keyrest?
  @params.any? { |type, _| type == :keyrest }
end

#declared_keysObject



14
15
16
# File 'lib/textus/hooks/signature.rb', line 14

def declared_keys
  @params.each_with_object([]) { |(t, n), acc| acc << n if %i[keyreq key].include?(t) }
end

#filter(kwargs) ⇒ Object



24
25
26
27
28
# File 'lib/textus/hooks/signature.rb', line 24

def filter(kwargs)
  return kwargs if accepts_keyrest?

  kwargs.slice(*declared_keys)
end

#missing(required) ⇒ Object



18
19
20
21
22
# File 'lib/textus/hooks/signature.rb', line 18

def missing(required)
  return [] if accepts_keyrest?

  required - declared_keys
end