static void Main(string[] args) { var filePath = GetPath(@"Scripts\BForms\Bundles\js\components.js"); var minimalPath = GetPath(@"Scripts\minimal.js"); var initUIPath = GetPath(@"Scripts\BForms\Plugins\UI\bforms.initUI.js"); var text = File.ReadAllText(initUIPath); var parser = new JavaScriptParser(); var program = parser.Parse(text); var visitor = new RequireVisitor(); var result = visitor.Visit(program, initUIPath); var lines = GetScriptLines(text); var flattenedResults = result.GetFlattened(); flattenedResults.ForEach( x => { EnsureHasRange(x.ParentNode.Node, lines); EnsureHasRange(x.DependencyArrayNode, lines); EnsureHasRange(x.ModuleDefinitionNode, lines); EnsureHasRange(x.ModuleIdentifierNode, lines); EnsureHasRange(x.SingleDependencyNode, lines); var arguments = x.ParentNode.Node.As<CallExpression>().Arguments; foreach (var arg in arguments) { EnsureHasRange(arg, lines); } }); var reqLines = flattenedResults.Select(x => GetTextFromFullScript(x.ParentNode.Node.Range, text)).ToList(); var modifiedString = text; var transformCollection = new TransformationCollection(); foreach (var req in flattenedResults) { transformCollection.Add(ToDefineTransformation.Create(req)); if (req.Type != RequireCallType.Define) { transformCollection.Add(AddIdentifierTransformation.Create(req, "gogu")); } } transformCollection.ExecuteAll(ref modifiedString); }
private TransformationCollection GetTransformations(VisitorResult result, List<RequireCall> flattened) { var trans = new TransformationCollection(); if (!result.RequireCalls.Any()) { var shim = GetShim(RelativeFileName); var deps = new List<string>(); if (shim != null) { deps = shim.Dependencies.Select(r => r.Dependency).ToList(); } trans.Add(ShimFileTransformation.Create(this.CheckForConfigPath(RelativeFileName.ToModuleName()), deps)); } else { foreach (var reqCall in result.RequireCalls.Where(r => r.DependencyArrayNode != null)) { trans.Add(NormalizeDepsTransformation.Create(reqCall)); } // if there are no define calls but there is at least one require module call, transform that into a define call if (!result.RequireCalls.Where(r => r.Type == RequireCallType.Define).Any()) { if (result.RequireCalls.Where(r => r.IsModule).Any()) { var call = result.RequireCalls.Where(r => r.IsModule).FirstOrDefault(); trans.Add(ToDefineTransformation.Create(call)); trans.Add(AddIdentifierTransformation.Create(call,this.CheckForConfigPath(RelativeFileName.ToModuleName()))); } } else { var defineCall = result.RequireCalls.Where(r => r.Type == RequireCallType.Define).FirstOrDefault(); if (string.IsNullOrEmpty(defineCall.Id)) { trans.Add(AddIdentifierTransformation.Create(defineCall, this.CheckForConfigPath(RelativeFileName.ToModuleName()))); } if (defineCall.DependencyArrayNode == null) { trans.Add(AddEmptyDepsArrayTransformation.Create(defineCall)); } } } return trans; }