47 from PLCGenerator import * |
47 from PLCGenerator import * |
48 |
48 |
49 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?") |
49 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?") |
50 |
50 |
51 ScriptDirectory = paths.AbsDir(__file__) |
51 ScriptDirectory = paths.AbsDir(__file__) |
52 |
|
53 |
|
54 class LibraryResolver(etree.Resolver): |
|
55 """Helper object for loading library in xslt stylesheets""" |
|
56 |
|
57 def __init__(self, controller, debug=False): |
|
58 self.Controller = controller |
|
59 self.Debug = debug |
|
60 |
|
61 def resolve(self, url, pubid, context): |
|
62 # TODO stop deepcopy |
|
63 lib_name = os.path.basename(url) |
|
64 if lib_name in ["project", "stdlib", "extensions"]: |
|
65 lib_el = etree.Element(lib_name) |
|
66 if lib_name == "project": |
|
67 lib_el.append(deepcopy(self.Controller.GetProject(self.Debug))) |
|
68 elif lib_name == "stdlib": |
|
69 for lib in StdBlckLibs.values(): |
|
70 lib_el.append(deepcopy(lib)) |
|
71 else: |
|
72 for ctn in self.Controller.ConfNodeTypes: |
|
73 lib_el.append(deepcopy(ctn["types"])) |
|
74 return self.resolve_string(etree.tostring(lib_el), context) |
|
75 |
|
76 |
52 |
77 # ------------------------------------------------------------------------------- |
53 # ------------------------------------------------------------------------------- |
78 # Helpers object for generating pou block instances list |
54 # Helpers object for generating pou block instances list |
79 # ------------------------------------------------------------------------------- |
55 # ------------------------------------------------------------------------------- |
80 |
56 |