diff -r b85b13b1c2ec -r 986dbad48ab7 PLCControler.py --- a/PLCControler.py Fri Feb 16 01:48:48 2018 +0100 +++ b/PLCControler.py Fri Feb 16 02:29:10 2018 +0100 @@ -271,11 +271,10 @@ """ object for collecting instances path list""" def __init__(self, controller): self.Instances = [] - + self.controller = controller parser = etree.XMLParser() # arbitrary set debug to false, updated later - self.resolver = LibraryResolver(controller, debug=False) - parser.resolvers.add(self.resolver) + self.debug = False # TODO compile XSLT once for all at __init__ self.instances_path_xslt_tree = etree.XSLT( @@ -283,13 +282,25 @@ os.path.join(ScriptDirectory, "plcopen", "instances_path.xslt"), parser), extensions={ - ("instances_ns", "AddInstance"): self.AddInstance}) + ("instances_ns", "AddInstance"): self.AddInstance, + ("instances_ns", "GetProject"): self.GetProject, + ("instances_ns", "GetStdLibs"): self.GetStdLibs, + ("instances_ns", "GetExtensions"): self.GetExtensions}) def AddInstance(self, context, *args): self.Instances.append(args[0][0]) + def GetProject(self, context, *args): + return self.controller.GetProject(self.debug) + + def GetStdLibs(self, context, *args): + return [lib for lib in StdBlckLibs.values()] + + def GetExtensions(self, context, *args): + return [ctn["types"] for ctn in self.controller.ConfNodeTypes] + def Collect(self, root, name, debug): - self.resolver.debug = debug + self.debug = debug self.instances_path_xslt_tree( root, instance_type=etree.XSLT.strparam(name)) res = self.Instances