def cast_literal(self, node): if is_lang_node(node): if node: return node.get(self._langkey) or node.values()[0] else: return None else: return super(LocalizedNodeLens, self).cast_literal(node)
def _cast_value(self, v, via_key): if is_lang_node(v): return v.get(self._langkey) or v.values()[0] if v else None elif is_raw_node(v): return self._new_lens(v, via_key) elif isinstance(v, list): l = [] for o in v: if is_raw_node(o): # casts and calls _index_node(o), which will merge # any stored with o o = self._new_lens(o, via_key) indexed = self._get_indexed_node(o) if indexed: o = indexed l.append(o) return l else: return v