def p_task_def(p): '''task_def : TASK id IMPLEMENTS id LPAREN impl_params RPAREN | TASK id task_contents ''' if p[3] != 'implements': task = Task(p[2], script_accumulator[:]) task.requirements = requirement_accumulator[:] task.roles = role_accumulator[:] if len(description_accumulator) == 1: task.description = description_accumulator[0] del(description_accumulator[:]) del(script_accumulator[:]) del(role_accumulator[:]) del(requirement_accumulator[:]) else: # get the task template from p[4] template = TaskTemplate.lookup.get(p[4]) param_names = template.template_parameters implementation_params_accumulator.reverse() key = 0 for param in param_names: template.set_parameter(param, implementation_params_accumulator[key]) key += 1 template.render_task(p[2]) del(implementation_params_accumulator[:])