block_params=

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