def join(lst1, lst2, separator=None): ret = ListValue(lst1) lst2 = ListValue(lst2).value lst_len = len(ret.value) ret.value.update((k + lst_len if isinstance(k, int) else k, v) for k, v in lst2.items()) separator = __parse_separator(separator) if separator is not None: ret.value['_'] = separator return ret
def dash_compass_slice(lst, start_index, end_index=None): start_index = NumberValue(start_index).value end_index = NumberValue(end_index).value if end_index is not None else None ret = {} lst = ListValue(lst).value for i, item in lst.items(): if not isinstance(i, int): if i == '_': ret[i] = item elif i > start_index and end_index is None or i <= end_index: ret[i] = item return ListValue(ret)
def reject(lst, *values): """Removes the given values from the list""" ret = {} if not isinstance(lst, ListValue): lst = ListValue(lst) lst = lst.value if len(values) == 1: values = values[0] if isinstance(values, ListValue): values = values.value.values() for i, item in lst.items(): if item not in values: ret[i] = item separator = lst.get('_', None) if separator is not None: ret['_'] = separator return ListValue(ret)
def nth(lst, n): """ Return the Nth item in the string """ n = NumberValue(n).value lst = ListValue(lst).value try: n = int(float(n)) - 1 n = n % len(lst) except: if n.lower() == 'first': n = 0 elif n.lower() == 'last': n = -1 try: ret = lst[n] except KeyError: lst = [v for k, v in sorted(lst.items()) if isinstance(k, int)] try: ret = lst[n] except: ret = '' return ret.__class__(ret)