From aa1907a56748e05ec17cdb48105a3a3ba41ca8fc Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Mon, 8 Apr 2019 13:09:02 +0300 Subject: [PATCH] add the write tags methods. --- pysollib/kpat_load_save.py | 21 ++++++++++++++++++++- tests/lib/pysol_tests/kpat_load_save.py | 12 ++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/pysollib/kpat_load_save.py b/pysollib/kpat_load_save.py index 5beb9f91..fac9a52a 100644 --- a/pysollib/kpat_load_save.py +++ b/pysollib/kpat_load_save.py @@ -13,6 +13,11 @@ class KpatEmitter: """docstring for KpatEmitter""" + def _ind_out(self, text): + """docstring for _out""" + self._out("\t" * self._indent) + self._out(text) + def _out(self, text): """docstring for _out""" self.f.write(text) @@ -20,8 +25,22 @@ class KpatEmitter: def __init__(self, f): self.f = f self._out("""\n""") + self._tags = [] + self._indent = 0 def writeEmptyTag(self, name, attrs): - self._out( + self._ind_out( "<" + name + "".join([" "+x[0]+"=\""+x[1]+"\"" for x in attrs]) + "/>\n") + + def writeStartTag(self, name, attrs): + self._ind_out( + "<" + name + "".join([" "+x[0]+"=\""+x[1]+"\"" for x in attrs]) + + ">\n") + self._tags.append({'name': name}) + self._indent += 1 + + def endTag(self): + """docstring for endTag""" + self._indent -= 1 + self._ind_out("\n".format(self._tags.pop()['name'])) diff --git a/tests/lib/pysol_tests/kpat_load_save.py b/tests/lib/pysol_tests/kpat_load_save.py index 00fa9708..836a9086 100644 --- a/tests/lib/pysol_tests/kpat_load_save.py +++ b/tests/lib/pysol_tests/kpat_load_save.py @@ -16,3 +16,15 @@ class MyTests(unittest.TestCase): f.getvalue(), "\n" + "\n") + f = cStringIO() + e = KpatEmitter(f) + self.assertTrue(e) + e.writeStartTag("foo", [("one", "val1"), ("two", "val2")]) + e.writeEmptyTag("flutter", []) + e.endTag() + self.assertEqual( + f.getvalue(), + "\n" + + "\n" + + "\t\n" + + "\n")