Пример #1
0
        public static string Minify(string text, MinifyType mode,Yui.CssSettings cssOptions)
        {
            if (string.IsNullOrEmpty(text))
            {
                return text;
            }

            var cssmode = mode == MinifyType.yuiHybrid ? CssCompressionType.Hybrid
               : mode == MinifyType.yuiMARE ? CssCompressionType.MichaelAshRegexEnhancements
               : CssCompressionType.StockYuiCompressor;

            return CssCompressor.Compress(text, cssOptions.ColumnWidth, cssmode, cssOptions.RemoveComments);
        }
Пример #2
0
        public static string Minify(string text, MinifyType mode, Yui.CssSettings cssOptions)
        {
            if (string.IsNullOrEmpty(text))
            {
                return(text);
            }

            var compressor = new CssCompressor();

            compressor.CompressionType   = CompressionType.Standard;
            compressor.LineBreakPosition = cssOptions.ColumnWidth;
            compressor.RemoveComments    = cssOptions.RemoveComments;
            return(compressor.Compress(text));
        }
Пример #3
0
 public MinifiedFile FindFileByFullName(string root, string fullName, MinifyType minifyType)
 {
     if (minifyType == MinifyType.CSHtml)
     {
         return(UserSettings.CSHtmlFiles.Find(x => x.GetFullSourcePath(root) == fullName));
     }
     else if (minifyType == MinifyType.Js)
     {
         return(UserSettings.JsFiles.Find(x => x.GetFullSourcePath(root) == fullName));
     }
     else
     {
         return(null);
     }
 }
Пример #4
0
        public MinifyType GetMinifyType(string fullFileName)
        {
            this.Settings = Settings.Instance(fullFileName);
            MinifyType mode = MinifyType.yui;

            if (this.IsChirpMichaelAshLessFile(fullFileName) || this.IsChirpHybridLessFile(fullFileName) || this.IsChirpLessFile(fullFileName))
            {
                mode = this.IsChirpMichaelAshLessFile(fullFileName) ? MinifyType.yuiMARE
       : this.IsChirpHybridLessFile(fullFileName) ? MinifyType.yuiHybrid
       : MinifyType.yui;
            }

            if (this.IsChirpMSAjaxLessFile(fullFileName))
            {
                mode = MinifyType.msAjax;
            }

            return(mode);
        }
Пример #5
0
 public MinifiedFile FindFile(string path, string relativePath, MinifyType minifyType)
 {
     if (minifyType == MinifyType.CSHtml)
     {
         return(UserSettings.CSHtmlFiles.Find(x => x.SourceFile == relativePath ||
                                              x.SourceFile == path ||
                                              x.OutputFile == relativePath ||
                                              x.OutputFile == path));
     }
     else if (minifyType == MinifyType.Js)
     {
         return(UserSettings.JsFiles.Find(x => x.SourceFile == relativePath ||
                                          x.SourceFile == path ||
                                          x.OutputFile == relativePath ||
                                          x.OutputFile == path));
     }
     else
     {
         return(null);
     }
 }
Пример #6
0
        public MinifyType GetMinifyType(string fullFileName)
        {
            this.Settings = Settings.Instance(fullFileName);
            MinifyType mode = MinifyType.gctAdvanced;

            if (this.IsChirpGctCoffeeScriptFile(fullFileName))
            {
                mode = MinifyType.gctAdvanced;
            }

            if (this.IsChirpMSAjaxCoffeeScriptFile(fullFileName))
            {
                mode = MinifyType.msAjax;
            }

            if (this.IsChirpSimpleCoffeeScriptFile(fullFileName))
            {
                mode = MinifyType.gctSimple;
            }

            if (this.IsChirpWhiteSpaceCoffeeScriptFile(fullFileName))
            {
                mode = MinifyType.gctWhiteSpaceOnly;
            }

            if (this.IsChirpYUICoffeeScriptFile(fullFileName))
            {
                mode = MinifyType.yui;
            }

            if (this.IsChirpUglifyCoffeeScriptFile(fullFileName))
            {
                mode = MinifyType.uglify;
            }

            return(mode);
        }
Пример #7
0
        internal static IHtmlString BaseBundle(MinifyType bundleType, string bundleName, params string[] filePaths)
        {
            var newFiles = CheckFiles(filePaths);
            if (newFiles == null)
            {
                return new HtmlString(string.Empty);
            }

            var bundles = BundleTable.Bundles;
            BundleTable.EnableOptimizations = EnableBundle;

            string name = "";
            if (string.IsNullOrWhiteSpace(bundleName))
            {
                name = BundleName;
            }

            IHtmlString htmlString = null;

            switch (bundleType)
            {
                case MinifyType.Javascript:
                    //var bundle = new ScriptBundle(name);
                    //bundle.Transforms.Add(new MyBundlePlatform("BEGIN TEST INTERFACE", "END TEST INTERFACE"));
                    //bundle.Include(newFiles);
                    var bundle = new Bundle(name, new MyBundlePlatform("// BEGIN TEST INTERFACE", "// END TEST INTERFACE"));
                    bundle.Include(newFiles);
                    bundles.Add(bundle);
                    return Scripts.Render(name);
                case MinifyType.Css:
                    bundles.Add(new StyleBundle(name).Include(newFiles));
                    return Styles.Render(name);
            }

            return new HtmlString(string.Empty);
        }
Пример #8
0
        private static string BundleInlines(MinifyType bundleType, Func<object, object> textFunc)
        {
            string notMinified = string.Empty;
            notMinified = (textFunc.Invoke(new object()) ?? "").ToString();

            if (!EnableBundle)
            {
                return notMinified;
            }

            var minifier = new Minifier();
            string minified = string.Empty;

            minifier.MinifyJavaScript("", new CodeSettings());

            switch (bundleType)
            {
                case MinifyType.Javascript:
                    minified = minifier.MinifyJavaScript(notMinified, new CodeSettings
                    {
                        EvalTreatment = EvalTreatment.MakeImmediateSafe,
                        PreserveImportantComments = false
                    });
                    break;
                case MinifyType.Css:
                    minified = minifier.MinifyStyleSheet(notMinified, new CssSettings
                    {
                    });
                    break;
                default:
                    break;
            }

            return minified;
        }
Пример #9
0
        public static string Minify(string fullFileName, string outputText, ProjectItem projectItem, MinifyType mode)
        {
            if (mode == MinifyType.Unspecified)
            {
                mode = Settings.Instance(fullFileName).DefaultCssMinifier;
            }

            switch (mode)
            {
            case MinifyType.msAjax:
                return(MsCssEngine.Minify(fullFileName, outputText, projectItem));

            case MinifyType.yui:
            case MinifyType.yuiMARE:
            case MinifyType.yuiHybrid:
            default:
                return(YuiCssEngine.Minify(outputText, mode));
            }
        }
Пример #10
0
        public static string Minify(string fullFileName, string outputText, ProjectItem projectItem, MinifyType mode, string customArgument)
        {
            if (mode == MinifyType.Unspecified)
            {
                mode = Settings.Instance(fullFileName).DefaultJavaScriptMinifier;
            }

            switch (mode)
            {
            case MinifyType.gctAdvanced:
                return(ClosureCompilerEngine.Minify(fullFileName, outputText, projectItem, ClosureCompilerCompressMode.ADVANCED_OPTIMIZATIONS, customArgument));

            case MinifyType.gctSimple:
                return(ClosureCompilerEngine.Minify(fullFileName, outputText, projectItem, ClosureCompilerCompressMode.SIMPLE_OPTIMIZATIONS, customArgument));

            case MinifyType.gctWhiteSpaceOnly:
                return(ClosureCompilerEngine.Minify(fullFileName, outputText, projectItem, ClosureCompilerCompressMode.WHITESPACE_ONLY, customArgument));

            case MinifyType.msAjax:
                return(MsJsEngine.Minify(fullFileName, outputText, projectItem));

            case MinifyType.uglify:
                return(UglifyEngine.Minify(fullFileName, outputText, projectItem));

            case MinifyType.jsBeautifier:
                return(UglifyEngine.Beautify(outputText));

            default:
                return(YuiJsEngine.Minify(fullFileName, outputText, projectItem));
            }
        }
Пример #11
0
 public static string Minify(string fullFileName, string outputText, ProjectItem projectItem, MinifyType mode)
 {
     return(Minify(fullFileName, outputText, projectItem, mode, string.Empty));
 }
Пример #12
0
        public async Task AddToConfigFileAsync(DocumentNode document, string fullName, string relativePath, MinifyType minifyType)
        {
            if (Config is null)
            {
                return;
            }

            MinifiedFile minifiedFile;

            switch (minifyType)
            {
            case MinifyType.Js:
                minifiedFile = AddJsToConfigFile(relativePath);
                Config.UserSettings.JsFiles.Add((JsMinifiedFile)minifiedFile);
                break;

            case MinifyType.CSHtml:
                minifiedFile = await ThreadHelper.JoinableTaskFactory.RunAsync(() =>
                {
                    var file = AddCSHtmlToConfigFileAsync(document, fullName, relativePath);

                    return(Task.FromResult(file));
                });

                Config.UserSettings.CSHtmlFiles.Add((CsHtmlMinifiedFile)minifiedFile);
                break;

            default:
                throw new InvalidOperationException("Please create an issue on GitHub, if this throws.");
            }

            await MinifyFileAsync(minifiedFile);

            SetConfigFile(Config.FullName);
        }
Пример #13
0
        public static string Minify(string text, MinifyType mode)
        {
            Settings settings = Settings.Instance();

            return(Minify(text, mode, settings.YuiCssSettings));
        }
Пример #14
0
 public static string Minify(string text, MinifyType mode)
 {
     Settings settings = Settings.Instance();
     return Minify(text, mode, settings.YuiCssSettings);
 }
Пример #15
0
        /// <summary>
        /// <para>Minify the script code.</para>
        /// </summary>
        /// <param name="source">
        /// <para>script code.</para>
        /// </param>
        /// <param name="type"></param>
        /// <returns>
        /// <para>Minified string.</para>
        /// </returns>
        public static string MinifyCode(String source, MinifyType type = MinifyType.Javascript)
        {
            try
            {
                if (_minify == null)
                {
                    Assembly assembly;
                    try
                    {
                        assembly = Assembly.Load("AjaxMin");
                    }
                    catch (Exception exp)
                    {
                        assembly = null;
                    }

                    if (assembly != null)
                    {
                        var typeClass = assembly.GetType("Microsoft.Ajax.Utilities.Minifier");
                        if (typeClass != null)
                        {
                            _minify           = assembly.CreateInstance("Microsoft.Ajax.Utilities.Minifier");
                            _codeSettings     = assembly.CreateInstance("Microsoft.Ajax.Utilities.CodeSettings");
                            _minifyConverType = MinifyConverterType.AjaxMin;
                        }
                        else // old assembly
                        {
                            _minify           = assembly.CreateInstance("Microsoft.Ajax.Utilities.ScriptCruncher");
                            _minifyConverType = MinifyConverterType.AjaxMinCrunch;
                        }
                    }
                    else
                    {
                        _minify           = (int)0;
                        _minifyConverType = MinifyConverterType.Internal;
                    }
                }

                switch (type)
                {
                case MinifyType.Javascript:
                    switch (_minifyConverType)
                    {
                    case MinifyConverterType.AjaxMinCrunch:
                        return(_minify.Crunch(source) + ";");        // resolve error on minifier

                    case MinifyConverterType.AjaxMin:
                        _codeSettings.TermSemicolons = true;
                        return(_minify.MinifyJavaScript(source, _codeSettings));

                    case MinifyConverterType.Internal:
                        return(Mtn.Library.Web.Utils.JsMinifier.GetMinifiedCode(source));
                    }
                    break;

                case MinifyType.Css:
                    switch (_minifyConverType)
                    {
                    case MinifyConverterType.AjaxMinCrunch:
                        return(_minify.Crunch(source));

                    case MinifyConverterType.AjaxMin:
                        return(_minify.MinifyStyleSheet(source));

                    case MinifyConverterType.Internal:
                        return(Mtn.Library.Web.Utils.CssMinifier.CssMinify(source));
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException("type");
                }
            }
            catch (Exception exp)
            {
                Statistics.Add(exp.GetAllMessagesMtn());
                return(source);
            }
            return(source);
        }