public void Write(CustomTranslationContext context, string url, string httpMethod, IList <MemberExpression> members) { var w = context.Writer; w.Write("dryv.validateAsync('"); w.Write(url); w.Write("', '"); w.Write(httpMethod); w.Write("', {"); var sep = string.Empty; foreach (var memberExpression in members) { w.Write(sep); w.Write(memberExpression.Member.Name.ToCamelCase()); w.Write(": "); context.Translator.Translate(memberExpression, context); sep = ",\n"; } w.Write("})"); }
public bool TryTranslate(CustomTranslationContext context) { if (!(context.Expression is MemberExpression memberExpression)) { return(false); } if (!Equals(memberExpression.Member, SuccessProperty)) { return(false); } if (!(memberExpression.Expression is MethodCallExpression methodCallExpression)) { return(false); } var result = FindRegularExpression(methodCallExpression); if (result == null) { throw new DryvMethodNotSupportedException(methodCallExpression, "Could not determine regular context.Expression."); } var clientRegexp = $"/{result.Pattern}/{TranslateRegexOptions(result.Options)}"; context.Writer.Write(clientRegexp); context.Writer.Write(".test("); WriteArguments(context.Translator, new[] { result.Test }, context); context.Writer.Write(")"); return(true); }
public bool TryTranslate(CustomTranslationContext context) { if (!(context.Expression is MethodCallExpression methodCallExpression)) { return(false); } if (!typeof(Task).IsAssignableFrom(methodCallExpression.Method.ReturnType)) { return(false); } if (typeof(Task).IsAssignableFrom(methodCallExpression.Method.DeclaringType)) { if (methodCallExpression.Method.Name != nameof(Task.FromResult)) { return(false); } context.Translator.Translate(methodCallExpression.Arguments.First(), context); return(true); } var controller = this.GenerateController(methodCallExpression, context); var url = this.linkGenerator.GetPathByRouteValues(controller.Name, null); var httpMethod = this.options.Value.HttpMethod.ToString().ToUpper(); var usedProperties = FindModelPropertiesInExpression(context, methodCallExpression); this.controllerCallWriter.Write(context, url, httpMethod, usedProperties); return(true); }
public bool TryTranslate(CustomTranslationContext context) { if (!(context.Expression is MemberExpression memberExpression) || memberExpression.Member != SuccessMember) { return(false); } context.Writer.Write("null"); return(true); }
public bool TryTranslate(CustomTranslationContext context) { if (!TryGetBinaryExpression(context.Expression, out var binaryExpression)) { return(false); } context.Translator.Translate(binaryExpression.Left, context); context.Translator.Translate(binaryExpression.Right, context); return(true); }
private static List <MemberExpression> FindModelPropertiesInExpression(CustomTranslationContext context, MethodCallExpression methodCallExpression) { var f = new ControllerGenerator.ChildFinder <MemberExpression>(); foreach (var argument in methodCallExpression.Arguments) { f.Visit(argument); } return(f.FoundChildren .Where(e => e.Member is PropertyInfo) .Where(e => e.Member.DeclaringType == context.ModelType) .ToList()); }
public bool TryTranslate(CustomTranslationContext context) { if (!(context.Expression is MethodCallExpression methodCallExpression)) { return(false); } if (methodCallExpression.Method.Name != nameof(object.ToString) || methodCallExpression.Arguments.Any()) { return(false); } context.Writer.Write("String("); context.Translator.Translate(methodCallExpression.Object, context); context.Writer.Write(")"); return(true); }