fonttools/Lib/ufoLib/plistFromTree.py
2015-11-08 11:11:11 +01:00

41 lines
1.0 KiB
Python
Executable File

from __future__ import absolute_import
"""
Small helper module to parse Plist-formatted data from trees as created
by xmlTreeBuilder.
"""
__all__ = "readPlistFromTree"
from ufoLib.plistlib import PlistParser
def readPlistFromTree(tree):
"""
Given a (sub)tree created by xmlTreeBuilder, interpret it
as Plist-formatted data, and return the root object.
"""
parser = PlistTreeParser()
return parser.parseTree(tree)
class PlistTreeParser(PlistParser):
def parseTree(self, tree):
element, attributes, children = tree
self.parseElement(element, attributes, children)
return self.root
def parseElement(self, element, attributes, children):
self.handleBeginElement(element, attributes)
for child in children:
if isinstance(child, tuple):
self.parseElement(child[0], child[1], child[2])
else:
self.handleData(child)
self.handleEndElement(element)
if __name__ == "__main__":
from ufoLib.xmlTreeBuilder import buildTree
tree = buildTree("xxx.plist", stripData=0)
print(readPlistFromTree(tree))