示例#1
0
        /// <summary>
        /// js文件下载
        /// </summary>
        /// <param name="filePaths">文件路径</param>
        public static void DownJSFile(string filePaths)
        {
            try
            {
                string rootPath = Assembly.GetExecutingAssembly().CodeBase.Replace("/bin/Game.Common.DLL", "").Replace("file:///", "");

                HttpResponse response = HttpContext.Current.Response;
                response.ContentType = "text/javascript";
                string[] filePathlist = filePaths.Split(',');
                foreach (var filePath in filePathlist)
                {
                    string path = rootPath + filePath;
                    if (FileHelper.Context().IsExistFile(path))
                    {
                        string content = File.ReadAllText(path, Encoding.UTF8);
                        if (Config.GetValue("JsCompressor") == "true")
                        {
                            content = javaScriptCompressor.Compress(content);
                        }
                        response.Write(content);
                    }
                }
                response.Flush();
                response.Clear();
            }
            catch (Exception ex)
            {
                string msg = ex.Message;
                throw;
            }
        }
示例#2
0
        /// <summary>
        /// 读取js文件内容并压缩
        /// </summary>
        /// <param name="filePathlist"></param>
        /// <returns></returns>
        public static string ReadJSFile(string[] filePathlist)
        {
            StringBuilder jsStr = new StringBuilder();

            try
            {
                string rootPath = Assembly.GetExecutingAssembly().CodeBase.Replace("/bin/Learun.Util.DLL", "").Replace("file:///", "");
                foreach (var filePath in filePathlist)
                {
                    string path = rootPath + filePath;
                    if (DirFileHelper.IsExistFile(path))
                    {
                        string content = File.ReadAllText(path, Encoding.UTF8);
                        if (Config.GetValue("JsCompressor") == "true")
                        {
                            content = javaScriptCompressor.Compress(content);
                        }
                        jsStr.Append(content);
                    }
                }
                return(jsStr.ToString());
            }
            catch (Exception)
            {
                return("");
            }
        }
示例#3
0
        /// <summary>
        /// JavaScript 压缩
        /// </summary>
        /// <param name="filePath"></param>
        public static void JavaScriptCompressor(FileInfo filePath)
        {
            String _file = filePath.FullName;

            if (filePath.Name.ToLower().EndsWith(".min.js"))
            {
                return;
            }
            String SaveFile = Path.ChangeExtension(_file, ".min.js");

            if (File.Exists(SaveFile))
            {
                File.Delete(SaveFile);
                //String bakfile = SaveFile + "_" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".bak";
                //File.Move(SaveFile, bakfile);
            }

            File.SetAttributes(_file, FileAttributes.Normal); //取消文件只读
            if (filePath.Extension.ToLower() == ".js")
            {
                String strContent = File.ReadAllText(_file, Encoding.Default);

                //初始化JS压缩类
                var js = new JavaScriptCompressor();
                js.CompressionType = CompressionType.Standard; //压缩类型
                js.Encoding        = Encoding.UTF8;            //编码
                js.IgnoreEval      = false;                    //大小写转换
                js.ThreadCulture   = CultureInfo.CurrentCulture;

                strContent = js.Compress(strContent);//压缩该js
                File.WriteAllText(SaveFile, strContent, Encoding.UTF8);
            }
        }
        /// <summary>
        /// Builds the javascript package file specified in <paramref name="configPath"/>.
        /// </summary>
        /// <remarks>
        /// If package file already exists it will be rebuilt according with files access time.
        /// </remarks>
        /// <param name="environment">The environment.</param>
        /// <param name="packageName">Name of the package.</param>
        /// <param name="javascriptPath">The javascript directory server path.</param>
        /// <param name="configPath">Assets config path.</param>
        /// <returns>Generated package file name.</returns>
        public static String BuildJavascriptPack(Environment environment, String packageName, String javascriptPath, String configPath)
        {
            var packageFileName = String.Format(JavascriptPackageNameTemplate, packageName);
            var packagePath = Path.Combine(javascriptPath, packageFileName);
            var files = GetJavascriptPackFiles(environment, packageName, configPath);

            if (!File.Exists(packagePath) || File.GetLastWriteTimeUtc(packagePath) < GetMaxLastModifyDate(javascriptPath, files))
            {
                var output = new StringBuilder();
                foreach (var file in files)
                {
                    using (var reader = new StreamReader(Path.Combine(javascriptPath, file)))
                    {
                        var temp = reader.ReadToEnd();
                        if (!String.IsNullOrEmpty(temp))
                        {
                            output.Append(JavaScriptCompressor.Compress(temp));
                        }
                    }
                }

                using (var writer = new StreamWriter(File.Create(packagePath)))
                {
                    writer.Write(output.ToString());
                }
            }

            return packageFileName;
        }
 public void Minify()
 {
     try
     {
         if (Resource.Type == (int)WebresourceType.Script)
         {
             var compressor = new JavaScriptCompressor {
                 ObfuscateJavascript = Settings.ObfuscateJavascript
             };
             Resource.UpdatedStringContent = compressor.Compress(Resource.UpdatedStringContent);
             scintilla.Text = Resource.UpdatedStringContent;
         }
         else if (Resource.Type == (int)WebresourceType.Css)
         {
             var compressor = new CssCompressor {
                 RemoveComments = Settings.RemoveCssComments
             };
             Resource.UpdatedStringContent = compressor.Compress(Resource.UpdatedStringContent);
             scintilla.Text = Resource.UpdatedStringContent;
         }
     }
     catch (Exception error)
     {
         MessageBox.Show(this, $@"An error occured while minifying code: {error.Message}", @"Error",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
示例#6
0
        private string DoMinifyJs()
        {
            try
            {
                if (innerType == Enumerations.WebResourceType.Script)
                {
                    var compressor = new JavaScriptCompressor {
                        ObfuscateJavascript = options.ObfuscateJavascript
                    };
                    return(compressor.Compress(scintilla.Text));
                }

                if (innerType == Enumerations.WebResourceType.Css)
                {
                    var compressor = new CssCompressor {
                        RemoveComments = options.RemoveCssComments
                    };
                    return(compressor.Compress(scintilla.Text));
                }

                return(scintilla.Text);
            }
            catch (Exception error)
            {
                MessageBox.Show(error.ToString());
                return(originalContent);
            }
        }
示例#7
0
        public static long compress(String input, ref String filename)
        {
            long compressed = 0;

            try
            {
                String output = string.Empty;

                if (stringContainsItemFromList(filename, ".js"))
                {
                    JavaScriptCompressor compressor = new JavaScriptCompressor();
                    output     = compressor.Compress(input);
                    compressed = output.Length;
                }
                else
                {
                    CssCompressor compressor = new CssCompressor();
                    output     = compressor.Compress(input);
                    compressed = output.Length;
                }
            }
            catch
            {
                compressed = input.Replace("\\n", "").Replace("\\t", "").Replace("\\r", "").Length;
            }
            return(compressed);
        }
示例#8
0
 public static void Compressor(string ReadPath, string SavePath, string Filter)
 {
     string[] files = Directory.GetFiles(HttpContext.Current.Server.MapPath(ReadPath), Filter);
     string[] array = files;
     for (int i = 0; i < array.Length; i++)
     {
         string   text     = array[i];
         FileInfo fileInfo = new FileInfo(text);
         string   text2    = File.ReadAllText(text, Encoding.UTF8);
         if (!text.Contains(".min."))
         {
             File.SetAttributes(text, FileAttributes.Normal);
             if (!Directory.Exists(HttpContext.Current.Server.MapPath(SavePath)))
             {
                 Directory.CreateDirectory(HttpContext.Current.Server.MapPath(SavePath));
             }
             if (fileInfo.Extension.ToLower() == ".js")
             {
                 JavaScriptCompressor javaScriptCompressor = new JavaScriptCompressor();
                 javaScriptCompressor.CompressionType = 0;
                 javaScriptCompressor.Encoding        = Encoding.UTF8;
                 javaScriptCompressor.IgnoreEval      = false;
                 javaScriptCompressor.ThreadCulture   = CultureInfo.CurrentCulture;
                 text2 = javaScriptCompressor.Compress(text2);
                 File.WriteAllText(HttpContext.Current.Server.MapPath(SavePath) + "/" + fileInfo.Name, text2, Encoding.UTF8);
             }
             else if (fileInfo.Extension.ToLower() == ".css")
             {
                 CssCompressor cssCompressor = new CssCompressor();
                 text2 = cssCompressor.Compress(text2);
                 File.WriteAllText(HttpContext.Current.Server.MapPath(SavePath) + "/" + fileInfo.Name, text2, Encoding.UTF8);
             }
         }
     }
 }
        public void Process(BundleContext context, BundleResponse response)
        {
            var compiler  = new HandlebarsCompiler();
            var templates = new Dictionary <string, string>();
            var server    = context.HttpContext.Server;

            foreach (var bundleFile in response.Files)
            {
                var filePath           = server.MapPath(bundleFile.VirtualFile.VirtualPath);
                var bundleRelativePath = GetRelativePath(server, bundleFile, filePath);
                var templateName       = namer.GenerateName(bundleRelativePath, bundleFile.VirtualFile.Name);
                var template           = File.ReadAllText(filePath);
                var compiled           = compiler.Precompile(template, false);

                templates[templateName] = compiled;
            }
            StringBuilder javascript = new StringBuilder();

            foreach (var templateName in templates.Keys)
            {
                javascript.AppendFormat("Ember.TEMPLATES['{0}']=", templateName);
                javascript.AppendFormat("Ember.Handlebars.template({0});", templates[templateName]);
            }

            var Compressor = new JavaScriptCompressor();
            var compressed = Compressor.Compress(javascript.ToString());

            response.ContentType  = "text/javascript";
            response.Cacheability = HttpCacheability.Public;
            response.Content      = compressed;
        }
示例#10
0
        public dynamic[] Call(IDictionary <string, dynamic> env)
        {
            var root = _root;

            if (root.EndsWith("/"))
            {
                root = _root.Remove(_root.Length - 1);
            }

            var path = root + env["PATH_INFO"];

            if (!path.EndsWith(".js"))
            {
                return(_app.Call(env));
            }

            var response     = string.Format("Not found: {0}.", path);
            var responseCode = 400;

            if (System.IO.File.Exists(path))
            {
                var js = System.IO.File.ReadAllText(path);
                response     = JavaScriptCompressor.Compress(js);
                responseCode = 200;
            }

            return(new dynamic[] { responseCode, new Hash {
                                       { "Content-Type", "text/plain" }
                                   }, new[] { response } });
        }
示例#11
0
        public static long compress(String input, String filename)
        {
            long   compressed = 0;
            String output     = string.Empty;

            try
            {
                StreamReader inputReader  = new StreamReader(input);
                StringWriter outputWriter = new StringWriter();

                if (stringContainsItemFromList(filename, ".js"))
                {
                    JavaScriptCompressor compressor = new JavaScriptCompressor();
                    output     = compressor.Compress(input);
                    compressed = output.Length;
                }
                else
                {
                    CssCompressor compressor = new CssCompressor();
                    output     = compressor.Compress(input);
                    compressed = output.Length;
                }
            }
            catch (Exception e)
            {
                log.Debug("Error Compressing CSS or Javascript {}", e);
                log.Debug("Continuing with simple minifier");
                compressed = input.Replace("\\n", "").Replace("\\t", "").Replace("\\r", "").Length;
                //compressed = input.Replace("\\n| {2}|\\t|\\r", "").Length;
            }
            return(compressed);
        }
        private string DoMinifyJs(string originalContent)
        {
            try
            {
                if (item.Type == CodeItemType.JavaScript)
                {
                    var compressor = new JavaScriptCompressor {
                        ObfuscateJavascript = mySettings.ObfuscateJavascript
                    };
                    return(compressor.Compress(scintilla.Text));
                }

                if (item.Type == CodeItemType.Style)
                {
                    var compressor = new CssCompressor {
                        RemoveComments = mySettings.RemoveCssComments
                    };
                    return(compressor.Compress(scintilla.Text));
                }

                return(scintilla.Text);
            }
            catch (Exception error)
            {
                MessageBox.Show(error.ToString());
                return(originalContent);
            }
        }
示例#13
0
        /// <summary>
        /// Filters the assets
        /// </summary>
        /// <param name="Assets">Assets to filter</param>
        /// <returns>The filtered assets</returns>
        public IList <IAsset> Filter(IList <IAsset> Assets)
        {
            if (Assets == null || Assets.Count == 0)
            {
                return(new List <IAsset>());
            }
            if (Assets.FirstOrDefault().Type != AssetType.Javascript)
            {
                return(Assets);
            }
            var Processable = Assets.Where(x => !x.Minified);

            if (Processable.FirstOrDefault() == null)
            {
                return(Assets);
            }
            var Minifier = new JavaScriptCompressor();

            foreach (IAsset Asset in Processable.Where(x => x != null))
            {
                try
                {
                    Asset.Content  = Minifier.Compress(Asset.Content);
                    Asset.Minified = true;
                }
                catch { }
            }
            return(Assets);
        }
        public static string GetScript(ScriptIds ids, string token)
        {
            var script = @"(function (v, t) {
                if (!t) t = 'hidden';
                var chk = function () {
                    var elem = document.getElementById('" + ids.ScriptId + @"');
                    document.getElementById('" + ids.HoneyPotContainerId + @"').style.display = 'none';
                    if (elem) {
                        var newElem = document.createElement('div');
                        newElem.innerHTML = '<input type=""' + t + '"" name=""" + ids.TokenId + @""" value=""' + v + '"" />';
                        elem.parentNode.appendChild(newElem);
                        elem.parentNode.removeChild(elem);
                    } else {
                        window.setTimeout(chk, 500);
                    }
                };
                window.setTimeout(chk, 500);
                document.getElementById('" + ids.HoneyPotContainerId + @"').style.display = 'none';
                }('" + token + @"'));";

            var compressor = new JavaScriptCompressor
            {
                Encoding              = Encoding.UTF8,
                DisableOptimizations  = false,
                ObfuscateJavascript   = true,
                PreserveAllSemicolons = true,
                IgnoreEval            = true,
                ThreadCulture         = System.Globalization.CultureInfo.InvariantCulture
            };

            var example = compressor.Compress(script);

            return(example);
        }
示例#15
0
        private void btnMinify_Click(object sender, EventArgs e)
        {
            foreach (string f in Directory.GetFiles(txtInput.Text))
            {
                string filename = f.Split('\\')[f.Split('\\').Length - 1];

                string filetype = filename.Split('.')[filename.Split('.').Length - 1];

                try
                {
                    string listBox1 = string.Empty;
                    if (filetype.ToLower() == "js")
                    {
                        listBox1 = JavaScriptCompressor.Compress(File.ReadAllText(f));
                    }
                    else if (filetype.ToLower() == "css")
                    {
                        listBox1 = CssCompressor.Compress(File.ReadAllText(f));
                    }
                    string path = txtOutput.Text + "\\" + filename;
                    File.AppendAllLines(path, new[] { listBox1 });
                }
                catch (Exception)
                {
                    string listBox1 = File.ReadAllText(f);
                    string path     = txtOutput.Text + "\\" + filename;
                    File.AppendAllLines(path, new[] { listBox1 });
                }
            }
        }
示例#16
0
        public override string ToString()
        {
            GetFreeFromSet();
            if (FFrm == null || FFrm.FFContent.IsMissing())
            {
                return("未找到为本单据设计的自由表单,请先进行设计!");
            }
            if (_formStatus == FormStatus.View)
            {
                return(RenderHtmlElements());
            }
            else
            {
                // Create javascript
                var script = new StringBuilder();
                // Start script
                script.AppendLine("<script type=\"text/javascript\">");
                JavaScriptCompressor compressor = new JavaScriptCompressor();
                compressor.Encoding = Encoding.UTF8;
                script.Append(compressor.Compress(RenderJavascript()));
                script.AppendLine("</script>");

                // Insert grid id where needed (in columns)
                script.Replace("##formid##", $"frm-{FormId}");
                // Return script + required elements
                return(script.ToString() + RenderHtmlElements());
            }
        }
示例#17
0
        /// <summary>
        /// Loads all resource scripts in the namespace path of the specified type.
        /// </summary>
        /// <param name="type"></param>
        public static void LoadScripts(Type type)
        {
            lock (scriptLock)
            {
                Assembly assembly = type.Assembly;
                if (_loaded.Contains(assembly))
                {
                    return;
                }
                _loaded.Add(assembly);

                string namespacePath = string.Format("{0}.", type.Namespace);
                foreach (string fullScriptPath in assembly.GetManifestResourceNames())
                {
                    string scriptName        = fullScriptPath.Substring(namespacePath.Length, fullScriptPath.Length - namespacePath.Length);
                    Stream resource          = assembly.GetManifestResourceStream(fullScriptPath);
                    JavaScriptCompressor jsc = new JavaScriptCompressor();
                    using (StreamReader script = new StreamReader(resource))
                    {
                        string js = script.ReadToEnd();
                        _scripts.AddMissing(scriptName, js);
                        _scripts.AddMissing(
                            string.Format("{0}.min.js", scriptName.Substring(0, scriptName.Length - 3)),
                            jsc.Compress(js)
                            );
                    }
                }
            }
        }
示例#18
0
        public ActionResult Javascript(string keys)
        {
            string result = _provider.GetFromCache("resources.javascript." + Request.Url.PathAndQuery, () =>
            {
                var scriptFiles = keys.Split('|').ToList();

                var sb = new StringBuilder();

                foreach (var s in scriptFiles)
                {
                    var script = MothScriptHelper.GetFileContent(new List <string> {
                        s
                    }, HttpContext).ToString();
                    if (_provider.Enable.ScriptMinification)
                    {
                        script = JavaScriptCompressor.Compress(script, false, true, true, false, Int32.MaxValue, Encoding.UTF8, new CultureInfo("en-US"));
                    }
                    sb.AppendLine(script);
                }

                return(sb.ToString());
            }, _provider.CacheDurations.ExternalScript);

            return(new ContentResult()
            {
                Content = result,
                ContentType = "text/javascript",
            });
        }
示例#19
0
        private void button2_Click(object sender, EventArgs e)
        {
            string formPath = Config.GetValue("FormPath") + "\\Learun.Application.Web\\"; //来源文件目录
            string toPath   = Config.GetValue("ToPathWeb");                               //目标文件目录

            textBox1.Clear();
            textBox1.AppendText("开始复制文件\r\n");
            string[] filePaths = DirFileHelper.GetFileNames(formPath, "*", true);

            int num = 0;

            foreach (string filePath in filePaths)
            {
                if (filePath.IndexOf("\\bin\\") == -1 && filePath.IndexOf("\\obj\\") == -1 && filePath.IndexOf("Learun.Application.Web.csproj") == -1)
                {
                    textBox1.AppendText(num + ":" + filePath + "\r\n");
                    string path = toPath + filePath.Replace(formPath, "");
                    if (filePath.IndexOf("\\LR_Content\\") != -1)
                    {
                        string   content = File.ReadAllText(filePath, Encoding.UTF8);
                        FileInfo fi      = new FileInfo(path);
                        if (fi.Extension == ".js")
                        {
                            if (!string.IsNullOrEmpty(content))
                            {
                                content = javaScriptCompressor.Compress(content);
                            }
                            DirFileHelper.CreateFileContent(path, content);
                        }
                        else if (fi.Extension == ".css")
                        {
                            if (!string.IsNullOrEmpty(content))
                            {
                                content = cssCompressor.Compress(content);
                            }
                            DirFileHelper.CreateFileContent(path, content);
                        }
                        else
                        {
                            if (!Directory.Exists(fi.DirectoryName))
                            {
                                Directory.CreateDirectory(fi.DirectoryName);
                            }
                            System.IO.File.Copy(filePath, path, true);
                        }
                    }
                    else
                    {
                        FileInfo fi = new FileInfo(path);
                        if (!Directory.Exists(fi.DirectoryName))
                        {
                            Directory.CreateDirectory(fi.DirectoryName);
                        }
                        System.IO.File.Copy(filePath, path, true);
                    }
                    num++;
                }
            }
            textBox1.AppendText("结束复制文件\r\n");
        }
示例#20
0
        private string minify(IIncludeTypeSettings settings)
        {
            if (Content == "")
            {
                return("");
            }
            if (!settings.Minify)
            {
                return(Content);
            }
            switch (Type)
            {
            case IncludeType.Js:
                var compressor = new JavaScriptCompressor(Content);
                var jsSettings = (JsTypeElement)settings;
                var minifiedJs = compressor.Compress(jsSettings.Obfuscate, jsSettings.PreserveSemiColons, jsSettings.DisableOptimizations, settings.LineBreakAt);
                return(minifiedJs);

            case IncludeType.Css:
                var minifiedCss = CssCompressor.Compress(Content, settings.LineBreakAt, ((CssTypeElement)settings).CompressionType);
                return(minifiedCss);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        private static string CompressJs(string path)
        {
            var rawjs        = File.ReadAllText(path);
            var jsCompressor = new JavaScriptCompressor();
            var compressed   = jsCompressor.Compress(rawjs);

            return(compressed);
        }
示例#22
0
        public string Compress(string contents)
        {
            var jsCompressor = new JavaScriptCompressor {
                Encoding = Encoding.UTF8, ThreadCulture = CultureInfo.InvariantCulture
            };

            return(jsCompressor.Compress(contents));
        }
示例#23
0
        public void TestJsFileA()
        {
            //a is too large for Google
            //so should be the same as YUI compressor
            string min = JavaScriptCompressor.Compress(a_chirp_js);

            Assert.IsTrue(a_min_js.Contains(min));
        }
    private String processFile(String url)
    {
        String path          = Server.MapPath(url);
        String src           = File.ReadAllText(path);
        String compressedSrc = JavaScriptCompressor.Compress(src);

        return("\n// " + url + "\n" + compressedSrc + "\n// end " + url + "\n\n");
    }
示例#25
0
        private void InnerMinify(IAsset asset)
        {
            string content = asset.Content;
            string newContent;
            string assetUrl = asset.Url;

            try
            {
                newContent = !string.IsNullOrEmpty(content) ? _jsCompressor.Compress(content) : string.Empty;

                var errorReporter = _jsCompressor.ErrorReporter as CustomErrorReporter;
                if (errorReporter != null && errorReporter.ErrorMessages.Count > 0)
                {
                    var           stringBuilderPool   = StringBuilderPool.Shared;
                    StringBuilder errorMessageBuilder = stringBuilderPool.Rent();
                    foreach (var errorDetail in errorReporter.ErrorMessages)
                    {
                        errorMessageBuilder.AppendLine(errorDetail);
                        errorMessageBuilder.AppendLine();
                    }

                    errorReporter.ErrorMessages.Clear();

                    string errorMessage = errorMessageBuilder.ToString();
                    stringBuilderPool.Return(errorMessageBuilder);

                    throw new YuiCompressingException(errorMessage);
                }
            }
            catch (EcmaScriptRuntimeException e)
            {
                throw new AssetMinificationException(
                          string.Format(CoreStrings.Minifiers_MinificationSyntaxError,
                                        CODE_TYPE, assetUrl, MINIFIER_NAME, e.Message), e);
            }
            catch (EcmaScriptException e)
            {
                throw new AssetMinificationException(
                          string.Format(CoreStrings.Minifiers_MinificationSyntaxError,
                                        CODE_TYPE, assetUrl, MINIFIER_NAME, e.Message), e);
            }
            catch (YuiCompressingException e)
            {
                throw new AssetMinificationException(
                          string.Format(CoreStrings.Minifiers_MinificationSyntaxError,
                                        CODE_TYPE, assetUrl, MINIFIER_NAME, e.Message), e);
            }
            catch (Exception e)
            {
                throw new AssetMinificationException(
                          string.Format(CoreStrings.Minifiers_MinificationFailed,
                                        CODE_TYPE, assetUrl, MINIFIER_NAME, e.Message), e);
            }

            asset.Content  = newContent;
            asset.Minified = true;
        }
示例#26
0
        public string FilterContent(string content, ContentFilterContext context)
        {
            if (context.Minify)
            {
                return(JavaScriptCompressor.Compress(content));
            }

            return(content);
        }
示例#27
0
 /// <summary>
 /// Compress javascript using Yahoo javascript compressor
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 string minify_javascript(string data)
 {
     try
     {
         return(JavaScriptCompressor.Compress(data, false));
     }
     catch { }
     return(data);
 }
示例#28
0
        public string Precompile(string template, bool compress)
        {
            var compiled = Engine.CallGlobalFunction <string>("precompile", template, false);

            if (compress)
            {
                compiled = Compressor.Compress(compiled);
            }
            return(compiled);
        }
示例#29
0
        public void Process(BundleResponse bundle)
        {
            if (bundle == null)
            {
                throw new ArgumentNullException("bundle");
            }

            bundle.Content     = JavaScriptCompressor.Compress(bundle.Content);
            bundle.ContentType = "text/javascript";
        }
        private string Compress(string input)
        {
            var compressor = new JavaScriptCompressor
            {
                CompressionType     = CompressionType.Standard,
                Encoding            = Encoding.UTF8,
                ObfuscateJavascript = true,
            };

            return(compressor.Compress(input));
        }
        public void CompressFull_CodePlex48610Test()
        {
            string javascript = File.ReadAllText("jquery-1.3.1.js");

            var javaScriptCompressor = new JavaScriptCompressor(javascript);
            string compressedJavascript = javaScriptCompressor.Compress();
            Assert.IsTrue(!string.IsNullOrEmpty(compressedJavascript));
            Assert.IsTrue(javascript.Length > compressedJavascript.Length);

            // Now, check to see that we have some error logging stuff.
            var customErrorReporter = javaScriptCompressor.ErrorReporter as CustomErrorReporter;
            Assert.IsNotNull(customErrorReporter);
            Assert.IsTrue(customErrorReporter.ErrorMessages.Count > 0);
        }
        public void CompressTest()
        {
            // First load up some simple javascript.
            string javascript = File.ReadAllText("SampleJavaScript1.js");

            // Now compress the small javascript.
            string compressedJavascript = JavaScriptCompressor.Compress(javascript);
            Assert.IsTrue(!string.IsNullOrEmpty(compressedJavascript));
            Assert.IsTrue(javascript.Length > compressedJavascript.Length);

            // Now lets try the big mother fraker.
            javascript = File.ReadAllText("SampleJavaScript2.js");

            // Now compress the small javascript.
            compressedJavascript = JavaScriptCompressor.Compress(javascript);
            Assert.IsTrue(!string.IsNullOrEmpty(compressedJavascript));
            Assert.IsTrue(javascript.Length > compressedJavascript.Length);

            // Special Ms AJAX test.
            string original = File.ReadAllText("SampleJavaScript2.js");
            int index = original.IndexOf("Sys.Serialization.JavaScriptSerializer._stringRegEx");
            string test = original.Substring(index);

            var compressor = new JavaScriptCompressor(original);

            string minified = compressor.Compress(true, false, false, -1);
            index = minified.IndexOf("Sys.Serialization.JavaScriptSerializer._stringRegEx");
            test = minified.Substring(index);


            // And now some weird \n test.
            javascript = File.ReadAllText("SampleJavaScript3.js");

            // Now compress the small javascript.
            compressedJavascript = JavaScriptCompressor.Compress(javascript);
            Assert.IsTrue(!string.IsNullOrEmpty(compressedJavascript));
            Assert.IsTrue(javascript.Length > compressedJavascript.Length);

            // Expected failure.
            JavaScriptCompressor.Compress(null);
        }
        public void Accents_Should_Be_Retained_In_All_Cases(string threadCulture, string compressorCulture)
        {
            // Arrange
            var originalThreadCulture = Thread.CurrentThread.CurrentCulture;
            var originalThreadUICulture = Thread.CurrentThread.CurrentUICulture;
            const string source = @"Strings = {
                                        IncorrectLogin: '******'
                                    }";
            const string expected = @"Strings={IncorrectLogin:""Felaktigt användarnamn eller lösenord. Försök igen.""};";

            try
            {
                if (threadCulture != null)
                {
                    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(threadCulture);
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(threadCulture);
                }
                var compressor = new JavaScriptCompressor();
                compressor.Encoding = Encoding.UTF8;
                if (compressorCulture != null)
                {
                    compressor.ThreadCulture = CultureInfo.CreateSpecificCulture(compressorCulture);
                }

                // Act
                var actual = compressor.Compress(source);

                // Assert.
                Assert.That(actual, Is.EqualTo(expected));
            }
            finally
            {
                Thread.CurrentThread.CurrentCulture = originalThreadCulture;
                Thread.CurrentThread.CurrentUICulture = originalThreadUICulture;
            }
        }