Edouard@1950: #!/usr/bin/env python Edouard@1950: # -*- coding: utf-8 -*- Edouard@1950: # This file is part of Beremiz. Edouard@1950: # See COPYING file for copyrights details. Edouard@1950: Edouard@1950: from __future__ import absolute_import Edouard@1953: from plcopen.XSLTModelQuery import XSLTModelQuery Edouard@1950: from plcopen.types_enums import * Edouard@1950: Edouard@1953: Edouard@1950: class InstanceTagName(object): Edouard@1950: """Helpers object for generating instance tagname""" Edouard@1950: Edouard@1950: def __init__(self): Edouard@1950: self.TagName = None Edouard@1950: Edouard@1950: def GetTagName(self): Edouard@1950: return self.TagName Edouard@1950: Edouard@1950: def ConfigTagName(self, context, *args): Edouard@1950: self.TagName = ComputeConfigurationName(args[0][0]) Edouard@1950: Edouard@1950: def ResourceTagName(self, context, *args): Edouard@1950: self.TagName = ComputeConfigurationResourceName(args[0][0], args[1][0]) Edouard@1950: Edouard@1950: def PouTagName(self, context, *args): Edouard@1950: self.TagName = ComputePouName(args[0][0]) Edouard@1950: Edouard@1950: def ActionTagName(self, context, *args): Edouard@1950: self.TagName = ComputePouActionName(args[0][0], args[0][1]) Edouard@1950: Edouard@1950: def TransitionTagName(self, context, *args): Edouard@1950: self.TagName = ComputePouTransitionName(args[0][0], args[0][1]) Edouard@1950: Edouard@1950: Edouard@1950: class InstanceTagnameCollector(XSLTModelQuery): Edouard@1950: """ object for collecting instances path list""" Edouard@1950: def __init__(self, controller): Edouard@1950: XSLTModelQuery.__init__(self, Edouard@1950: controller, Edouard@1950: "instance_tagname.xslt", Edouard@1953: [(name, self.FactoryCaller(name)) Edouard@1953: for name in ["ConfigTagName", Edouard@1953: "ResourceTagName", Edouard@1953: "PouTagName", Edouard@1953: "ActionTagName", Edouard@1953: "TransitionTagName"]]) Edouard@1950: Edouard@1950: def FactoryCaller(self, funcname): Edouard@1950: def CallFactory(*args): Edouard@1950: return getattr(self.factory, funcname)(*args) Edouard@1950: return CallFactory Edouard@1950: Edouard@1950: def Collect(self, root, debug, instance_path): Edouard@1950: self.factory = InstanceTagName() Edouard@1950: self._process_xslt(root, debug, instance_path=instance_path) Edouard@1950: res = self.factory.GetTagName() Edouard@1950: self.factory = None Edouard@1950: return res