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_limitInteger | 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
nameString The form data name.
-
parameter
valueObject 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