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.ERROR, 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.ERROR, 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, model, action, **kwargs):
54 super(ActWindow, self).__init__(**kwargs)
56 class Function(YamlTag):
57 def __init__(self, model, name, **kwargs):
60 super(Function, self).__init__(**kwargs)
62 class Report(YamlTag):
63 def __init__(self, model, name, string, **kwargs):
67 super(Report, self).__init__(**kwargs)
69 class Delete(YamlTag):
70 def __init__(self, model, id, search, **kwargs):
74 super(Delete, self).__init__(**kwargs)
76 class Context(YamlTag):
77 def __init__(self, **kwargs):
78 super(Context, self).__init__(**kwargs)
81 def __init__(self, **kwargs):
82 super(Url, self).__init__(**kwargs)
85 def __init__(self, expression):
86 self.expression = expression
87 super(Eval, self).__init__()
90 def __init__(self, *args, **kwargs):
91 super(Ref, self).__init__(*args, **kwargs)
95 super(IrSet, self).__init__()
97 def assert_constructor(loader, node):
98 kwargs = loader.construct_mapping(node)
99 return Assert(**kwargs)
101 def record_constructor(loader, node):
102 kwargs = loader.construct_mapping(node)
103 return Record(**kwargs)
105 def python_constructor(loader, node):
106 kwargs = loader.construct_mapping(node)
107 return Python(**kwargs)
109 def menuitem_constructor(loader, node):
110 kwargs = loader.construct_mapping(node)
111 return Menuitem(**kwargs)
113 def workflow_constructor(loader, node):
114 kwargs = loader.construct_mapping(node)
115 return Workflow(**kwargs)
117 def act_window_constructor(loader, node):
118 kwargs = loader.construct_mapping(node)
119 return ActWindow(**kwargs)
121 def function_constructor(loader, node):
122 kwargs = loader.construct_mapping(node)
123 return Function(**kwargs)
125 def report_constructor(loader, node):
126 kwargs = loader.construct_mapping(node)
127 return Report(**kwargs)
129 def delete_constructor(loader, node):
130 kwargs = loader.construct_mapping(node)
131 return Delete(**kwargs)
133 def context_constructor(loader, node):
134 kwargs = loader.construct_mapping(node)
135 return Context(**kwargs)
137 def url_constructor(loader, node):
138 kwargs = loader.construct_mapping(node)
141 def eval_constructor(loader, node):
142 expression = loader.construct_scalar(node)
143 return Eval(expression)
145 def ref_constructor(loader, tag_suffix, node):
146 if tag_suffix == "id":
147 kwargs = {"id": loader.construct_scalar(node)}
149 kwargs = loader.construct_mapping(node)
152 def ir_set_constructor(loader, node):
153 kwargs = loader.construct_mapping(node)
154 return IrSet(**kwargs)
156 # Registers constructors for custom tags.
157 # Constructors are actually defined globally: do not redefined them in another
158 # class/file/package. This means that module recorder need import this file.
159 yaml.add_constructor(u"!assert", assert_constructor)
160 yaml.add_constructor(u"!record", record_constructor)
161 yaml.add_constructor(u"!python", python_constructor)
162 yaml.add_constructor(u"!menuitem", menuitem_constructor)
163 yaml.add_constructor(u"!workflow", workflow_constructor)
164 yaml.add_constructor(u"!act_window", act_window_constructor)
165 yaml.add_constructor(u"!function", function_constructor)
166 yaml.add_constructor(u"!report", report_constructor)
167 yaml.add_constructor(u"!context", context_constructor)
168 yaml.add_constructor(u"!delete", delete_constructor)
169 yaml.add_constructor(u"!url", url_constructor)
170 yaml.add_constructor(u"!eval", eval_constructor)
171 yaml.add_multi_constructor(u"!ref", ref_constructor)
172 yaml.add_constructor(u"!ir_set", ir_set_constructor)