Protocol::URLSourceProtocolURLFormDataNested

class Nested

Builds nested form data from names and values.

Definitions

DEPTH_LIMIT = 8

The bracketed form name depth limit.

def initialize(depth_limit: DEPTH_LIMIT)

Initialize the nested form data.

Signature

parameter depth_limit Integer | Nil

The bracketed form name depth limit.

Implementation

def initialize(depth_limit: DEPTH_LIMIT)
	@depth_limit = depth_limit
	@root = {}
end

def add(name, value)

Add a form data value using its bracketed name.

Signature

parameter name String

The form data name.

parameter value Object

The form data value.

returns Nested

The receiver.

Implementation

def add(name, value)
	keys = Encoding.split(name)
	
	if keys.empty?
		raise ArgumentError, "Invalid form data name: #{name.inspect}!"
	end
	
	if @depth_limit and keys.size > @depth_limit
		raise LimitError, "Form data depth exceeded limit of #{@depth_limit}!"
	end
	
	Encoding.assign(keys, value, @root)
	
	return self
end

def to_h

Convert the arguments to a nested hash.

Signature

returns Hash

The nested arguments.

Implementation

def to_h
	return @root
end