17 from itertools
import chain
18 from os
import linesep
20 from ..
import robotapi, utils
21 from ..publish.messages
import (RideImportSettingChanged,RideImportSettingRemoved, RideVariableUpdated,
22 RideItemSettingsChanged, RideImportSettingAdded)
23 from ..utils
import overrides, variablematcher
24 from .basecontroller
import ControllerWithParent
25 from .tags
import Tag, ForcedTag, DefaultTag
33 self._init(self.
_data_data)
36 label = data.setting_name
37 if label.startswith(
'['):
45 return [v.replace(
'|',
'\\|')
for v
in self.
as_listas_list()[1:]]
52 if self.
_data_data.comment:
54 return ' | '.join(value)
57 display_value = property
70 return self.
_data_data.comment
73 keyword_name = property
79 istring = isinstance(name, str)
80 matcher = name.match
if not istring
else lambda i: utils.eq(i, name)
84 return any(matcher_function(item
or '')
for item
in self.
as_listas_list())
87 return variablematcher.value_contains_variable(self.
valuevaluevalue, name)
110 self.
_data_data.comment = comment
117 self.
_data_data.reset()
121 return value != self.
_data_data.value
124 self.
_data_data.value = value
127 return utils.split_value(value)
134 _regexps = (re.compile(
r'(\\+)r\\n'),
135 re.compile(
r'(\\+)n'),
136 re.compile(
r'(\\+)r'),
137 re.compile(
r'(\\+) '))
146 return self.
_doc_doc.value
148 @overrides(_SettingController)
158 editable_value = property(_get_editable_value, _set_editable_value)
161 visible_value = property
167 for regexp
in self.
_regexps_regexps:
168 if regexp.pattern.endswith(
' '):
175 return self.
_replacer_replacer(
' ', match)
178 return self.
_replacer_replacer(linesep, match)
181 slashes = len(match.group(1))
183 return '\\' * (slashes - 1) + char
187 for newline
in (
'\r\n',
'\n',
'\r'):
188 item = item.replace(newline,
'\\n')
189 if item.strip().startswith(
'#'):
200 keyword_name = property
206 self.
_fixture_fixture.name = new_name
210 name, args = self.
_parse_parse(value)
211 return self.
_fixture_fixture.name != name
or self.
_fixture_fixture.args != args
214 name, args = self.
_parse_parse(value)
220 return (value[0], value[1:])
if value
else (
'', [])
229 return Tag(
None, controller=self)
235 if other.is_set
and other._tags.value
is not None:
243 if self.
_tags_tags.value
is None:
244 self.
_tags_tags.value = []
245 tag.set_index(len(self.
_tags_tags.value))
246 self.
_tags_tags.value.append(tag.name)
249 if tag
in self.
_tags_tags.value:
250 self.
_tags_tags.value.remove(tag)
254 if self.
_tags_tags.value
is None:
256 if len(self.
_tags_tags.value) == 0:
257 return chain(forced, [
Tag(
'', controller=self)])
258 own_tags = (
Tag(t, index, self)
259 for index, t
in enumerate(self.
_tags_tags.value))
260 return chain(forced, own_tags).
__iter__()
269 display_value = property
272 return ' | ' .join(tag.name.replace(
'|',
'\\|')
for tag
in self)
281 if self.
_tags_tags.value
is None:
300 if not isinstance(other, self.__class__):
308 force_tags = obj._setting_table.force_tags
310 except AttributeError:
320 if tags.value
is None:
324 for index, t
in enumerate(tags.value)]
333 val, msg = self.
_parse_parse(value)
334 return self.
_timeout_timeout.value != val
or self.
_timeout_timeout.message != msg
337 value, message = self.
_parse_parse(value)
339 self.
_timeout_timeout.message = message
342 parts = value.split(
'|', 1)
343 val = parts[0].strip()
if parts
else ''
344 msg = parts[1].strip()
if len(parts) == 2
else ''
354 _SettingController._set(self, value)
358 _SettingController.clear(self)
362 keyword_name = property
385 _SettingController.clear(self)
395 return 'Return Value'
413 return self.
_meta_meta.name
419 return self.
_meta_meta.value
422 self.
_meta_meta.name = name
423 self.
_meta_meta.value = value
436 return not (self == other)
442 return self.
_var_var.name
448 return self.
_var_var.value
454 return self.
_var_var.comment
460 return self.
_data_data
469 if isinstance(value, str):
471 self.
_var_var.name = name
472 self.
_var_var.value = value
488 if variablematcher.is_scalar_variable(self.
namenamename):
489 return self.
parentparentparent.validate_scalar_variable_name(new_name, self)
490 if variablematcher.is_dict_variable(self.
namenamename):
491 return self.
parentparentparent.validate_dict_variable_name(new_name, self)
492 return self.
parentparentparent.validate_list_variable_name(new_name, self)
503 if other.__class__ != self.__class__:
505 return self.
_var_var == other._var
508 return hash(self.
_var_var) + 1
512 if import_.type ==
'Resource':
514 elif import_.type ==
'Library':
532 return self.
_import_import.name
538 return self.
_import_import.alias
or ''
544 return self.
_import_import.args
or []
547 display_value = property
551 return ' | '.join(value)
566 self.
_import_import.name = name
567 self.
_import_import.args = utils.split_value(args
or [])
568 self.
_import_import.alias = alias
576 if not self.is_resource:
586 import_controller=self, type=self.
typetype.
lower()).publish()
591 import_controller=self, type=self.
typetype.
lower()).publish()
595 import_controller=self,
604 _resolved_import =
False
608 _previous_imported_controller =
None
613 _ImportController.set_value(self, name, args, alias)
618 self.
parentparentparent.resource_file_controller_factory.find_with_import(
625 @overrides(_ImportController)
631 @overrides(_ImportController)
635 _ImportController.publish_added(self)
637 @overrides(_ImportController)
643 _ImportController.publish_removed(self)
658 return self.
namenamename.endswith(filename)
675 parts = self.
namenamename.rsplit(
'.', 1)
678 return parts[-1].
lower()
in [
'html',
'txt',
'tsv',
'robot',
'resource']
684 @overrides(_ImportController)
692 @overrides(_ImportController)
694 return not self.
parentparentparent.parent.is_variables_import_ok(self.
_data_data)
def datafile_controller(self)
def _changed(self, value)
def _unescape_newlines_and_whitespaces(self, item)
def _set_editable_value(self, value)
def _escape_newlines_and_leading_hash(self, item)
def contains_keyword(self, name)
def _whitespace_replacer(self, match)
def _replacer(self, char, match)
def _newline_replacer(self, match)
def _get_editable_value(self)
def replace_keyword(self, new_name, old_value=None)
def _changed(self, value)
def get_previous_imported_controller(self)
_imported_resource_controller
def get_imported_controller(self)
def change_format(self, format)
def _prevent_resolve(self)
_previous_imported_controller
def change_name(self, old_name, new_name)
def set_value(self, name, args=None, alias='')
def publish_removed(self)
def contains_filename(self, filename)
def _changed(self, value)
def _init(self, template)
def replace_keyword(self, new_name, old_name=None)
def _changed(self, value)
def validate_name(self, new_name)
def notify_variable_added(self)
def set_value(self, name, value)
def notify_value_changed(self)
def publish_removed(self)
def get_imported_controller(self)
def set_value(self, name, args=None, alias='')
def import_loaded_or_modified(self)
def _split_from_separators(self, value)
def set_comment(self, comment)
def _changed(self, value)
def notify_value_changed(self)
def contains_keyword(self, name)
def _contains_keyword(self, matcher_function)
def contains_variable(self, name)
def __init__(self, parent_controller, data)
def set_from(self, other)
def set_value(self, value)
Sent whenever an import setting is added.
Sent whenever a value of import setting is changed.
Sent whenever a value of import setting is removed.
Sent when the state of a variable is changed.
def ImportController(parent, import_)