func (paramResolver *ParamResolver) GetResolvedParams(step *gauge.Step, parent *gauge.Step, dataTableLookup *gauge.ArgLookup) []*gauge_messages.Parameter { parameters := make([]*gauge_messages.Parameter, 0) for _, arg := range step.Args { parameter := new(gauge_messages.Parameter) parameter.Name = proto.String(arg.Name) if arg.ArgType == gauge.Static { parameter.ParameterType = gauge_messages.Parameter_Static.Enum() parameter.Value = proto.String(arg.Value) } else if arg.ArgType == gauge.Dynamic { var resolvedArg *gauge.StepArg if parent != nil { resolvedArg = parent.GetArg(arg.Value) } else { resolvedArg = dataTableLookup.GetArg(arg.Value) } //In case a special table used in a concept, you will get a dynamic table value which has to be resolved from the concept lookup parameter.Name = proto.String(resolvedArg.Name) if resolvedArg.Table.IsInitialized() { parameter.ParameterType = gauge_messages.Parameter_Special_Table.Enum() parameter.Table = paramResolver.createProtoStepTable(&resolvedArg.Table, dataTableLookup) } else { parameter.ParameterType = gauge_messages.Parameter_Dynamic.Enum() parameter.Value = proto.String(resolvedArg.Value) } } else if arg.ArgType == gauge.SpecialString { parameter.ParameterType = gauge_messages.Parameter_Special_String.Enum() parameter.Value = proto.String(arg.Value) } else if arg.ArgType == gauge.SpecialTable { parameter.ParameterType = gauge_messages.Parameter_Special_Table.Enum() parameter.Table = paramResolver.createProtoStepTable(&arg.Table, dataTableLookup) } else { parameter.ParameterType = gauge_messages.Parameter_Table.Enum() parameter.Table = paramResolver.createProtoStepTable(&arg.Table, dataTableLookup) } parameters = append(parameters, parameter) } return parameters }