Example #1
0
        public void ReplacementTokensCSS()
        {
            var source = ReadFile(s_inputFolder, "replacements.css");

            var settings = new CssSettings();

            settings.ReplacementTokensApplyDefaults(new Dictionary <string, string> {
                { "MediaQueries.SnapMax", "600px" },
                { "bing-orange", "#930" },
                { "MetroSdk.Resolution", "24x" },
                { "Global.Right", "right" },
                { "dim-gray", "#cccccc" },
                { "theme_name", "green" },
                { "Module-ID", "weather" },
            });
            settings.ReplacementFallbacks.Add("full", "100%");
            settings.ReplacementFallbacks.Add("1x", "1x");
            settings.ReplacementFallbacks.Add("color", "#ff0000");

            var minifier = new Minifier();
            var actual   = minifier.MinifyStyleSheet(source, settings);

            var expected = ReadFile(s_expectedFolder, "replacements.css");

            Assert.AreEqual(expected, actual);
        }
        public static BundlingConfigurer UseNUglify(this BundlingConfigurer @this, CssSettings cssSettings = null, CodeSettings jsSettings = null)
        {
            @this.Services.Replace(ServiceDescriptor.Singleton <ICssMinifier>(sp => new CssMinifier(cssSettings, sp.GetRequiredService <ILoggerFactory>())));
            @this.Services.Replace(ServiceDescriptor.Singleton <IJsMinifier>(sp => new JsMinifier(jsSettings, sp.GetRequiredService <ILoggerFactory>())));

            return(@this);
        }
 CssSettings ConfigureSettings(CssSettings cssSettings)
 {
     cssSettings.CommentMode    = CssComment.None;
     cssSettings.OutputMode     = OutputMode.SingleLine;
     cssSettings.TermSemicolons = true;
     return(cssSettings);
 }
        public virtual void Process()
        {
            if (!File.Exists(_file_name))
            {
                Console.WriteLine("文件:{0}不存在", _file_name);
            }

            Minifier    minifier = new Minifier();
            CssSettings settings = new CssSettings();

            settings.CommentMode = CssComment.None;

            string content = File.ReadAllText(_file_name);

            string str = minifier.MinifyStyleSheet(content, settings);

            if (minifier.ErrorList.Count > 0)
            {
                this.GenerateErrorResponse(content, minifier.ErrorList);
            }

            string new_file_name = _file_name.Substring(0, _file_name.LastIndexOf('.')) + ".min.css";

            File.WriteAllText(new_file_name, str);

            Console.WriteLine("成功将文件:{0}进行压缩,输出文件为:{1}", _file_name, new_file_name);
        }
Example #5
0
        /// <summary>
        /// Builds the required CssSettings class needed for the Ajax Minifier.
        /// </summary>
        /// <returns>The required CssSettings class needed for the Ajax Minifier.</returns>
        private CssSettings CreateCssSettings()
        {
            CssSettings cssSettings = new CssSettings
            {
                OutputMode = this.RemoveWhiteSpace ? OutputMode.SingleLine : OutputMode.MultipleLines
            };

            if (this.ShouldMinify)
            {
                switch (this.ColorNamesRange)
                {
                case ColorNamesRange.W3CStrict:
                    cssSettings.ColorNames = CssColor.Strict;
                    break;

                case ColorNamesRange.HexadecimalOnly:
                    cssSettings.ColorNames = CssColor.Hex;
                    break;

                case ColorNamesRange.AllMajorColors:
                    cssSettings.ColorNames = CssColor.Major;
                    break;
                }
            }

            return(cssSettings);
        }
Example #6
0
        public static void Minify(CompilerOptions options)
        {
            if (!options.Minify || !File.Exists(options.OutputFilePath))
            {
                return;
            }

            string cssContent = File.ReadAllText(options.OutputFilePath);

            var settings = new CssSettings
            {
                ColorNames  = CssColor.Strict,
                CommentMode = CssComment.Important
            };

            NUglify.UglifyResult result = Uglify.Css(cssContent, settings);

            if (result.HasErrors)
            {
                return;
            }

            string minFilePath = Path.ChangeExtension(options.OutputFilePath, ".min.css");

            VsHelpers.CheckFileOutOfSourceControl(minFilePath);
            File.WriteAllText(minFilePath, result.Code, new UTF8Encoding(true));
            VsHelpers.AddNestedFile(options.OutputFilePath, minFilePath);
        }
    /// <summary>
    /// Minifies the specified CSS.
    /// </summary>
    /// <param name="resource">The CSS to minify.</param>
    /// <returns>The minified CSS, if minification was successful; otherwise, the original CSS with minification errors appended at the end.</returns>
    public string Minify(string resource)
    {
        if (String.IsNullOrEmpty(resource))
        {
            return(resource);
        }

        var settings = new CssSettings
        {
            AllowEmbeddedAspNetBlocks = false
        };
        var minifier = new Minifier();

        try
        {
            resource = minifier.MinifyStyleSheet(resource, settings);
        }
        catch
        {
            var minificationErrors = String.Join(Environment.NewLine, minifier.Errors);
            resource = AppendMinificationErrors(resource, minificationErrors);

            if (mLogErrors)
            {
                CoreServices.EventLog.LogEvent("W", "Resource minification", "CssMinificationFailed", minificationErrors);
            }
        }

        return(resource);
    }
Example #8
0
        /// <summary>
        /// Runs the CSS minifier on the content.
        /// </summary>
        public static IAsset MinifyCss(this IAsset asset, CssSettings settings)
        {
            var minifier = new CssMinifier(settings);

            asset.Processors.Add(minifier);

            return(asset);
        }
Example #9
0
        private void minifyButton_Click(object sender, EventArgs e)
        {
            this.ccsb.SetMessage("Minify in progress...");
            this.Refresh();

            foreach (var item in webResourceListView.CheckedItems)
            {
                var entity = (Entity)((ListViewItem)item).Tag;
                if (entity.GetAttributeValue <OptionSetValue>("webresourcetype").Value == 3)
                {
                    CodeSettings cs = new CodeSettings()
                    {
                        //common
                        AllowEmbeddedAspNetBlocks = aspnetCheckBox.Checked,
                        BlocksStartOnSameLine     = (BlockStart)((ComboBoxItem)bracesComboBox.SelectedItem).Value,
                        IgnoreAllErrors           = IgnoreAllErrorsCheckBox.Checked,

                        //js specific
                        AlwaysEscapeNonAscii   = asciiCheckBox.Checked,
                        CollapseToLiteral      = collapseCheckBox.Checked,
                        ConstStatementsMozilla = ConstStatementsMozillaCheckBox.Checked,
                        ErrorIfNotInlineSafe   = ErrorIfNotInlineSafeCheckBox.Checked,
                        EvalLiteralExpressions = EvalLiteralExpressionsCheckBox.Checked,
                        EvalTreatment          = (EvalTreatment)((ComboBoxItem)EvalTreatmentComboBox.SelectedItem).Value,
                        Format                        = (JavaScriptFormat)((ComboBoxItem)FormatComboBox.SelectedItem).Value,
                        LocalRenaming                 = (LocalRenaming)((ComboBoxItem)LocalRenamingComboBox.SelectedItem).Value,
                        MacSafariQuirks               = MacSafariQuirksCheckBox.Checked,
                        PreserveFunctionNames         = PreserveFunctionNamesCheckBox.Checked,
                        PreserveImportantComments     = PreserveImportantCommentsCheckBox.Checked,
                        QuoteObjectLiteralProperties  = QuoteObjectLiteralPropertiesCheckBox.Checked,
                        RemoveFunctionExpressionNames = RemoveFunctionExpressionNamesCheckBox.Checked,
                        StripDebugStatements          = StripDebugStatementsCheckBox.Checked
                    };

                    minifyJS(entity, cs);
                }
                else if (entity.GetAttributeValue <OptionSetValue>("webresourcetype").Value == 2)
                {
                    CssSettings settings = new CssSettings()
                    {
                        //common
                        AllowEmbeddedAspNetBlocks = aspnetCheckBox.Checked,
                        BlocksStartOnSameLine     = (BlockStart)((ComboBoxItem)bracesComboBox.SelectedItem).Value,
                        IgnoreAllErrors           = IgnoreAllErrorsCheckBox.Checked,
                        //css specific
                        ColorNames        = (CssColor)((ComboBoxItem)ColorNamesComboBox.SelectedItem).Value,
                        CommentMode       = (CssComment)((ComboBoxItem)CommentModeComboBox.SelectedItem).Value,
                        CssType           = (CssType)((ComboBoxItem)CssTypeComboBox.SelectedItem).Value,
                        MinifyExpressions = MinifyExpressionsCheckBox.Checked
                    };
                    minifyCSS(entity, settings);
                }
            }

            this.ccsb.SetMessage("Minify complete.");
            this.Refresh();
        }
        /// <summary>
        /// Gets a embedded CSS-code parser settings
        /// </summary>
        /// <returns>Embedded CSS-code parser settings</returns>
        private CssSettings GetEmbeddedCssParserSettings()
        {
            var embeddedCssParserSettings = new CssSettings();

            MapCssSettings(embeddedCssParserSettings, _settings);
            embeddedCssParserSettings.CssType = CssType.FullStyleSheet;

            return(embeddedCssParserSettings);
        }
        /// <summary>
        /// Gets a inline CSS-code parser settings
        /// </summary>
        /// <returns>Inline CSS-code parser settings</returns>
        private CssSettings GetInlineCssParserSettings()
        {
            var inlineCssParserSettings = new CssSettings();

            MapCssSettings(inlineCssParserSettings, _settings);
            inlineCssParserSettings.CssType = CssType.DeclarationList;

            return(inlineCssParserSettings);
        }
        /// <summary>
        /// Creates a original CSS minifier settings
        /// </summary>
        /// <param name="settings">CSS minifier settings</param>
        /// <param name="isInlineCode">Flag for whether to create a settings for inline code</param>
        /// <returns>Original CSS minifier settings</returns>
        private static CssSettings CreateOriginalCssMinifierSettings(MsAjaxCssMinificationSettings settings,
                                                                     bool isInlineCode)
        {
            var originalSettings = new CssSettings();

            MapCssSettings(originalSettings, settings);
            originalSettings.CssType = isInlineCode ? CssType.DeclarationList : CssType.FullStyleSheet;

            return(originalSettings);
        }
Example #13
0
        public CssMinifier(CssSettings settings, ILoggerFactory loggerFactory)
        {
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _settings = settings;
            _logger   = loggerFactory.CreateLogger <CssMinifier>();
        }
Example #14
0
        public void AddCssBundle_CustomSettings_Success()
        {
            var settings = new CssSettings();
            var pipeline = new AssetPipeline();
            var asset    = pipeline.AddCssBundle("/foo.css", settings, "file1.css", "file2.css");

            Assert.Equal("/foo.css", asset.Route);
            Assert.Equal("text/css; charset=UTF-8", asset.ContentType);
            Assert.Equal(2, asset.SourceFiles.Count());
            Assert.Equal(5, asset.Processors.Count);
        }
        /// <summary>
        /// Maps a CSS minifier settings
        /// </summary>
        /// <param name="originalSettings">Original CSS minifier settings</param>
        /// <param name="settings">CSS minifier settings</param>
        private static void MapCssSettings(CssSettings originalSettings, MsAjaxCssMinificationSettings settings)
        {
            MapCommonSettings(originalSettings, settings);

            originalSettings.ColorNames = Utils.GetEnumFromOtherEnum <WmmCssColor, MsCssColor>(
                settings.ColorNames);
            originalSettings.CommentMode = Utils.GetEnumFromOtherEnum <WmmCssComment, MsCssComment>(
                settings.CommentMode);
            originalSettings.MinifyExpressions = settings.MinifyExpressions;
            originalSettings.RemoveEmptyBlocks = settings.RemoveEmptyBlocks;
        }
        /// <inheritdoc cref="IResourceMinifier.Minify" />
        public string Minify(Settings settings, ResourceSet resourceSet, string combinedContent)
        {
            var outputMode = (OutputMode)OutputMode.ConvertToType(
                typeof(OutputMode), Microsoft.Ajax.Utilities.OutputMode.SingleLine);
            var codeSettings = new CssSettings()
            {
                OutputMode        = outputMode,
                MinifyExpressions = MinifyExpressions == null ? true : MinifyExpressions.Value,
            };

            return(new Minifier().MinifyStyleSheet(combinedContent, codeSettings));
        }
        /// <summary>
        /// Maps a CSS settings
        /// </summary>
        /// <param name="cssParserSettings">CSS-code parser settings</param>
        /// <param name="cssMinifierSettings">Microsoft CSS Minifier settings</param>
        private static void MapCssSettings(CssSettings cssParserSettings,
                                           MsAjaxCssMinificationSettings cssMinifierSettings)
        {
            MapCommonSettings(cssParserSettings, cssMinifierSettings);

            cssParserSettings.ColorNames = Utils.GetEnumFromOtherEnum <WmmCssColor, MsCssColor>(
                cssMinifierSettings.ColorNames);
            cssParserSettings.CommentMode = Utils.GetEnumFromOtherEnum <WmmCssComment, MsCssComment>(
                cssMinifierSettings.CommentMode);
            cssParserSettings.MinifyExpressions = cssMinifierSettings.MinifyExpressions;
            cssParserSettings.RemoveEmptyBlocks = cssMinifierSettings.RemoveEmptyBlocks;
        }
        /// <summary>
        /// Constructs a instance of Microsoft Ajax CSS minifier
        /// </summary>
        /// <param name="microsoftAjaxConfig">Configuration settings of Microsoft Ajax Minifier</param>
        public MicrosoftAjaxCssMinifier(MicrosoftAjaxSettings microsoftAjaxConfig)
        {
            _cssParserConfiguration = new CssSettings();

            CssMinifierSettings cssMinifierConfig = microsoftAjaxConfig.CssMinifier;

            MapCommonSettings(this, cssMinifierConfig);
            ColorNames        = cssMinifierConfig.ColorNames;
            CommentMode       = cssMinifierConfig.CommentMode;
            MinifyExpressions = cssMinifierConfig.MinifyExpressions;
            RemoveEmptyBlocks = cssMinifierConfig.RemoveEmptyBlocks;
        }
Example #19
0
        public override void Invoke()
        {
            string separator = CssSettings.Get(_span.TextBuffer).FormatterBlockBracePosition == BracePosition.Compact ? " " : Environment.NewLine;
            //string separator = CssSettings.FormatterBlockBracePosition == BracePosition.Compact ? " " : Environment.NewLine;
            string insert = _lastVendor.Text + separator + _standard.Text;

            using (EditorExtensionsPackage.UndoContext((DisplayText)))
            {
                _span.TextBuffer.Replace(new Span(_lastVendor.Start, _lastVendor.Length), insert);
                _span.TextBuffer.Delete(new Span(_standard.Start, _standard.Length));
                EditorExtensionsPackage.ExecuteCommand("Edit.FormatSelection");
            }
        }
Example #20
0
        /// <summary>
        /// Constructs a instance of NUglify CSS minifier
        /// </summary>
        /// <param name="nuglifyConfig">Configuration settings of NUglify Minifier</param>
        public NUglifyCssMinifier(NUglifySettings nuglifyConfig)
        {
            _cssParserConfiguration = new CssSettings();

            CssMinifierSettings cssMinifierConfig = nuglifyConfig.CssMinifier;

            MapCommonSettings(this, cssMinifierConfig);
            ColorNames        = cssMinifierConfig.ColorNames;
            CommentMode       = cssMinifierConfig.CommentMode;
            FixIE8Fonts       = cssMinifierConfig.FixIE8Fonts;
            MinifyExpressions = cssMinifierConfig.MinifyExpressions;
            RemoveEmptyBlocks = cssMinifierConfig.RemoveEmptyBlocks;
        }
        /// <summary>
        /// Produces a code minifiction of CSS content by using the NUglify CSS Minifier
        /// </summary>
        /// <param name="content">CSS content</param>
        /// <param name="isInlineCode">Flag whether the content is inline code</param>
        /// <param name="encoding">Text encoding</param>
        /// <returns>Minification result</returns>
        public CodeMinificationResult Minify(string content, bool isInlineCode, Encoding encoding)
        {
            if (string.IsNullOrWhiteSpace(content))
            {
                return(new CodeMinificationResult(string.Empty));
            }

            CssSettings originalCssSettings = isInlineCode ?
                                              _originalInlineCssSettings : _originalEmbeddedCssSettings;
            UgliflyResult          originalResult = Uglify.Css(content, originalCssSettings, _originalJsSettings);
            CodeMinificationResult result         = GetCodeMinificationResult(originalResult);

            return(result);
        }
Example #22
0
        /// <summary>
        /// Minifies the CSS stylesheet passes to it using the given settings, returning the minified results
        /// The ErrorList property will be set with any errors found during the minification process.
        /// </summary>
        /// <param name="source">CSS Source</param>
        /// <param name="fileName">File name to use in error reporting. Default is <c>input</c></param>
        /// <param name="settings">CSS minification settings</param>
        /// <param name="scriptSettings">JS minification settings to use for expression-minification</param>
        /// <returns>Minified StyleSheet</returns>
        public static UglifyResult Css(string source, string fileName, CssSettings settings = null, CodeSettings scriptSettings = null)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            fileName       = fileName ?? "input";
            settings       = settings ?? new CssSettings();
            scriptSettings = scriptSettings ?? new CodeSettings();

            // initialize some values, including the error list (which shoudl start off empty)
            string minifiedResults;
            var    errorList = new List <UglifyError>();

            // create the parser object and if we specified some settings,
            // use it to set the Parser's settings object
            var parser = new CssParser
            {
                FileContext = fileName,
                Settings    = settings,
                JSSettings  = scriptSettings
            };

            // hook the error handler
            parser.CssError += (sender, e) =>
            {
                var error = e.Error;
                if (error.Severity <= settings.WarningLevel)
                {
                    errorList.Add(error);
                }
            };

            // try parsing the source and return the results
            try
            {
                minifiedResults = parser.Parse(source);
            }
            catch (Exception e)
            {
                errorList.Add(new UglifyError()
                {
                    Severity = 0,
                    File     = fileName,
                    Message  = e.Message,
                });
                throw;
            }
            return(new UglifyResult(minifiedResults, errorList));
        }
Example #23
0
        public HtmlMinifier(HtmlDocument html, HtmlSettings settings = null)
        {
            if (html == null)
            {
                throw new ArgumentNullException(nameof(html));
            }
            this.settings                = settings ?? new HtmlSettings();
            attributeCssSettings         = this.settings.CssSettings.Clone();
            attributeCssSettings.CssType = CssType.DeclarationList;

            this.html    = html;
            pendingTexts = new List <HtmlText>();
            Errors       = new List <UglifyError>();
        }
Example #24
0
    private static void Minify(HttpResponse response, string file, string ext)
    {
        string content = File.ReadAllText(file);
        Minifier minifier = new Minifier();

        if (ext == ".css")
        {
            CssSettings settings = new CssSettings() { CommentMode = CssComment.None };
            response.Write(minifier.MinifyStyleSheet(content, settings));
        }
        else if (ext == ".js")
        {
            CodeSettings settings = new CodeSettings() { PreserveImportantComments = false };
            response.Write(minifier.MinifyJavaScript(content, settings));
        }
    }
Example #25
0
        private void minifyCSS(Entity entity, CssSettings settings)
        {
            Microsoft.Ajax.Utilities.Minifier minifier = new Microsoft.Ajax.Utilities.Minifier();
            string name = entity.GetAttributeValue <string>("displayname");

            byte[] cssFileBytes = Convert.FromBase64String(entity.GetAttributeValue <string>("content"));
            string originalCss  = UnicodeEncoding.UTF8.GetString(cssFileBytes);
            string minifiedCss  = minifier.MinifyStyleSheet(originalCss, settings);

            byte[] minifiedCssBytes       = UnicodeEncoding.UTF8.GetBytes(minifiedCss);
            string minifiedCssBytesString = Convert.ToBase64String(minifiedCssBytes);
            Entity updatedWebResource     = new Entity(entity.LogicalName);

            updatedWebResource.Attributes.Add("content", minifiedCssBytesString);
            updatedWebResource.Id = entity.Id;
            this.service.Update(updatedWebResource);
        }
        private static MinificationResult MinifyCss(string file, bool produceGzipFile)
        {
            string content = File.ReadAllText(file);
            string minFile = GetMinFileName(file);

            var settings = new CssSettings()
            {
                CommentMode = CssComment.Hacks
            };

            var minifier = new Minifier();
            var result   = new MinificationResult(file, null, null);

            try
            {
                result.MinifiedContent = minifier.MinifyStyleSheet(content, settings);

                if (!minifier.Errors.Any())
                {
                    OnBeforeWritingMinFile(file, minFile);
                    File.WriteAllText(minFile, result.MinifiedContent, new UTF8Encoding(true));
                    OnAfterWritingMinFile(file, minFile);

                    if (produceGzipFile)
                    {
                        GzipFile(minFile);
                    }
                }
                else
                {
                    AddAjaxminErrors(minifier, result);
                }
            }
            catch (Exception ex)
            {
                result.Errors.Add(new MinificationError
                {
                    FileName     = file,
                    Message      = ex.Message,
                    LineNumber   = 0,
                    ColumnNumber = 0
                });
            }

            return(result);
        }
    public virtual string BuildBundleContent(Bundle bundle, BundleContext context, IEnumerable <BundleFile> files)
    {
        var content = new StringBuilder();

        foreach (var file in files)
        {
            FileInfo    f        = new FileInfo(HttpContext.Current.Server.MapPath(file.VirtualFile.VirtualPath));
            CssSettings settings = new CssSettings();
            settings.IgnoreAllErrors = true;     //this is what you want
            settings.CommentMode     = Microsoft.Ajax.Utilities.CssComment.Important;
            var    minifier = new Microsoft.Ajax.Utilities.Minifier();
            string readFile = Read(f);
            string res      = minifier.MinifyStyleSheet(readFile, settings);
            content.Append(res);
        }

        return(content.ToString());
    }
Example #28
0
        public async Task MinifyCss_CustomSettings_Success()
        {
            var settings = new CssSettings {
                TermSemicolons = true, ColorNames = CssColor.NoSwap
            };
            var minifier = new CssMinifier(settings);
            var context  = new Mock <IAssetContext>().SetupAllProperties();

            context.Object.Content = new Dictionary <string, byte[]> {
                { "", "body { color: yellow; }".AsByteArray() }
            };
            var options = new Mock <WebOptimizerOptions>();

            await minifier.ExecuteAsync(context.Object);

            Assert.Equal("body{color:yellow;}", context.Object.Content.First().Value.AsString());
            Assert.Equal("", minifier.CacheKey(new DefaultHttpContext()));
        }
        public virtual string BuildBundleContent(Bundle bundle, BundleContext context, IEnumerable <BundleFile> files)
        {
            CssSettings settings = new CssSettings();

            settings.IgnoreAllErrors = true;
            settings.CommentMode     = CssComment.None;
            var minifier = new Minifier();
            var content  = new StringBuilder(100000);


            foreach (var file in files)
            {
                FileInfo f = new FileInfo(HttpContext.Current.Server.MapPath(file.VirtualFile.VirtualPath));

                string readFile = Read(f);

                content.Append(minifier.MinifyStyleSheet(readFile, settings));
                content.AppendLine();
            }

            return(content.ToString());
        }
        public override async Task <IEnumerable <Asset> > TransformAsync(string extension, params Asset[] assets)
        {
            CssSettings cssSettings = new CssSettings()
            {
                CommentMode = CssComment.None
            };

            if (0 < this.MinificationOptions.Substitutions.Count)
            {
                cssSettings.ReplacementTokensApplyDefaults(this.MinificationOptions.Substitutions);
            }

            CodeSettings codeSettings = new CodeSettings()
            {
                AmdSupport                = true,
                ScriptVersion             = ScriptVersion.None,
                PreserveImportantComments = false
            };

            List <Asset> outputs = new List <Asset>();

            foreach (var asset in assets)
            {
                string code = await asset.ReadContentAsStringAsync();

                UglifyResult uglifyResult = Uglify.Css(code, cssSettings, codeSettings);

                if (uglifyResult.HasErrors)
                {
                    throw new AggregateException(uglifyResult.Errors.Select(x => new Exception(x.Message)));
                }

                Asset outputAsset = await asset.CloneWithContentAsync(uglifyResult.Code);

                outputs.Add(outputAsset);
            }
            return(outputs.AsEnumerable());
        }
        /// <summary>
        /// Creates a original CSS minifier settings
        /// </summary>
        /// <param name="settings">CSS minifier settings</param>
        /// <param name="isInlineCode">Flag for whether to create a settings for inline code</param>
        /// <returns>Original CSS minifier settings</returns>
        private static CssSettings CreateOriginalCssMinifierSettings(NUglifyCssMinificationSettings settings,
			bool isInlineCode)
        {
            var originalSettings = new CssSettings();
            MapCssSettings(originalSettings, settings);
            originalSettings.CssType = isInlineCode ? CssType.DeclarationList : CssType.FullStyleSheet;

            return originalSettings;
        }
        /// <summary>
        /// Maps a CSS minifier settings
        /// </summary>
        /// <param name="originalSettings">Original CSS minifier settings</param>
        /// <param name="settings">CSS minifier settings</param>
        private static void MapCssSettings(CssSettings originalSettings, NUglifyCssMinificationSettings settings)
        {
            MapCommonSettings(originalSettings, settings);

            originalSettings.ColorNames = Utils.GetEnumFromOtherEnum<WmmCssColor, NuCssColor>(
                settings.ColorNames);
            originalSettings.CommentMode = Utils.GetEnumFromOtherEnum<WmmCssComment, NuCssComment>(
                settings.CommentMode);
            originalSettings.MinifyExpressions = settings.MinifyExpressions;
            originalSettings.RemoveEmptyBlocks = settings.RemoveEmptyBlocks;
        }
 /// <summary>
 /// Constructs an instance of the NUglify CSS Minifier
 /// </summary>
 /// <param name="settings">NUglify CSS Minifier settings</param>
 public NUglifyCssMinifier(NUglifyCssMinificationSettings settings)
 {
     _originalEmbeddedCssSettings = CreateOriginalCssMinifierSettings(settings, false);
     _originalInlineCssSettings = CreateOriginalCssMinifierSettings(settings, true);
     _originalJsSettings = new CodeSettings();
 }