MCPcopy Create free account
hub / github.com/ddnet/ddnet / parse_settings

Function parse_settings

scripts/export_settings_commands_table.py:64–106  ·  view source on GitHub ↗
(lines)

Source from the content-addressed store, hash-verified

62
63
64def parse_settings(lines):
65 def parse_value(value):
66 value = value.lstrip()
67 value = value.replace("SERVERINFO_LEVEL_MIN", "0")
68 value = value.replace("SERVERINFO_LEVEL_MAX", "2")
69 value = value.replace("SERVER_MAX_CLIENTS", "64")
70 value = value.replace("MAX_CLIENTS", "128")
71 try:
72 return int(value, base=16) if value.startswith(("0x", "0X")) else int(value)
73 except Exception as e:
74 raise RuntimeError("Failed to parse setting value: {value}") from e
75
76 names = {}
77 parsed_settings = []
78 for line in lines:
79 args = re.match(r"^MACRO_CONFIG_(.*?)\((.*)\)", line)
80 if args is None:
81 continue
82
83 if args[1] == "STR":
84 parsed = parse_arguments(args[2], num=6, name="string setting")
85 flags = parse_flags(parsed[4], f"string setting '{parsed[1]}'")
86 setting = {"type": "string", "flags": flags, "name": parsed[1], "description": parsed[5], "default": f'"{parsed[3]}"'}
87 elif args[1] == "INT":
88 parsed = parse_arguments(args[2], num=7, name="int setting")
89 flags = parse_flags(parsed[5], f"int setting '{parsed[1]}'")
90 setting = {"type": "int", "flags": flags, "name": parsed[1], "description": parsed[6], "default": parse_value(parsed[2]), "min": parse_value(parsed[3]), "max": parse_value(parsed[4])}
91 elif args[1] == "COL":
92 parsed = parse_arguments(args[2], num=5, name="color setting")
93 flags = parse_flags(parsed[3], f"color setting '{parsed[1]}'")
94 setting = {"type": "color", "flags": flags, "name": parsed[1], "description": parsed[4], "default": parse_value(parsed[2])}
95 else:
96 raise RuntimeError(f"Failed to parse settings type: {args[1]}")
97
98 # Filter duplicates because config_variables.h contains some definitions multiple times with #ifdef
99 if setting["name"] in names:
100 parsed_settings[names[setting["name"]]] = setting
101 else:
102 names[setting["name"]] = len(parsed_settings)
103 parsed_settings.append(setting)
104
105 parsed_settings.sort(key=lambda setting: setting["name"])
106 return parsed_settings
107
108
109def parse_tunings(lines):

Callers 1

Calls 3

parse_argumentsFunction · 0.85
parse_flagsFunction · 0.85
parse_valueFunction · 0.85

Tested by

no test coverage detected