public override JsExpression VisitObjectLiteralExpression(JsObjectLiteralExpression expression, object data) { if (expression.Values.Count > 0) { _result = true; return(expression); } else { return(base.VisitObjectLiteralExpression(expression, data)); } }
public object VisitObjectLiteralExpression(JsObjectLiteralExpression expression, bool parenthesized) { if (expression.Values.Count == 0) { _cb.Append("{}"); } else { bool multiline = !_minify && expression.Values.Any(p => p.Value is JsFunctionDefinitionExpression); if (multiline) { _cb.AppendLine("{").Indent(); } else { _cb.Append("{" + _space); } bool first = true; foreach (var v in expression.Values) { if (!first) { if (multiline) { _cb.AppendLine(","); } else { _cb.Append("," + _space); } } _cb.Append(v.Name.IsValidJavaScriptIdentifier() ? v.Name : ("'" + v.Name.EscapeJavascriptStringLiteral() + "'")) .Append(":" + _space); VisitExpression(v.Value, GetPrecedence(v.Value.NodeType) >= PrecedenceComma); // We ned to parenthesize comma expressions, eg. [1, (2, 3), 4] first = false; } if (multiline) { _cb.AppendLine().Outdent().Append("}"); } else { _cb.Append(_space + "}"); } } return(null); }
public virtual JsExpression VisitObjectLiteralExpression(JsObjectLiteralExpression expression, TData data) { var values = VisitObjectLiteralProperties(expression.Values, data); return(ReferenceEquals(values, expression.Values) ? expression : JsExpression.ObjectLiteral(values)); }