class BinData::AcceptedParametersPlugin::AcceptedParameters

BinData objects accept parameters when initializing. AcceptedParameters allow a BinData class to declaratively identify accepted parameters as mandatory, optional, default or mutually exclusive.

Public Class Methods

new(ancestor_parameters = nil) click to toggle source
# File lib/bindata/params.rb, line 42
def initialize(ancestor_parameters = nil)
  if ancestor_parameters
    @mandatory = ancestor_parameters.mandatory.dup
    @optional  = ancestor_parameters.optional.dup
    @default   = ancestor_parameters.default.dup
    @mutually_exclusive = ancestor_parameters.mutually_exclusive.dup
  else
    @mandatory = []
    @optional  = []
    @default   = Hash.new
    @mutually_exclusive = []
  end
end

Public Instance Methods

all() click to toggle source
# File lib/bindata/params.rb, line 94
def all
  (@mandatory + @optional + @default.keys).uniq
end
default(args = nil) click to toggle source
# File lib/bindata/params.rb, line 72
def default(args = nil)
  if args
    to_syms(args.keys)  # call for side effect of validating names
    args.each_pair do |param, value|
      @default[param.to_sym] = value
    end
  end
  @default
end
mandatory(*args) click to toggle source
# File lib/bindata/params.rb, line 56
def mandatory(*args)
  unless args.empty?
    @mandatory.concat(to_syms(args))
    @mandatory.uniq!
  end
  @mandatory
end
mutually_exclusive(*args) click to toggle source
# File lib/bindata/params.rb, line 82
def mutually_exclusive(*args)
  arg1 = args.shift
  until args.empty?
    args.each do |arg2|
      @mutually_exclusive.push([arg1.to_sym, arg2.to_sym])
      @mutually_exclusive.uniq!
    end
    arg1 = args.shift
  end
  @mutually_exclusive
end
optional(*args) click to toggle source
# File lib/bindata/params.rb, line 64
def optional(*args)
  unless args.empty?
    @optional.concat(to_syms(args))
    @optional.uniq!
  end
  @optional
end