Class: BinData::BaseArgProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/bindata/base.rb

Overview

ArgProcessors process the arguments passed to BinData::Base.new into the form required to initialise the BinData object.

Any passed parameters are sanitized so the BinData object doesn’t need to perform error checking on the parameters.

Constant Summary collapse

@@empty_hash =
Hash.new.freeze

Instance Method Summary collapse

Instance Method Details

#extract_args(obj_class, obj_args) ⇒ Object

Takes the arguments passed to BinData::Base.new and extracts [value, sanitized_parameters, parent].



299
300
301
302
303
304
# File 'lib/bindata/base.rb', line 299

def extract_args(obj_class, obj_args)
  value, params, parent = separate_args(obj_class, obj_args)
  sanitized_params = SanitizedParameters.sanitize(params, obj_class)

  [value, sanitized_params, parent]
end

#sanitize_parameters!(obj_class, obj_params) ⇒ Object

Performs sanity checks on the given parameters. This method converts the parameters to the form expected by the data object.



332
333
# File 'lib/bindata/base.rb', line 332

def sanitize_parameters!(obj_class, obj_params)
end

#separate_args(_obj_class, obj_args) ⇒ Object

Separates the arguments passed to BinData::Base.new into [value, parameters, parent]. Called by #extract_args.



308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
# File 'lib/bindata/base.rb', line 308

def separate_args(_obj_class, obj_args)
  args = obj_args.dup
  value = parameters = parent = nil

  if args.length > 1 && args.last.is_a?(BinData::Base)
    parent = args.pop
  end

  if args.length > 0 && args.last.is_a?(Hash)
    parameters = args.pop
  end

  if args.length > 0
    value = args.pop
  end

  parameters ||= @@empty_hash

  [value, parameters, parent]
end