class PGconn
## The PG connection class.
def self::parse_connect_args( *args )
## @param [Array
## Parse the connection +args+ into a connection-parameter string
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, PGconn.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, PGconn.quote_connstr(val.to_s)] ) end end return connopts.join(' ') end
def self::quote_connstr( value )
## @param [String] value the option value to be quoted.
## Quote the given +value+ for use in a connection-parameter string.
def self::quote_connstr( value ) return "'" + value.to_s.gsub( /[\\']/ ) {|m| '\\' + m } + "'" end