class BinData::StructArgProcessor
Public Instance Methods
sanitize_parameters!(obj_class, params)
click to toggle source
# File lib/bindata/struct.rb, line 342 def sanitize_parameters!(obj_class, params) sanitize_endian(params) sanitize_search_prefix(params) sanitize_fields(obj_class, params) sanitize_hide(params) end
Private Instance Methods
ensure_field_names_are_valid(obj_class, field_names)
click to toggle source
# File lib/bindata/struct.rb, line 396 def ensure_field_names_are_valid(obj_class, field_names) reserved_names = BinData::Struct::RESERVED field_names.each do |name| if obj_class.method_defined?(name) raise NameError.new("Rename field '#{name}' in #{obj_class}, " \ "as it shadows an existing method.", name) end if reserved_names.include?(name) raise NameError.new("Rename field '#{name}' in #{obj_class}, " \ "as it is a reserved name.", name) end if field_names.count(name) != 1 raise NameError.new("field '#{name}' in #{obj_class}, " \ "is defined multiple times.", name) end end end
sanitize_endian(params)
click to toggle source
# File lib/bindata/struct.rb, line 352 def sanitize_endian(params) params.sanitize_endian(:endian) end
sanitize_fields(obj_class, params)
click to toggle source
# File lib/bindata/struct.rb, line 368 def sanitize_fields(obj_class, params) params.sanitize_fields(:fields) do |fields, sanitized_fields| fields.each do |ftype, fname, fparams| sanitized_fields.add_field(ftype, fname, fparams) end field_names = sanitized_field_names(sanitized_fields) ensure_field_names_are_valid(obj_class, field_names) end end
sanitize_hide(params)
click to toggle source
# File lib/bindata/struct.rb, line 379 def sanitize_hide(params) params.sanitize(:hide) do |hidden| field_names = sanitized_field_names(params[:fields]) hfield_names = hidden_field_names(hidden) hfield_names & field_names end end
sanitize_search_prefix(params)
click to toggle source
# File lib/bindata/struct.rb, line 356 def sanitize_search_prefix(params) params.sanitize(:search_prefix) do |sprefix| search_prefix = [] Array(sprefix).each do |prefix| prefix = prefix.to_s.chomp("_") search_prefix << prefix if prefix != "" end search_prefix end end
sanitized_field_names(sanitized_fields)
click to toggle source
# File lib/bindata/struct.rb, line 388 def sanitized_field_names(sanitized_fields) sanitized_fields.field_names.compact end