Пример #1
0
        /// <summary>
        /// Constructs a instance of Sergey Kryzhanovsky's CSS minifier
        /// </summary>
        /// <param name="createJsEngineInstance">Delegate that creates an instance of JS engine</param>
        /// <param name="cssoConfig">Configuration settings of Sergey Kryzhanovsky's Minifier</param>
        public KryzhanovskyCssMinifier(Func <IJsEngine> createJsEngineInstance, CssoSettings cssoConfig)
        {
            CssMinifierSettings cssMinifierConfig = cssoConfig.CssMinifier;

            DisableRestructuring = cssMinifierConfig.DisableRestructuring;
            ForceMediaMerge      = cssMinifierConfig.ForceMediaMerge;
            Comments             = cssMinifierConfig.Comments;

            if (createJsEngineInstance == null)
            {
                string jsEngineName = cssoConfig.JsEngine.Name;
                if (string.IsNullOrWhiteSpace(jsEngineName))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
                                            "csso",
                                            @"
  * JavaScriptEngineSwitcher.Msie (only in the Chakra JsRT modes)
  * JavaScriptEngineSwitcher.V8
  * JavaScriptEngineSwitcher.ChakraCore",
                                            "MsieJsEngine")
                              );
                }

                createJsEngineInstance = () => JsEngineSwitcher.Instance.CreateEngine(jsEngineName);
            }
            _createJsEngineInstance = createJsEngineInstance;
        }
        /// <summary>
        /// Constructs a instance of WebGrease Semantic CSS minifier
        /// </summary>
        /// <param name="wgConfig">Configuration settings of WebGrease Minifier</param>
        public WgCssMinifier(WgSettings wgConfig)
        {
            CssMinifierSettings cssMinifierConfig = wgConfig.CssMinifier;

            ShouldMinify = cssMinifierConfig.ShouldMinify;
            EjectCharset = cssMinifierConfig.EjectCharset;

            _wgConfiguration = CreateWebGreaseConfiguration();
        }
Пример #3
0
        /// <summary>
        /// Constructs a instance of YUI CSS minifier
        /// </summary>
        /// <param name="yuiConfig">Configuration settings of YUI Minifier</param>
        public YuiCssMinifier(YuiSettings yuiConfig)
        {
            _cssCompressor = new CssCompressor();

            CssMinifierSettings cssMinifierConfig = yuiConfig.CssMinifier;

            CompressionType   = cssMinifierConfig.CompressionType;
            RemoveComments    = cssMinifierConfig.RemoveComments;
            LineBreakPosition = cssMinifierConfig.LineBreakPosition;
        }
        /// <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;
        }
Пример #5
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>
        /// Constructs a instance of Clean CSS minifier
        /// </summary>
        /// <param name="createJsEngineInstance">Delegate that creates an instance of JS engine</param>
        /// <param name="cleanConfig">Configuration settings of Clean-css Minifier</param>
        public CleanCssMinifier(Func <IJsEngine> createJsEngineInstance, CleanSettings cleanConfig)
        {
            CssMinifierSettings        cssMinifierConfig        = cleanConfig.Css;
            FormattingSettings         formattingConfig         = cssMinifierConfig.Formatting;
            BreaksInsertingSettings    breaksInsertingConfig    = formattingConfig.BreaksInserting;
            SpacesInsertingSettings    spacesInsertingConfig    = formattingConfig.SpacesInserting;
            Level1OptimizationSettings level1OptimizationConfig = cssMinifierConfig.Level1Optimizations;
            Level2OptimizationSettings level2OptimizationConfig = cssMinifierConfig.Level2Optimizations;

            Compatibility     = cssMinifierConfig.Compatibility;
            FormattingOptions = new FormattingOptions
            {
                BreaksInsertingOptions = new BreaksInsertingOptions
                {
                    AfterAtRule      = breaksInsertingConfig.AfterAtRule,
                    AfterBlockBegins = breaksInsertingConfig.AfterBlockBegins,
                    AfterBlockEnds   = breaksInsertingConfig.AfterBlockEnds,
                    AfterComment     = breaksInsertingConfig.AfterComment,
                    AfterProperty    = breaksInsertingConfig.AfterProperty,
                    AfterRuleBegins  = breaksInsertingConfig.AfterRuleBegins,
                    AfterRuleEnds    = breaksInsertingConfig.AfterRuleEnds,
                    BeforeBlockEnds  = breaksInsertingConfig.BeforeBlockEnds,
                    BetweenSelectors = breaksInsertingConfig.BetweenSelectors
                },
                IndentBy               = formattingConfig.IndentBy,
                IndentWith             = formattingConfig.IndentWith,
                SpacesInsertingOptions = new SpacesInsertingOptions
                {
                    AroundSelectorRelation = spacesInsertingConfig.AroundSelectorRelation,
                    BeforeBlockBegins      = spacesInsertingConfig.BeforeBlockBegins,
                    BeforeValue            = spacesInsertingConfig.BeforeValue
                },
                WrapAt = formattingConfig.WrapAt
            };
            Level = cssMinifierConfig.Level;
            Level1OptimizationOptions = new Level1OptimizationOptions
            {
                CleanupCharsets        = level1OptimizationConfig.CleanupCharsets,
                NormalizeUrls          = level1OptimizationConfig.NormalizeUrls,
                OptimizeBackground     = level1OptimizationConfig.OptimizeBackground,
                OptimizeBorderRadius   = level1OptimizationConfig.OptimizeBorderRadius,
                OptimizeFilter         = level1OptimizationConfig.OptimizeFilter,
                OptimizeFont           = level1OptimizationConfig.OptimizeFont,
                OptimizeFontWeight     = level1OptimizationConfig.OptimizeFontWeight,
                OptimizeOutline        = level1OptimizationConfig.OptimizeOutline,
                RemoveEmpty            = level1OptimizationConfig.RemoveEmpty,
                RemoveNegativePaddings = level1OptimizationConfig.RemoveNegativePaddings,
                RemoveQuotes           = level1OptimizationConfig.RemoveQuotes,
                RemoveWhitespace       = level1OptimizationConfig.RemoveWhitespace,
                ReplaceMultipleZeros   = level1OptimizationConfig.ReplaceMultipleZeros,
                ReplaceTimeUnits       = level1OptimizationConfig.ReplaceTimeUnits,
                ReplaceZeroUnits       = level1OptimizationConfig.ReplaceZeroUnits,
                RoundingPrecision      = level1OptimizationConfig.RoundingPrecision,
                SelectorsSortingMethod = level1OptimizationConfig.SelectorsSortingMethod,
                SpecialComments        = level1OptimizationConfig.SpecialComments,
                TidyAtRules            = level1OptimizationConfig.TidyAtRules,
                TidyBlockScopes        = level1OptimizationConfig.TidyBlockScopes,
                TidySelectors          = level1OptimizationConfig.TidySelectors
            };
            Level2OptimizationOptions = new Level2OptimizationOptions
            {
                MergeAdjacentRules         = level2OptimizationConfig.MergeAdjacentRules,
                MergeIntoShorthands        = level2OptimizationConfig.MergeIntoShorthands,
                MergeMedia                 = level2OptimizationConfig.MergeMedia,
                MergeNonAdjacentRules      = level2OptimizationConfig.MergeNonAdjacentRules,
                MergeSemantically          = level2OptimizationConfig.MergeSemantically,
                OverrideProperties         = level2OptimizationConfig.OverrideProperties,
                RemoveEmpty                = level2OptimizationConfig.RemoveEmpty,
                ReduceNonAdjacentRules     = level2OptimizationConfig.ReduceNonAdjacentRules,
                RemoveDuplicateFontRules   = level2OptimizationConfig.RemoveDuplicateFontRules,
                RemoveDuplicateMediaBlocks = level2OptimizationConfig.RemoveDuplicateMediaBlocks,
                RemoveDuplicateRules       = level2OptimizationConfig.RemoveDuplicateRules,
                RemoveUnusedAtRules        = level2OptimizationConfig.RemoveUnusedAtRules,
                RestructureRules           = level2OptimizationConfig.RestructureRules,
                SkipProperties             = level2OptimizationConfig.SkipProperties
            };
            Severity = cssMinifierConfig.Severity;

            if (createJsEngineInstance == null)
            {
                string jsEngineName = cleanConfig.JsEngine.Name;
                if (string.IsNullOrWhiteSpace(jsEngineName))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
                                            "clean",
                                            @"
  * JavaScriptEngineSwitcher.Msie
  * JavaScriptEngineSwitcher.V8
  * JavaScriptEngineSwitcher.ChakraCore",
                                            "MsieJsEngine")
                              );
                }

                createJsEngineInstance = () => JsEngineSwitcher.Current.CreateEngine(jsEngineName);
            }
            _createJsEngineInstance = createJsEngineInstance;
        }