Пример #1
0
        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);
        }
Пример #2
0
 public string DoMinify(JsMin minifier, string input)
 {
     using (var reader = new StringReader(input))
     {
         var result = minifier.Minify(reader);
         _output.WriteLine("Minified: " + result);
         return result;
     }
 }
Пример #3
0
 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);
     }
 }
Пример #4
0
 public string DoMinify(JsMin minifier, string input)
 {
     using (var reader = new StringReader(input))
     {
         var result = minifier.Minify(reader);
         _output.WriteLine("Minified: " + result);
         return(result);
     }
 }
Пример #5
0
 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;
     }
 }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
        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);
        }
Пример #19
0
 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);
 }
Пример #20
0
        public void AssertException(FileInfo inputFile, FileInfo expectedFile)
        {
            var jsmin = new JsMin();

            Assert.Throws <Exception>(() => DoMinify(jsmin, inputFile));
        }
Пример #21
0
        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);
        }
Пример #22
0
        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);
        }
Пример #23
0
 public void AssertException(FileInfo inputFile, FileInfo expectedFile)
 {
     var jsmin = new JsMin();
     Assert.Throws<Exception>(() => DoMinify(jsmin, inputFile));
 }
Пример #24
0
        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);
            }
        }