summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Pipping <sebastian@pipping.org>2009-12-29 02:01:31 +0100
committerSebastian Pipping <sebastian@pipping.org>2009-12-29 02:01:31 +0100
commit42deac2d731c7ead984bc7cca79cf001e8ca387c (patch)
tree73f031acae8723b6c9cf9fd22e74d78b341f0818
parenta4499de57c1a71e29beda6320dfeb79286668799 (diff)
downloadlayman-42deac2d731c7ead984bc7cca79cf001e8ca387c.tar.gz
layman-42deac2d731c7ead984bc7cca79cf001e8ca387c.tar.bz2
layman-42deac2d731c7ead984bc7cca79cf001e8ca387c.zip
Indent XML when writing to disk
-rw-r--r--layman/overlay.py2
-rw-r--r--layman/utils.py18
2 files changed, 20 insertions, 0 deletions
diff --git a/layman/overlay.py b/layman/overlay.py
index 820c38a..37e611c 100644
--- a/layman/overlay.py
+++ b/layman/overlay.py
@@ -41,6 +41,7 @@ from layman.overlays.rsync import RsyncOverlay
from layman.overlays.tar import TarOverlay
from layman.debug import OUT
+from layman.utils import indent
#===============================================================================
#
@@ -156,6 +157,7 @@ class Overlays:
xml = ET.Element('repositories', version="1.0")
xml[:] = [e.to_minidom() for e in self.overlays.values()]
+ indent(xml)
tree = ET.ElementTree(xml)
try:
f = open(path, 'w')
diff --git a/layman/utils.py b/layman/utils.py
index 4ab0940..0a824f1 100644
--- a/layman/utils.py
+++ b/layman/utils.py
@@ -43,6 +43,24 @@ def ensure_unicode(obj, encoding='utf-8'):
obj = unicode(obj, encoding)
return obj
+# From <http://effbot.org/zone/element-lib.htm>
+# BEGIN
+def indent(elem, level=0):
+ i = "\n" + level*" "
+ if len(elem):
+ if not elem.text or not elem.text.strip():
+ elem.text = i + " "
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ for elem in elem:
+ indent(elem, level+1)
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ else:
+ if level and (not elem.tail or not elem.tail.strip()):
+ elem.tail = i
+# END
+
def path(path_elements):
'''
Concatenate a path from several elements.