41 lines
1.0 KiB
Python
Executable File
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))
|