def __init__(self, origin = None, values = None): super(value_string_list, self).__init__(origin) values = values or string_list() if not check.is_string_list(values): values = string_list(values) check.check_string_list(values) self.values = values
def parse(clazz, origin, text, node): if origin: check.check_value_origin(origin) check.check_node(node) if not text: values = string_list() else: values = string_list.parse(text, options = string_list.KEEP_QUOTES) return clazz(origin = origin, values = values)
def resolve(clazz, values, class_name): 'Resolve a list of values if this type into a nice dictionary.' if class_name != value_type.STRING_LIST: values_string = [ str(x) for x in values ] print('WARNING: %s: class_name should be %s instead of %s for %s' % (values[0].origin, value_type.value_to_name(value_type.STRING_LIST), value_type.value_to_name(class_name), values_string)) assert False return clazz.default_value(class_name) #raise TypeError('class_name should be %s instead of %d' % (value_type.STRING_LIST, class_name)) result = string_list() for value in values: check.check_value_string_list(value) result.extend(value.values) result.remove_dups() return result
def test_empty_defaults(self): text = '''\ ''' step = self._parse(text) r = step.resolve_values({}, testing_recipe_load_env(self.BT_LINUX)) expected = { 'bool_value': False, 'install_file_value': [], 'file_list_value': value_file_list(), 'file_value': None, 'hook_list_value': [], 'int_value': None, 'key_values_value': KVL(), 'string_list_value': string_list(), 'string_value': None, 'git_address_value': None, } self.assertEqual(expected, r) r = step.resolve_values({}, testing_recipe_load_env(self.BT_MACOS)) self.assertEqual(expected, r)
def default_value(clazz, class_name): return string_list()
def parse_node_children_to_string_list(clazz, node): result = string_list() for child in node.children: result.append(child.data.text) return result