def parse_array_contents(array, string, index)
is_escaping = false
is_quoted = false
was_quoted = false
current_item = ''
local_index = index
while local_index
token = string[local_index]
if is_escaping
current_item << token
is_escaping = false
else
if is_quoted
case token
when '"'
is_quoted = false
was_quoted = true
when "\\"
is_escaping = true
else
current_item << token
end
else
case token
when "\\"
is_escaping = true
when ','
add_item_to_array(array, current_item, was_quoted)
current_item = ''
was_quoted = false
when '"'
is_quoted = true
when '{'
internal_items = []
local_index,internal_items = parse_array_contents(internal_items, string, local_index + 1)
array.push(internal_items)
when '}'
add_item_to_array(array, current_item, was_quoted)
return local_index,array
else
current_item << token
end
end
end
local_index += 1
end
return local_index,array
end