public void JsMinify_Minify() { //Arrange var script = @"var Messaging = { GetMessage: function(callback) { $.ajax({ type: ""POST"", url: ""/Services/MessageService.asmx/HelloWorld"", data: ""{}"", contentType: ""application/json; charset=utf-8"", dataType: ""json"", success: function(msg) { callback.apply(this, [msg.d]); } }); } var blah = 1; blah++; blah = blah + 2; var newBlah = ++blah; newBlah += 234 +4; };"; var minifier = new JsMin(); //Act var output = _helper.DoMinify(minifier, script); Assert.Equal( "var Messaging={GetMessage:function(callback){$.ajax({type:\"POST\",url:\"/Services/MessageService.asmx/HelloWorld\",data:\"{}\",contentType:\"application/json; charset=utf-8\",dataType:\"json\",success:function(msg){callback.apply(this,[msg.d]);}});}\nvar blah=1;blah++;blah=blah+2;var newBlah=++blah;newBlah+=234+4;};", output); }
public string DoMinify(JsMin minifier, string input) { using (var reader = new StringReader(input)) { var result = minifier.Minify(reader); _output.WriteLine("Minified: " + result); return result; } }
public string DoMinify(JsMin minifier, FileInfo input) { using (var reader = File.OpenText(input.FullName)) { var result = minifier.Minify(reader); _output.WriteLine("Minified: " + result); return(result); } }
public string DoMinify(JsMin minifier, string input) { using (var reader = new StringReader(input)) { var result = minifier.Minify(reader); _output.WriteLine("Minified: " + result); return(result); } }
public string DoMinify(JsMin minifier, FileInfo input) { using (var reader = File.OpenText(input.FullName)) { var result = minifier.Minify(reader); _output.WriteLine("Minified: " + result); return result; } }
public void AssertFileMatch(FileInfo inputFile, FileInfo expectedFile) { var jsmin = new JsMin(); var input = DoMinify(jsmin, inputFile); var expected = File.ReadAllText(expectedFile.FullName, Encoding.UTF8); _output.WriteLine("Expected: " + expected); Assert.Equal(expected, input); }
public void JsMinify_TypeScript_Enum() { var script = @"$(""#TenderListType"").val(1 /* Calendar */.toString());"; var minifier = new JsMin(); var output = _helper.DoMinify(minifier, script); Assert.Equal("$(\"#TenderListType\").val(1..toString());", output); }
public async void JsMinify_TypeScript_Enum() { var script = @"$(""#TenderListType"").val(1 /* Calendar */.toString());"; var minifier = new JsMin(); var output = await minifier.ProcessAsync(new FileProcessContext(script, Mock.Of <IWebFile>())); Assert.Equal("\n$(\"#TenderListType\").val(1..toString());", output); }
public void JsMinify_Escaped_Quotes_In_String_Literal() { var script = "var asdf=\"Some string\\\'s with \\\"quotes\\\" in them\""; var minifier = new JsMin(); //Act var output = _helper.DoMinify(minifier, script); Assert.Equal("var asdf=\"Some string\\\'s with \\\"quotes\\\" in them\"", output); }
public void JsMinify_Function() { var script = @"function(el,args) { if ( !args ) { args = {}; } } "; var minifier = new JsMin(); var output = _helper.DoMinify(minifier, script); Assert.Equal("function(el,args)\n{if(!args){args={};}}", output); }
public async void JsMinify_Backslash_Line_Escapes() { var script = @"function Test() { jQuery(this).append('<div>\ <div>\ <a href=""http://google.com"" /></a>\ </div>\ </div>'); }"; var minifier = new JsMin(); //Act var output = await minifier.ProcessAsync(new FileProcessContext(script, Mock.Of <IWebFile>())); //Assert Assert.Equal("\nfunction Test(){jQuery(this).append('<div>\\\n\n <div>\\\n\n <a href=\"http://google.com\" /></a>\\\n\n </div>\\\n\n </div>');}", output); }
public void JsMinify_Backslash_Line_Escapes() { var script = @"function Test() { jQuery(this).append('<div>\ <div>\ <a href=""http://google.com"" /></a>\ </div>\ </div>'); }"; var minifier = new JsMin(); //Act var output = _helper.DoMinify(minifier, script); //Assert Assert.Equal("function Test(){jQuery(this).append('<div> <div> <a href=\"http://google.com\" /></a> </div></div>');}", output); }
public async void JsMinify_Minify_With_Unary_Operator() { //see: http://clientdependency.codeplex.com/workitem/13162 //Arrange var script = @"var c = {}; var c.name = 0; var i = 1; c.name=i+ +new Date; alert(c.name);"; var minifier = new JsMin(); //Act var output = await minifier.ProcessAsync(new FileProcessContext(script, Mock.Of <IWebFile>())); //Assert Assert.Equal("\nvar c={};var c.name=0;var i=1;c.name=i+ +new Date;alert(c.name);", output); }
public void JsMinify_Minify_With_Unary_Operator() { //see: http://clientdependency.codeplex.com/workitem/13162 //Arrange var script = @"var c = {}; var c.name = 0; var i = 1; c.name=i+ +new Date; alert(c.name);"; var minifier = new JsMin(); //Act var output = _helper.DoMinify(minifier, script); //Assert Assert.Equal("var c={};var c.name=0;var i=1;c.name=i+ +new Date;alert(c.name);", output); }
public void AssertException(FileInfo inputFile, FileInfo expectedFile) { var jsmin = new JsMin(); Assert.Throws <Exception>(() => DoMinify(jsmin, inputFile)); }
public void AssertException(FileInfo inputFile, FileInfo expectedFile) { var jsmin = new JsMin(); Assert.Throws<Exception>(() => DoMinify(jsmin, inputFile)); }
static void Generate(string pathToSource, string pathToResult, string pathToResultSvg, bool embedSvg, bool includeAll = false) { /*string PathToSource = @"..\..\..\Toolkit\Framework\"; * string PathToResult = @"..\..\..\Toolkit\Minified\Toolkit.js"; * string PathToResultSvg = @"..\..\..\Toolkit\Minified\Svg.js"; * bool embedSvg = true;*/ var files = Directory.GetFiles(pathToSource); var sourceFiles = new List <SourceFile>(); StringBuilder sb = new StringBuilder(); sb.AppendLine("/* Minify Order(50) */"); sb.AppendLine("window.Svg = {};"); var hadSvg = false; foreach (var file in files) { var data = File.ReadAllText(file); if (file.EndsWith(".svg")) { data = data.Replace(" xmlns:serif=\"http://www.serif.com/\"", ""); var svgStart = data.IndexOf("<svg"); var svgEnd = data.IndexOf(">", svgStart) + 1; var svgStartElement = data.Substring(svgStart, svgEnd - svgStart); // Extract all groups and save them as javascript strings. var name = file.Substring(file.LastIndexOf(Path.DirectorySeparatorChar) + 1).Replace(".svg", "").Replace(" ", "_").Replace(".", "_"); sb.AppendLine("var s=\"" + svgStartElement.Replace("\"", "\\\"") + "\";"); sb.AppendLine("window.Svg[\"" + name + "\"]={"); var posLastId = 0; while (true) { var posName = data.IndexOf("id=\"", posLastId + 1); if (posName <= 0) { break; } posLastId = posName; hadSvg = true; var groupName = data.Substring(posName + 4, 100); groupName = groupName.Substring(0, groupName.IndexOf("\"")); for (; posName > 0 && data[posName] != '<'; posName--) { } var posEnd = posName; var levels = 0; for (; posEnd < data.Length; posEnd++) { var c = data[posEnd]; if (c == '<') { if (data[posEnd + 1] == '/') { levels -= 1; } else { levels += 1; } } else if (c == '/' && data[posEnd + 1] == '>') { levels -= 1; } else if (c == '>' && levels == 0) { break; } } if (posEnd == data.Length) { break; } posEnd++; var posDefs = data.IndexOf("<defs>"); var posEndDefs = 0; if (posDefs > 0) { posEndDefs = data.IndexOf("</defs>", posDefs) + 7; } //console.log(response.substr(posName, posEnd - posName)); var tmp = data.Substring(posName, posEnd - posName) + (posEndDefs < 9 ? "" : data.Substring(posDefs, posEndDefs - posDefs)) + "</svg>"; sb.AppendLine("\"" + groupName + "\":s+\"" + tmp.Replace("\"", "\\\"").Replace("\r", "").Replace("\n", "") + "\","); } sb.Append("};"); continue; } else if (!file.EndsWith(".js")) { continue; } var sourceFile = new SourceFile() { Source = data, Order = 100 }; // Check if there is a /* Minify Order(123) */ header, so we know what order to use if (sourceFile.Source.Contains("/* Minify Skip") && !includeAll) { continue; } var order = sourceFile.Source.IndexOf("/* Minify Order("); if (order >= 0) { var sourceOrderHeader = sourceFile.Source.Substring(order + 16, 5); if (sourceOrderHeader.Contains(")")) { sourceOrderHeader = sourceOrderHeader.Substring(0, sourceOrderHeader.IndexOf(")")).Trim(); if (Int32.TryParse(sourceOrderHeader, out order)) // Reusing variable because why not { sourceFile.Order = order; } } else { Console.WriteLine("Error in minify order header"); } } sourceFiles.Add(sourceFile); } if (hadSvg) { File.WriteAllText(pathToResultSvg, sb.ToString()); if (embedSvg) { sourceFiles.Add(new SourceFile() { Source = sb.ToString(), Order = 50 }); } } StringBuilder result = new StringBuilder(); foreach (var file in sourceFiles.OrderBy(a => a.Order)) { result.Append(file.Source); } using (var reader = new StringReader(result.ToString())) { var resultMinified = new JsMin().Minify(reader); File.WriteAllText(pathToResult, resultMinified); } }