# This file is part of Beremiz.
# See COPYING file for copyrights details.
from __future__ import absolute_import
import util.paths as paths
from plcopen.structures import StdBlckLibs
ScriptDirectory = paths.AbsDir(__file__)
class XSLTModelQuery(object):
""" a class to handle XSLT queries on project and libs """
def __init__(self, controller, xsltpath, ext = []):
# arbitrary set debug to false, updated later
# merge xslt extensions for library access to query specific ones
("GetProject", lambda *_ignored:
controller.GetProject(self.debug)),
("GetStdLibs", lambda *_ignored:
[lib for lib in StdBlckLibs.values()]),
("GetExtensions", lambda *_ignored:
[ctn["types"] for ctn in controller.ConfNodeTypes])
# parse and compile. "beremiz" arbitrary namespace for extensions
os.path.join(ScriptDirectory, xsltpath),
extensions={ ("beremiz", name):call for name, call in xsltext})
def _process_xslt(self, root, debug, **kwargs):
res = self.xslt(root,**{k:etree.XSLT.strparam(v) for k,v in kwargs.iteritems()})
# print(self.xslt.error_log)