diff --git a/src/main.py b/src/main.py index f3ef87cc7114dd1a1ba72ecc7a7a02ba90b0578e..2f9278cc98b77d494f98f91d57990e46e1e05a87 100644 --- a/src/main.py +++ b/src/main.py @@ -88,6 +88,7 @@ async def validate(model: str, files: list[UploadFile], semantic: bool = False): if files[0].filename.endswith('json'): json_files = {file.filename[:-5]: json.loads((await file.read()).decode('utf-8')) for file in files} translated_files = translate.translate_files_to_text(json_files) + # TODO: Mapping for filename in translated_files: with open(os.path.join(in_path, f'{filename}.soil'), 'wb') as outfile: outfile.write(translated_files[filename].encode('utf-8')) diff --git a/src/translate.py b/src/translate.py index 4c3d39b345a17e25522287ead90071aaf670f839..748b0f6484ed56832b17c9d459948faed55fb740 100644 --- a/src/translate.py +++ b/src/translate.py @@ -80,7 +80,14 @@ def element_to_text(element: Dict[str, any], filename: str, files: dict[str, any custom_descriptions = {} temp_output = element["elementType"] + " " + element["name"].replace(" ", "") + " " if element['elementType'] == 'component' and 'baseComponent' in element: - temp_output += "extends " + get_element_type_name(element["baseComponent"], filename, files) + " " + temp_output += "extends " + element['baseComponent']['name'] + " " + + if (element["elementType"] == "component" or + element["elementType"] == "function" or + element["elementType"] == "variable"): + if element['semanticDefinition'] is not None: + temp_output += f"defines <{element['semanticDefinition']}> " + temp_output += "{\n" if element["elementType"] == "interface": @@ -94,7 +101,7 @@ def element_to_text(element: Dict[str, any], filename: str, files: dict[str, any return temp_output + "}\n\n" for key in element: - if key in ["uuid", "cardOpen", "elementType", "constant"]: + if key in ["baseComponent", "uuid", "cardOpen", "elementType", "constant", "semanticDefinition"]: continue elif key in ["arguments", "returns", "components", "parameters", "functions", "measurements"]: if len(element[key]): @@ -109,6 +116,13 @@ def element_to_text(element: Dict[str, any], filename: str, files: dict[str, any elif key == "streams": if len(element[key]) > 0: temp_output += " streams:\n" + streams_to_text(element[key]) + elif key == "unit": + # Probably too hacky to just check if the unit string contains ':' + # to determine if it is a semantic unit or not + if ':' in element['unit']: + temp_output += f" unit: <{element['unit']}>\n" + else: + temp_output += f" unit: {element['unit']}\n" elif key == "range": if element["datatype"] != "enum": minimum = '' if element["range"][0] is None else str(element["range"][0])