func (executor *specExecutor) resolveToProtoStepItem(step *parser.Step) *gauge_messages.ProtoItem { protoStepItem := parser.ConvertToProtoItem(step) paramResolver := new(parser.ParamResolver) parameters := paramResolver.GetResolvedParams(step, nil, executor.dataTableLookup()) updateProtoStepParameters(protoStepItem.Step, parameters) return protoStepItem }
// Not passing pointer as we cannot modify the original concept step's lookup. This has to be populated for each iteration over data table. func (executor *specExecutor) resolveToProtoConceptItem(concept parser.Step) *gauge_messages.ProtoItem { paramResolver := new(parser.ParamResolver) parser.PopulateConceptDynamicParams(&concept, executor.dataTableLookup()) protoConceptItem := parser.ConvertToProtoItem(&concept) for stepIndex, step := range concept.ConceptSteps { // Need to reset parent as the step.parent is pointing to a concept whose lookup is not populated yet if step.IsConcept { step.Parent = &concept protoConceptItem.GetConcept().GetSteps()[stepIndex] = executor.resolveToProtoConceptItem(*step) } else { stepParameters := paramResolver.GetResolvedParams(step, &concept, executor.dataTableLookup()) updateProtoStepParameters(protoConceptItem.Concept.Steps[stepIndex].Step, stepParameters) } } return protoConceptItem }