Add field value insertion to all formats

This commit is contained in:
Veronica Berglyd Olsen
2024-10-28 18:17:25 +01:00
parent f92521c93a
commit 42f904f1ea
5 changed files with 58 additions and 19 deletions
+12
View File
@@ -630,6 +630,8 @@ class ToOdt(Tokenizer):
fLink = ""
elif fFmt == TextFmt.FNOTE:
xNode = self._generateFootnote(fData)
elif fFmt == TextFmt.FIELD:
xNode = self._generateField(fData)
elif fFmt == TextFmt.STRIP:
pass
@@ -725,6 +727,16 @@ class ToOdt(Tokenizer):
return xNote
return None
def _generateField(self, key: str) -> ET.Element | None:
"""Generate a data field XML object."""
if key and (field := key.partition(":")[2]):
xField = ET.Element(_mkTag("text", "user-field-get"), attrib={
_mkTag("text", "name"): f"Manuscript{field[:1].upper()}{field[1:]}",
})
xField.text = "0"
return xField
return None
def _emToCm(self, value: float) -> str:
"""Converts an em value to centimetres."""
return f"{value*2.54/72*self._fontSize:.3f}cm"