public void FindFieldsInsideFunction(ITsBlock body) { //Find Fields foreach (var instruction in body.StatementsEnumerable) { if (instruction is ITsExpressionStatement) { var expr = (instruction as ITsExpressionStatement).Expression.Expressions.LastOrDefault() as ITsSimpleAssignmentExpression; if (expr != null && /*expr.IsAssignment &&*/ expr.Dest.GetText().StartsWith("this.")) { var name = expr.Dest.GetText().Replace("this.", ""); var end = name.IndexOf("."); if (end != -1) { name = name.Substring(0, end); } end = name.IndexOf("["); if (end != -1) { name = name.Substring(0, end); } if (!PrototypeFields.ContainsKey(name)) { PrototypeFields.Add(name, null); } } } } }
public TsFunction(ITsFunctionExpression expression) { Node = expression; Parameters = expression.ParameterList; Block = expression.Block; //expression.GetText() }
public TsFunction(ITsFunctionStatement statement) { Node = statement; Parameters = statement.Signatures[0].Signature.ParameterList; Block = statement.Block; }
public void FindAndMoveNgMethodsInsideFunction(ITsBlock body) { TsElementFactory factory = TsElementFactory.GetInstance(body); foreach (var instruction in body.StatementsEnumerable) { if (instruction is ITsExpressionStatement) { var expr = (instruction as ITsExpressionStatement).Expression.Expressions.LastOrDefault() as ITsSimpleAssignmentExpression; if (expr != null && /*expr.IsAssignment &&*/ expr.Dest.GetText().StartsWith("$scope.")) { var name = expr.Dest.GetText().Replace("$scope.", ""); var end = name.IndexOf("."); if (end != -1) { name = name.Substring(0, end); } if (name.IndexOf("[") > -1) { continue; } if (expr.Source is ITsFunctionExpression) { PrototypeMethods.Add(new Tuple<string, TsFunction>(name, new TsFunction(expr.Source as ITsFunctionExpression))); ModificationUtil.ReplaceChild(expr, factory.CreateStatement("$scope." + name + " = this." + name + ".bind(this);")); } } } } }
public void FindAndMoveMethodsInsideFunction(ITsBlock body) { foreach (var instruction in body.StatementsEnumerable.ToArray()) { //this.f1 = function(){} if (instruction is ITsExpressionStatement) { var expr = (instruction as ITsExpressionStatement).Expression.Expressions.LastOrDefault() as ITsSimpleAssignmentExpression; if (expr != null && /*expr.IsAssignment &&*/ expr.Dest.GetText().StartsWith("this.")) { var name = expr.Dest.GetText().Replace("this.", ""); var end = name.IndexOf("."); if (end != -1) { name = name.Substring(0, end); } if (name.IndexOf("[")>-1){ continue; } if (expr.Source is ITsFunctionExpression) { PrototypeMethods.Add(new Tuple<string, TsFunction>(name, new TsFunction(expr.Source as ITsFunctionExpression))); ModificationUtil.DeleteChild(expr); } } } //function f1(){} if (instruction is ITsFunctionStatement) { var expr = (instruction as ITsFunctionStatement); PrototypeMethods.Add(new Tuple<string, TsFunction>(expr.DeclaredName, new TsFunction(expr))); ModificationUtil.DeleteChild(expr); } //var f1 = function(){}, f2 = function(){} if (instruction is ITsVariableDeclarationStatement) { var expr = (instruction as ITsVariableDeclarationStatement); var vars = expr.DeclarationsEnumerable.ToArray(); foreach (var declaration in vars) { if (declaration.Value is ITsFunctionExpression) { PrototypeMethods.Add(new Tuple<string, TsFunction>(declaration.NameNode.GetText(), new TsFunction(declaration.Value as ITsFunctionExpression))); ModificationUtil.DeleteChild(declaration); } } if (expr.Declarations.IsEmpty) { ModificationUtil.DeleteChild(expr); } } } }