# File lib/mechanize/http/content_disposition_parser.rb, line 46
  def parse content_disposition, header = false
    return nil if content_disposition.empty?

    @scanner = StringScanner.new content_disposition

    if header then
      return nil unless @scanner.scan(/Content-Disposition/i)
      return nil unless @scanner.scan(/:/)
      spaces
    end

    type = rfc_2045_token
    @scanner.scan(/;+/)

    if @scanner.peek(1) == '=' then
      @scanner.pos = 0
      type = nil
    end

    disposition = Mechanize::HTTP::ContentDisposition.new type

    spaces

    return nil unless parameters = parse_parameters

    disposition.filename          = parameters.delete 'filename'
    disposition.creation_date     = parameters.delete 'creation-date'
    disposition.modification_date = parameters.delete 'modification-date'
    disposition.read_date         = parameters.delete 'read-date'
    disposition.size              = parameters.delete 'size'
    disposition.parameters        = parameters

    disposition
  end