in src/ab/controllers/doc.py [0:0]
def __parse_body(q, parse_type):
"""
parse any body with level
:param segments_count: the count of segments
:param q: a dequeue to hold the contents
:return:
"""
ret = []
last_request_object = None
while len(q) > 0:
current_line = q.popleft()
current_request_object = __parse_request_object(current_line, 5 if parse_type == "req" else 4)
if last_request_object is not None:
level_diff = current_request_object['__level'] - last_request_object['__level']
# diff == 0 means in the same level
if level_diff == 1:
q.appendleft(current_line)
last_request_object['children'] = __parse_request(q) if parse_type == "req" else __parse_response(q)
continue
if level_diff > 1:
raise AlgorithmException(
data="The next two lines of requests should not differ by more than 1 level")
if level_diff < 0:
q.appendleft(current_line)
return ret
# next line
ret.append(current_request_object)
last_request_object = current_request_object
return ret