def _find_referent(obj, refattrs): refs = [] igt = obj.igt if hasattr(obj, 'igt') else obj refd = ref.referents(igt, obj.id, refattrs=refattrs) # sort for now because ref.referents doesn't return document order for ra, ids in sorted(refd.items()): refs.extend(igt.get_any(_id) for _id in ids) return refs
def referents(self, id, refattrs=None): if refattrs is None: return self._referent_cache.get(id, {}) else: return ref.referents(self, id, refattrs=refattrs)
def test_referents(self): assert ref.referents(self.xc1[0], 't', refattrs=('alignment',)) == {'alignment': []} assert ref.referents(self.xc1[0], 't1', refattrs=('alignment',)) == {'alignment': []} assert ref.referents(self.xc2[0], 't', refattrs=('alignment',)) == {'alignment': ['p']} assert ref.referents(self.xc2[0], 't1', refattrs=('alignment',)) == {'alignment': ['p1']} assert ref.referents(self.xc3[0], 'w', refattrs=('alignment', 'segmentation')) == {'alignment': [], 'segmentation': ['p']} assert ref.referents(self.xc3[0], 'w') == {'alignment': [], 'segmentation': ['p'], 'content': []} assert ref.referents(self.xc3[0], 'm') == {'alignment': [], 'segmentation': ['w'], 'content': []} assert ref.referents(self.xc3[0], 'g') == {'alignment': ['m'], 'segmentation': [], 'content': []} assert ref.referents(self.xc3[0], 'x') == {'alignment': ['w'], 'segmentation': [], 'content': []} assert ref.referents(self.xc3[0], 'x', refattrs=('alignment', 'children')) == {'alignment': ['w'], 'children': ['x']} assert ref.referents(self.xc3[0], 'x1', refattrs=('alignment', 'children')) == {'alignment': ['w1'], 'children': []} assert ref.referents(self.xc3[0], 'x4', refattrs=('alignment', 'children')) == {'alignment': [], 'children': ['x1', 'x2']}