"""Scenario preprocessors and their combinations.""" # ============================================================================= # preprocessors # ============================================================================= def pp_modality_as_hierarchy_root(situations): """Set disclosure modality as the root value in a disclosure item. >>> dsl = [ ... {'a': 1, 'disclosure': ['m1:0:1.2', 'm1:1']}, ... {'a': 2, 'disclosure': ['m1:0', 'm2:2']}, ... ] >>> for ds in pp_modality_as_hierarchy_root(dsl): ... print sorted(ds.items()) [('a', 1), ('disclosure', ['m1.0:1.2', 'm1.1'])] [('a', 2), ('disclosure', ['m1.0', 'm2.2'])] """ transformed = [] for sit in situations: sit = sit.copy() sit['disclosure'] = [".".join(i.split(":", 1)) for i in sit['disclosure']] transformed.append(sit) return transformed def pp_modality_as_hierarchy_leaf(situations): """Set disclosure modality as the leaf value in a disclosure item. >>> dsl = [ ... {'a': 1, 'disclosure': ['m1:0:1.2', 'm1:1']}, ... {'a': 2, 'disclosure': ['m1:0', 'm2:2']}, ... ] >>> for ds in pp_modality_as_hierarchy_leaf(dsl): ... print sorted(ds.items()) [('a', 1), ('disclosure', ['0:1.2.m1', '1.m1'])] [('a', 2), ('disclosure', ['0.m1', '2.m2'])] """ transformed = [] for sit in situations: sit = sit.copy() sit['disclosure'] = [".".join(reversed(i.split(":", 1))) for i in sit['disclosure']] transformed.append(sit) return transformed # add new preprocessors here # ============================================================================= # chains of preprocessors # ============================================================================= chains = { 'mr': [pp_modality_as_hierarchy_root], 'ml': [pp_modality_as_hierarchy_leaf], }