Skip to content

Instantly share code, notes, and snippets.

@havenwood
Created October 1, 2019 13:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save havenwood/ecb7ea9fb3fdd0295038f6101841de9a to your computer and use it in GitHub Desktop.
Save havenwood/ecb7ea9fb3fdd0295038f6101841de9a to your computer and use it in GitHub Desktop.
An example for Nathanael7 on #ruby IRC
def sig(method_name)
meth = method(method_name)
parameters = meth.parameters.map do |type, name|
case type
when :req
name
when :rest
"*#{name}"
when :opt
# Unknown default argument.
"#{name} = nil"
when :key
# Unknown default argument.
"#{name}: nil"
when :keyreq
"#{name}:"
when :keyrest
"**#{name}"
when :block
"&#{name}"
end
end
"def #{meth.name}(#{parameters.join(', ')})"
end
def foo(a, b = :oops, *c, d: :oops, e:, **f, &g) end
sig :foo
#=> "def foo(a, b = nil, *c, e:, d: nil, **f, &g)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment