Class: BinData::BaseArgProcessor
- Inherits:
-
Object
- Object
- BinData::BaseArgProcessor
- 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.
Direct Known Subclasses
ArrayArgProcessor, BufferArgProcessor, ChoiceArgProcessor, PrimitiveArgProcessor, StringArgProcessor, StructArgProcessor
Constant Summary collapse
- @@empty_hash =
Hash.new.freeze
Instance Method Summary collapse
-
#extract_args(obj_class, obj_args) ⇒ Object
Takes the arguments passed to BinData::Base.new and extracts [value, sanitized_parameters, parent].
-
#sanitize_parameters!(obj_class, obj_params) ⇒ Object
Performs sanity checks on the given parameters.
-
#separate_args(obj_class, obj_args) ⇒ Object
Separates the arguments passed to BinData::Base.new into [value, parameters, parent].
Instance Method Details
#extract_args(obj_class, obj_args) ⇒ Object
Takes the arguments passed to BinData::Base.new and extracts [value, sanitized_parameters, parent].
282 283 284 285 286 287 |
# File 'lib/bindata/base.rb', line 282 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.
315 316 |
# File 'lib/bindata/base.rb', line 315 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.
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
# File 'lib/bindata/base.rb', line 291 def separate_args(obj_class, obj_args) args = obj_args.dup value = parameters = parent = nil if args.length > 1 and args.last.is_a? BinData::Base parent = args.pop end if args.length > 0 and args.last.is_a? Hash parameters = args.pop end if args.length > 0 value = args.pop end parameters ||= @@empty_hash return [value, parameters, parent] end |