private void ProcessNamespace(string ns) { if (processedNamespaces.Contains(ns)) { return; } processedNamespaces.Add(ns); var lastDotIndex = ns.LastIndexOf('.'); var parentNamespace = lastDotIndex != -1 ? ns.Substring(0, lastDotIndex) : null; if (parentNamespace != null) { ProcessNamespace(parentNamespace); } JsBinaryExpression result; if (lastDotIndex == -1) { result = Js.Assign(Js.Reference("window").Member(ns), Js.Object()); } else { result = Js.Assign(Js.Reference(ns), Js.Object()); } result.Right = Js.Binary(JsBinaryOperator.LogicalOr, result.Left, result.Right); body.Express(result); }
public void TestMethod2() { string s; var t = Js.Binary((x, y) => x + y); var u = Js.AddAssign( Js.Variable("t"), Js.Function <Func <JsObject, JsObject, JsObject, JsObject> >((a, b, c) => a + b * c) ); s = u.ToString(); }
protected override Expression VisitBinary(BinaryExpression node) { Js left, right; Visit(node.Left); left = constructed; Visit(node.Right); right = constructed; var ops = new Dictionary <ExpressionType, string>() { { ExpressionType.Add, "+" }, { ExpressionType.Subtract, "-" }, { ExpressionType.Multiply, "*" }, { ExpressionType.Divide, "/" }, }; constructed = Js.Binary(left, right, ops[node.NodeType]); return(node); }