class Bricolage::PSQLLoadOptions

Public Class Methods

new(opts = []) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 448
def initialize(opts = [])
  @opts = opts
end
parse(opts) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 403
def parse(opts)
  case opts
  when Hash then filter_values(opts)
  when String then parse_string(opts)   # FIXME: remove
  else raise ParameterError, "unsupported value type for load options: #{opts.class}"
  end
end

Private Class Methods

filter_values(opts) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 413
def filter_values(opts)
  list = []
  opts.each do |key, value|
    case value
    when String, Integer, true, false, nil
      list.push Option.new(key.to_s, value)
    else
      raise ParameterError, ""
    end
  end
  new(list)
end
parse_string(str) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 426
def parse_string(str)
  return new unless str
  list = []
  str.split(',').each do |opt_pair|
    opt, value = opt_pair.strip.split('=', 2)
    list.push Option.new(opt, parse_value(value, opt))
  end
  new(list)
end
parse_value(value, opt) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 436
def parse_value(value, opt)
  case value
  when nil, 'true', true then true
  when 'false', false then false
  when /\A\d+\z/ then value.to_i
  when String then value
  else
    raise ParameterError, "unsupported load option value for #{opt}: #{value.inspect}"
  end
end

Public Instance Methods

[]=(name, value) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 461
def []=(name, value)
  n = name.to_s
  delete n
  @opts.push Option.new(n, value)
end
delete(name) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 467
def delete(name)
  @opts.reject! {|opt| opt.name == name }
end
each(&block) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 457
def each(&block)
  @opts.each(&block)
end
key?(name) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 452
def key?(name)
  n = name.to_s
  @opts.any? {|opt| opt.name == n }
end
merge(pairs) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 471
def merge(pairs)
  h = {}
  @opts.each do |opt|
    h[opt.name] = opt
  end
  pairs.each do |key, value|
    h[key] = Option.new(key, value)
  end
  self.class.new(h.values)
end
provide_defaults(src_ds) click to toggle source
# File lib/bricolage/psqldatasource.rb, line 490
def provide_defaults(src_ds)
end
to_s() click to toggle source
# File lib/bricolage/psqldatasource.rb, line 482
def to_s
  buf = StringIO.new
  each do |opt|
    buf.puts opt
  end
  buf.string
end