# File lib/pg/connection.rb, line 20
        def self::parse_connect_args( *args )
                return '' if args.empty?

                # This will be swapped soon for code that makes options like those required for
                # PQconnectdbParams()/PQconnectStartParams(). For now, stick to an options string for
                # PQconnectdb()/PQconnectStart().
                connopts = []

                # Handle an options hash first
                if args.last.is_a?( Hash )
                        opthash = args.pop 
                        opthash.each do |key, val|
                                connopts.push( "%s=%s" % [key, PG::Connection.quote_connstr(val)] )
                        end
                end

                # Option string style
                if args.length == 1 && args.first.to_s.index( '=' )
                        connopts.unshift( args.first )

                # Append positional parameters
                else
                        args.each_with_index do |val, i|
                                next unless val # Skip nil placeholders

                                key = CONNECT_ARGUMENT_ORDER[ i ] or
                                        raise ArgumentError, "Extra positional parameter %d: %p" % [ i+1, val ]
                                connopts.push( "%s=%s" % [key, PG::Connection.quote_connstr(val.to_s)] )
                        end
                end

                return connopts.join(' ')
        end