Skip to content
Snippets Groups Projects
Commit 4b472947 authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

ENH: added more customization options to plantuml converter

parent bd7f3ed7
No related branches found
No related tags found
2 merge requests!57RELEASE 0.7.3,!52F refactor high level api
Pipeline #20083 failed
......@@ -41,6 +41,8 @@ from caosdb.common.datatype import is_reference, get_referenced_recordtype
from typing import Optional
import tempfile
REFERENCE = "REFERENCE"
......@@ -82,13 +84,23 @@ class Grouped(object):
return self.parents
def recordtypes_to_plantuml_string(iterable):
def recordtypes_to_plantuml_string(iterable,
add_properties: bool = True,
add_recordtypes: bool = True,
add_legend: bool = True,
style: str = "default"):
"""Converts RecordTypes into a string for PlantUML.
This function obtains an iterable and returns a string which can
be input into PlantUML for a representation of all RecordTypes in
the iterable.
Current options for style
-------------------------
"default" - Standard rectangles with uml class circle and methods section
"salexan" - Round rectangles, hide circle and methods section
Current limitations
-------------------
......@@ -143,10 +155,23 @@ def recordtypes_to_plantuml_string(iterable):
return result
result = "@startuml\n\n"
if style == "default":
result += "skinparam classAttributeIconSize 0\n"
elif style == "salexan":
result += """skinparam roundcorner 20\n
skinparam boxpadding 20\n
\n
hide methods\n
hide circle\n
"""
else:
raise ValueError("Unknown style.")
result += "package Properties #DDDDDD {\n"
if add_properties:
result += "package Properties #DDDDDD {\n"
for p in properties:
inheritances[p] = p.get_parents()
dependencies[p] = []
......@@ -166,6 +191,7 @@ def recordtypes_to_plantuml_string(iterable):
result += "}\n\n"
result += "}\n\n"
if add_recordtypes:
result += "package RecordTypes #DDDDDD {\n"
for c in classes:
......@@ -203,6 +229,7 @@ def recordtypes_to_plantuml_string(iterable):
result += "\"{klass}\" *-- \"{dep}\"\n".format(
klass=c.name, dep=dep)
if add_legend:
result += """
package \"B is a subtype of A\" <<Rectangle>> {
......@@ -296,7 +323,11 @@ def retrieve_substructure(start_record_types, depth, result_id_set=None, result_
def to_graphics(recordtypes: list[db.Entity], filename: str,
output_dirname: Optional[str] = None,
formats: list[str] = ["tsvg"],
silent:bool=True):
silent: bool = True,
add_properties: bool = True,
add_recordtypes: bool = True,
add_legend: bool = True,
style: str = "default"):
"""Calls recordtypes_to_plantuml_string(), saves result to file and
creates an svg image
......@@ -319,7 +350,11 @@ def to_graphics(recordtypes: list[db.Entity], filename: str,
silent : bool
Don't output messages.
"""
pu = recordtypes_to_plantuml_string(recordtypes)
pu = recordtypes_to_plantuml_string(recordtypes,
add_properties,
add_recordtypes,
add_legend,
style)
if output_dirname is None:
output_dirname = os.getcwd()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment