Source code for adam_core.orbits.openspace.lua
from enum import Enum
[docs]
class LuaDict:
"""
A base class for all Lua types designed to handle formatting
to a Lua string.
"""
[docs]
def to_pascal_case(self, s: str):
return "".join(word.capitalize() for word in s.split("_"))
[docs]
def to_string(self, indent: int = 0):
lua = "{\n"
for k, v in self.__dict__.items():
if v is None:
continue
if isinstance(v, bool):
v = str(v).lower()
elif isinstance(v, Enum):
v = f'"{v.value}"'
elif isinstance(v, tuple):
v = f"{{{', '.join([str(x) for x in v])}}}"
elif isinstance(v, list):
v = f'{{"{", ".join([str(x) for x in v])}"}}'
elif isinstance(v, str):
v = f'"{v}"'
elif isinstance(v, LuaDict):
v = v.to_string(indent=indent + 4)
if k != "gui":
k_str = self.to_pascal_case(k)
else:
k_str = "GUI"
lua += f"{' ' * indent}{k_str} = {v},\n"
lua += f"{' ' * (indent - 4)}}}"
return lua