/// <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(); }
/// <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; }
/// <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; }