6 Superclass for constructors of custom tags defined in yaml file.
8 def __init__(self, **kwargs):
9 self.__dict__.update(kwargs)
10 def __getitem__(self, key):
11 return getattr(self, key)
12 def __getattr__(self, attr):
15 return "<%s %s>" % (self.__class__.__name__, sorted(self.__dict__.items()))
17 class Assert(YamlTag):
18 def __init__(self, model, id, severity=logging.WARNING, string="NONAME", **kwargs):
21 self.severity = severity
23 super(Assert, self).__init__(**kwargs)
25 class Record(YamlTag):
26 def __init__(self, model, id, use='id', **kwargs):
29 super(Record, self).__init__(**kwargs)
31 class Python(YamlTag):
32 def __init__(self, model, severity=logging.WARNING, name="", **kwargs):
34 self.severity = severity
36 super(Python, self).__init__(**kwargs)
38 class Menuitem(YamlTag):
39 def __init__(self, id, name, **kwargs):
42 super(Menuitem, self).__init__(**kwargs)
44 class Workflow(YamlTag):
45 def __init__(self, model, action, **kwargs):
48 super(Workflow, self).__init__(**kwargs)
50 class ActWindow(YamlTag):
51 def __init__(self, **kwargs):
52 super(ActWindow, self).__init__(**kwargs)
54 class Function(YamlTag):
55 def __init__(self, model, name, **kwargs):
58 super(Function, self).__init__(**kwargs)
60 class Report(YamlTag):
61 def __init__(self, model, name, string, **kwargs):
65 super(Report, self).__init__(**kwargs)
67 class Delete(YamlTag):
68 def __init__(self, **kwargs):
69 super(Delete, self).__init__(**kwargs)
71 class Context(YamlTag):
72 def __init__(self, **kwargs):
73 super(Context, self).__init__(**kwargs)
76 def __init__(self, **kwargs):
77 super(Url, self).__init__(**kwargs)
80 def __init__(self, expression):
81 self.expression = expression
82 super(Eval, self).__init__()
85 def __init__(self, *args, **kwargs):
86 super(Ref, self).__init__(*args, **kwargs)
90 super(IrSet, self).__init__()
92 def assert_constructor(loader, node):
93 kwargs = loader.construct_mapping(node)
94 return Assert(**kwargs)
96 def record_constructor(loader, node):
97 kwargs = loader.construct_mapping(node)
98 return Record(**kwargs)
100 def python_constructor(loader, node):
101 kwargs = loader.construct_mapping(node)
102 return Python(**kwargs)
104 def menuitem_constructor(loader, node):
105 kwargs = loader.construct_mapping(node)
106 return Menuitem(**kwargs)
108 def workflow_constructor(loader, node):
109 kwargs = loader.construct_mapping(node)
110 return Workflow(**kwargs)
112 def act_window_constructor(loader, node):
113 kwargs = loader.construct_mapping(node)
114 return ActWindow(**kwargs)
116 def function_constructor(loader, node):
117 kwargs = loader.construct_mapping(node)
118 return Function(**kwargs)
120 def report_constructor(loader, node):
121 kwargs = loader.construct_mapping(node)
122 return Report(**kwargs)
124 def delete_constructor(loader, node):
125 kwargs = loader.construct_mapping(node)
126 return Delete(**kwargs)
128 def context_constructor(loader, node):
129 kwargs = loader.construct_mapping(node)
130 return Context(**kwargs)
132 def url_constructor(loader, node):
133 kwargs = loader.construct_mapping(node)
136 def eval_constructor(loader, node):
137 expression = loader.construct_scalar(node)
138 return Eval(expression)
140 def ref_constructor(loader, tag_suffix, node):
141 if tag_suffix == "id":
142 kwargs = {"id": loader.construct_scalar(node)}
144 kwargs = loader.construct_mapping(node)
147 def ir_set_constructor(loader, node):
148 kwargs = loader.construct_mapping(node)
149 return IrSet(**kwargs)
151 # Registers constructors for custom tags.
152 # Constructors are actually defined globally: do not redefined them in another
153 # class/file/package. This means that module recorder need import this file.
154 def add_constructors():
155 yaml.add_constructor(u"!assert", assert_constructor)
156 yaml.add_constructor(u"!record", record_constructor)
157 yaml.add_constructor(u"!python", python_constructor)
158 yaml.add_constructor(u"!menuitem", menuitem_constructor)
159 yaml.add_constructor(u"!workflow", workflow_constructor)
160 yaml.add_constructor(u"!act_window", act_window_constructor)
161 yaml.add_constructor(u"!function", function_constructor)
162 yaml.add_constructor(u"!report", report_constructor)
163 yaml.add_constructor(u"!context", context_constructor)
164 yaml.add_constructor(u"!delete", delete_constructor)
165 yaml.add_constructor(u"!url", url_constructor)
166 yaml.add_constructor(u"!eval", eval_constructor)
167 yaml.add_multi_constructor(u"!ref", ref_constructor)
168 yaml.add_constructor(u"!ir_set", ir_set_constructor)