in src/composer/composer.py [0:0]
def visit(composition, f):
''' apply f to all fields of type composition '''
composition = copy.copy(composition if isinstance(composition, dict) else composition.__dict__)
combinator = composition['.combinator']()
if 'components' in combinator:
composition['components'] = list(map(lambda v: f(v, None), composition['components']))
if 'args' in combinator:
for arg in combinator['args']:
if 'type' not in arg and arg['name'] in composition:
composition[arg['name']] = f(composition[arg['name']], arg['name'])
return Composition(composition)