Module: Pure::Parser::Internal

Defined in:
lib/pure/parser/impl/internal.rb

Class Method Summary collapse

Class Method Details

.extract(mod, method_name, file, line) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/pure/parser/impl/internal.rb', line 7

def extract(mod, method_name, file, line)
  if method_name == :__fun
    Hash.new
  else
    parameters = mod.instance_method(method_name).parameters.reject {
      |type, name|
      type == :block
    }
    args = parameters.map { |type, name|
      name
    }
    types = parameters.inject(Hash.new) { |acc, (type, name)|
      acc.merge!(type => true)
    }
    {
      :name => method_name,
      :args => args,
      :splat => types[:rest],
      :default => types[:opt],
    }
  end.merge(:file => file, :line => line)
end