MCPcopy Create free account
hub / github.com/bugy/script-server / TemplateProperty

Class TemplateProperty

src/model/template_property.py:7–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5
6
7class TemplateProperty:
8 def __init__(self, template_config, parameters: ObservableList, value_wrappers: ObservableDict, empty=None) -> None:
9 self._value_property = Property(None)
10 self._template_config = template_config
11 self._values = value_wrappers
12 self._empty = empty
13 self._parameters = parameters
14
15 pattern = re.compile('\${([^}]+)\}')
16
17 search_start = 0
18 script_template = ''
19 required_parameters = set()
20
21 templates = template_config if isinstance(template_config, list) else [template_config]
22
23 for template in templates:
24 if template:
25 while search_start < len(template):
26 match = pattern.search(template, search_start)
27 if not match:
28 script_template += template[search_start:]
29 break
30 param_start = match.start()
31 if param_start > search_start:
32 script_template += template[search_start:param_start]
33
34 param_name = match.group(1)
35 required_parameters.add(param_name)
36
37 search_start = match.end() + 1
38
39 self.required_parameters = tuple(required_parameters)
40
41 self._reload()
42
43 if self.required_parameters:
44 value_wrappers.subscribe(self._value_changed)
45 parameters.subscribe(self)
46
47 def _value_changed(self, parameter, old, new):
48 if parameter in self.required_parameters:
49 self._reload()
50
51 def on_add(self, parameter, index):
52 if parameter.name in self.required_parameters:
53 self._reload()
54
55 def on_remove(self, parameter):
56 if parameter.name in self.required_parameters:
57 self._reload()
58
59 def _reload(self):
60 values_filled = True
61 for param_name in self.required_parameters:
62 value_wrapper = self._values.get(param_name)
63 if value_wrapper is None or is_empty(value_wrapper.mapped_script_value):
64 values_filled = False

Callers 3

__init__Method · 0.90
_set_default_valueMethod · 0.90
create_propertyMethod · 0.85

Calls

no outgoing calls

Tested by 1

create_propertyMethod · 0.68