private void BuildStepStatement(string indent, StringBuilder stepOfScenario) { string stepTextByEscapingQuotaion = StepText.Replace("\"", "\\\""); stepOfScenario .Append(indent + StepKeyword + "(L\"" + stepTextByEscapingQuotaion + "\"") .Append(BuildStepRealArg()) .Append(");"); }
protected override string ConvertParameters(Dictionary <string, object> parameters) { foreach (var valuePair in parameters) { var match = Regex.Match(StepText, $"&{valuePair.Key}&"); if (!match.Success) { var matches = Regex.Matches(StepText, $"&{valuePair.Key}\\.(.*?)&"); foreach (Match match1 in matches) { if (!match1.Success || match1.Groups.Count < 2) { continue; } var obj = valuePair.Value; var call = match1.Groups[1].Value; var firstIndex = call.LastIndexOf('('); if (firstIndex != -1) { var lastIndex = call.LastIndexOf(')'); if (lastIndex - firstIndex > 1) { throw new ArgumentException("Sorry, you cannot use methods with parameters in AllureStep at the moment.\nThis will be added in later releases."); } call = call.Remove(firstIndex, lastIndex - firstIndex + 1); } var member = ReflectionHelper.GetMember(obj.GetType(), call); if (member != null) { var memberValue = ReflectionHelper.GetMemberValue(member, obj); StepText = StepText.Replace(match1.Value, memberValue?.ToString()); } } } else { var val = match.Value; StepText = StepText.Replace(val, valuePair.Value?.ToString()); } } return(StepText); }