Skip to content

Commit

Permalink
Make prefixes optional in the diagram serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiaslehnertum committed Feb 2, 2024
1 parent e89f61c commit eb1ce40
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -174,20 +174,20 @@ class BPMNSerializer:
BPMNGatewayType.PARALLEL: "parallelGateway"
}

__xsi_prefix: str = ""
__bpmn_prefix: str = ""
__bpmndi_prefix: str = ""
__dc_prefix: str = ""
__di_prefix: str = ""
__xsi_prefix: Optional[str] = ""
__bpmn_prefix: Optional[str] = ""
__bpmndi_prefix: Optional[str] = ""
__dc_prefix: Optional[str] = ""
__di_prefix: Optional[str] = ""

__id_shortener: Optional[IDShortener] = None

def __init__(self,
xsi_prefix=DEFAULT_XSI_PREFIX,
bpmn_prefix=DEFAULT_BPMN_PREFIX,
bpmndi_prefix=DEFAULT_BPMNDI_PREFIX,
dc_prefix=DEFAULT_DC_PREFIX,
di_prefix=DEFAULT_DI_PREFIX
xsi_prefix: str | None = DEFAULT_XSI_PREFIX,
bpmn_prefix: str | None = DEFAULT_BPMN_PREFIX,
bpmndi_prefix: str | None = DEFAULT_BPMNDI_PREFIX,
dc_prefix: str | None = DEFAULT_DC_PREFIX,
di_prefix: str | None = DEFAULT_DI_PREFIX
):
"""
Create a new instance of the BPMNSerializer class. This class is used to serialize BPMN diagrams in Apollon's
Expand All @@ -208,13 +208,13 @@ def __init__(self,
self.__id_shortener = IDShortener()

@staticmethod
def __prefix_tag(tag: str, prefix: str) -> str:
def __prefix_tag(tag: str, prefix: str | None) -> str:
"""
Prefix a XML tag with a given prefix
:param tag: The prefixed tag
:param prefix: The prefix to prepend
"""
return f"{prefix}:{tag}"
return f"{prefix}{':' if prefix else ''}{tag}"

def __shorten_id(self, element_id: str, prefix: Optional[str] = None) -> str:
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,13 @@ def serialize_model(model: dict) -> Optional[str]:
# TODO: Evaluate if there is a more sensible serialization format for this diagram type
return json.dumps(model)
case DiagramType.BPMN:
serializer = BPMNSerializer()
serializer = BPMNSerializer(
xsi_prefix=None,
bpmn_prefix=None,
bpmndi_prefix=None,
dc_prefix=None,
di_prefix=None
)
serialized_model: str = ElementTree.tostring(serializer.serialize(model, omit_layout_info=True),
encoding='utf8')
# The next line is only required to "pretty-print" the XML output for easier debugging
Expand Down
Loading

0 comments on commit eb1ce40

Please sign in to comment.