Files

Class/Module Index [+]

Quicksearch

BinData::MultiFieldArgSeparator

Extracts args for Records and Buffers.

Foo.new(:bar => “baz) is ambiguous as to whether :bar is a value or parameter.

BaseArgExtractor always assumes :bar is parameter. This extractor correctly identifies it as value or parameter.

Public Instance Methods

field_names_in_parameters?(obj_class, parameters) click to toggle source
# File lib/bindata/dsl.rb, line 28
def field_names_in_parameters?(obj_class, parameters)
  field_names = obj_class.fields.field_names
  param_keys = parameters.keys

  (field_names & param_keys).length > 0
end
parameters_is_value?(obj_class, value, parameters) click to toggle source
# File lib/bindata/dsl.rb, line 20
def parameters_is_value?(obj_class, value, parameters)
  if value.nil? and parameters.length > 0
    field_names_in_parameters?(obj_class, parameters)
  else
    false
  end
end
separate_args(obj_class, obj_args) click to toggle source
# File lib/bindata/dsl.rb, line 9
def separate_args(obj_class, obj_args)
  value, parameters, parent = super(obj_class, obj_args)

  if parameters_is_value?(obj_class, value, parameters)
    value = parameters
    parameters = {}
  end

  [value, parameters, parent]
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.