in packages/python-packages/protocol-stub-generator/protocol/protocol_models.py [0:0]
def dict_format(self, json_request, yaml, not_first, indent, inner_model, no_list,name):
if isinstance(json_request, dict):
for i in json_request:
if indent == 4:
self.add_whitespace(indent)
if not_first:
self.add_new_line()
self.add_whitespace(indent)
self.add_new_line()
self.add_whitespace(indent)
if not inner_model:
self.add_comment(None, "model " + i + " {", None)
self.add_new_line()
not_first = True
name = i
inner_model.clear()
else:
inner_model.append(Token(" ", TokenKind.Newline))
inner_model.append(Token(" " * (indent * 4), TokenKind.Whitespace))
inner_model.append(Token("model " + i + " {", TokenKind.Comment))
inner_model.append(Token(" ", TokenKind.Newline))
if indent > 4 and (
isinstance(json_request[i], list) or isinstance(json_request[i], dict)
):
if i == "str":
if inner_model:
inner_model.append(Token(" ", TokenKind.Newline))
inner_model.append(
Token(" " * (indent * 4), TokenKind.Whitespace)
)
m_type, key = get_map_type(yaml, name)
m_type = format_map_type(m_type)
inner_model.append(
Token(
key + ": Map<string, " + m_type + ">;",
TokenKind.Comment,
)
)
else:
self.add_new_line()
self.add_whitespace(indent)
m_type, key = get_map_type(yaml, name)
m_type = format_map_type(m_type)
self.add_comment(
None, key + ": Map<string, " + m_type + ">;", None
)
self.add_new_line()
self.add_whitespace(4)
self.add_comment(None, "};", None)
# START COLLECTING INNER MODEL DATA
if not m_type == "{"+"}":
indent = 4
if "[]" in m_type:
m_type = m_type[0 : len(m_type) - 2]
inner_model.append(Token(" ", TokenKind.Newline))
inner_model.append(
Token(" " * (indent * 4), TokenKind.Whitespace)
)
inner_model.append(
Token(
"model " + m_type + " {",
TokenKind.Comment,
)
)
else:
if inner_model:
inner_model.append(Token(" ", TokenKind.Newline))
inner_model.append(
Token(" " * (indent * 4), TokenKind.Whitespace)
)
if isinstance(json_request[i], list) and not isinstance(
json_request[i][0], dict
):
inner_model.append(Token(i, TokenKind.Comment))
else:
inner_model.append(
Token(i + ": {", TokenKind.Comment)
)
name = i
else:
self.add_new_line()
if not (isinstance(json_request[i], list) and not isinstance(
json_request[i][0], dict)
):
self.add_whitespace(indent)
self.add_comment(None, i + ": {", None)
name = i
inner_model = []
if isinstance(json_request[i], str):
in_model = False
if indent == 4:
in_model = True
indent = indent + 1
name = i
if inner_model:
inner_model.append(Token(" ", TokenKind.Newline))
inner_model.append(Token(" " * (indent * 4), TokenKind.Whitespace))
else:
self.add_new_line()
self.add_whitespace(indent)
index = json_request[i].find("(optional)")
param = json_request[i].split()
if i == "str":
param[0] = format_param_type(param[0])
m_type, key = get_map_type(yaml, name)
m_type = format_map_type(m_type)
if not key: key = self.parameters[0].name
if inner_model:
optional = ""
if index != -1:
optional = "?"
inner_model.append(
Token(
key + optional + " : Map<string, " + param[0] + ">;",
TokenKind.Comment,
)
)
else:
optional = ""
if index != -1:
optional = "?"
self.add_comment(
None, key + optional + " : Map<string, " + param[0] + ">;", None
)
if in_model:
self.add_new_line()
self.add_whitespace(4)
self.add_comment(None, "};", None)
in_model = False
indent = 4
else:
if len(param) >= 2:
param[0] = format_param_type(param[0])
optional = ""
if index != -1:
optional = "?"
json_request[i] = i + optional + " : " + param[0] + ";"
if inner_model:
inner_model.append(
Token(json_request[i], TokenKind.Comment)
)
else:
self.add_comment(None, json_request[i], None)
if in_model:
self.add_new_line()
self.add_whitespace(4)
self.add_comment(None, "};", None)
in_model = False
indent = 4
else:
json_request[i] = format_param_type(json_request[i])
if inner_model:
inner_model.append(
Token(
i + ":" + json_request[i] + ";", TokenKind.Comment
)
)
else:
self.add_comment(
None, i + ": " + json_request[i] + ";", None
)
if in_model:
self.add_new_line()
self.add_whitespace(4)
self.add_comment(None, "};", None)
in_model = False
indent = 4
else:
self.request_builder(
json_request[i],
yaml,
indent=indent + 1,
not_first=True,
name=name,
inner_model=inner_model,
no_list=no_list,
)
inner_model = self.format_punctuation(json_request, indent, inner_model, i)