in lib/rdoc/method_attr.rb [232:286]
def block_params=(value)
return @block_params = '' if value =~ /^[\.,]/
return @block_params = '' if value =~ /^(if|unless)\s/
value = $1.strip if value =~ /^(.+)\s(if|unless)\s/
value = $1 if value =~ /^\s*\((.*)\)\s*$/
value = value.strip
return @block_params = $1 if value =~ /^(proc|lambda)(\s*\{|\sdo)/
value = $1.strip if value =~ /^\+(.*)\+$/
value = $1.strip if value =~ /^\[(.*)\]$/
return @block_params = '' if value.empty?
return @block_params = 'str' if value =~ /^\$[&0-9]$/
value.gsub!(/(\w)\[[^\[]+\]/, '\1')
value.gsub!(/@@?([a-z0-9_]+)/, '\1')
value.gsub!(/([A-Z:a-z0-9_]+)\.([a-z0-9_]+)(\s*\(\s*[a-z0-9_.,\s]*\s*\)\s*)?/) do
case $2
when 'to_s' then $1
when 'const_get' then 'const'
when 'new' then
$1.split('::').last.
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
downcase
else
$2
end
end
value.gsub!(/[A-Za-z0-9_:]+::/, '')
value = $1 if value =~ /^([a-z0-9_]+)\s*[-*+\/]/
@block_params = value.strip
end