diff --git a/src/xopp2oml/template.oml b/src/xopp2oml/template.oml index 488ad88..8165a01 100644 --- a/src/xopp2oml/template.oml +++ b/src/xopp2oml/template.oml @@ -1,12 +1,17 @@ // Warning: Generated code! Do not edit! // Input file: '{{inputfile}}' // Generator: https://msdl.uantwerpen.be/git/jexelmans/xopp2py +{%- if minimal %} +// Minimal mode enabled: All XML attributes and non-text nodes are omitted. +{%- endif %} description <{{namespaces.description}}#> as {{namespaces.shorthand}} { uses <{{namespaces.xopp}}#> as xopp uses <{{namespaces.object_diagram}}#> as object_diagram + {%- if not minimal %} uses <{{namespaces.dict}}#> as dict + {%- endif %} ci model : xopp:Model [] @@ -20,7 +25,8 @@ description <{{namespaces.description}}#> as {{namespaces.shorthand}} { object_diagram:inModel model ] - {% for page_index, page in enumerate(file.pages) %} + {%- for page_index, page in enumerate(file.pages) %} + ci p{{page_index}} : xopp:Page [ xopp:hasWidth {{ page.width }} xopp:hasHeight {{ page.height }} @@ -31,28 +37,35 @@ description <{{namespaces.description}}#> as {{namespaces.shorthand}} { object_diagram:inModel model ] - {%- for layer_index, layer in enumerate(page.layers) %} - ci p{{page_index}}l{{layer_index}} : xopp:Layer [ - xopp:inPage p{{page_index}} - object_diagram:inModel model - ] + {%- for layer_index, layer in enumerate(page.layers) %} - {%- for el_index, el in enumerate(layer.elements) %} - ci p{{page_index}}l{{layer_index}}e{{el_index}} : xopp:{{el.__class__.__name__}} [ - xopp:hasText {{el.text | to_oml_string_literal}} - xopp:inLayer p{{page_index}}l{{layer_index}} - object_diagram:inModel model - ] + ci p{{page_index}}l{{layer_index}} : xopp:Layer [ + xopp:inPage p{{page_index}} + object_diagram:inModel model + ] - {%- for key, value in el.attributes.items() %} - ci p{{page_index}}l{{layer_index}}e{{el_index}}a{{loop.index}} : xopp:XMLAttribute [ - dict:hasKey {{key | to_oml_string_literal}} - dict:hasValue {{value | to_oml_string_literal}} - xopp:ofLayerElement p{{page_index}}l{{layer_index}}e{{el_index}} - object_diagram:inModel model - ] - {% endfor %} - {% endfor %} - {% endfor %} - {% endfor %} + {%- for el_index, el in enumerate(layer.elements) %} + {%- if not minimal or el.__class__.__name__ == "Text" %} + + ci p{{page_index}}l{{layer_index}}e{{el_index}} : xopp:{{el.__class__.__name__}} [ + xopp:hasText {{el.text | to_oml_string_literal}} + xopp:inLayer p{{page_index}}l{{layer_index}} + object_diagram:inModel model + ] + + {%- if not minimal %} + {%- for key, value in el.attributes.items() %} + + ci p{{page_index}}l{{layer_index}}e{{el_index}}a{{loop.index}} : xopp:XMLAttribute [ + dict:hasKey {{key | to_oml_string_literal}} + dict:hasValue {{value | to_oml_string_literal}} + xopp:ofLayerElement p{{page_index}}l{{layer_index}}e{{el_index}} + object_diagram:inModel model + ] + {%- endfor %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- endfor %} + {%- endfor %} } diff --git a/src/xopp2oml/writer.py b/src/xopp2oml/writer.py index 7608c71..12589ea 100644 --- a/src/xopp2oml/writer.py +++ b/src/xopp2oml/writer.py @@ -44,6 +44,7 @@ def writeOML(xournalFile: abstract_syntax.XournalFile, inputfile:str, namespace: template = environment.get_template("template.oml") for piece in template.generate( + minimal=True, file=xournalFile, inputfile=inputfile, enumerate=enumerate,