/// <summary> /// Creates a instance of XHTML minifier based on the settings /// that specified in configuration files (App.config or Web.config) /// </summary> /// <param name="settings">XHTML minification settings</param> /// <param name="cssMinifier">CSS minifier</param> /// <param name="jsMinifier">JS minifier</param> /// <param name="logger">logger</param> /// <returns>XHTML minifier</returns> public XhtmlMinifier CreateXhtmlMinifierInstance(XhtmlMinificationSettings settings = null, ICssMinifier cssMinifier = null, IJsMinifier jsMinifier = null, ILogger logger = null) { XhtmlMinificationSettings innerSettings = settings ?? GetXhtmlMinificationSettings(); ICssMinifier innerCssMinifier = cssMinifier ?? _wmmContext.Code.CreateDefaultCssMinifierInstance(); IJsMinifier innerJsMinifier = jsMinifier ?? _wmmContext.Code.CreateDefaultJsMinifierInstance(); ILogger innerLogger = logger ?? _wmmContext.GetDefaultLoggerInstance(); var xhtmlMinifier = new XhtmlMinifier(innerSettings, innerCssMinifier, innerJsMinifier, innerLogger); return(xhtmlMinifier); }
/// <summary> /// Gets a XHTML minification settings based on data from /// configuration files (App.config or Web.config) /// </summary> /// <returns>XHTML minification settings</returns> public XhtmlMinificationSettings GetXhtmlMinificationSettings() { XhtmlMinificationConfiguration xhtmlConfig = _wmmContext.GetCoreConfiguration().Xhtml; var xhtmlSettings = new XhtmlMinificationSettings(); MapCommonHtmlSettings(xhtmlSettings, xhtmlConfig); xhtmlSettings.RenderEmptyTagsWithSpace = xhtmlConfig.RenderEmptyTagsWithSpace; return(xhtmlSettings); }
/// <summary> /// Constructs a instance of XHTML minification manager /// </summary> /// <param name="settings">XHTML minification settings</param> /// <param name="cssMinifierFactory">CSS minifier factory</param> /// <param name="jsMinifierFactory">JS minifier factory</param> /// <param name="logger">Logger</param> public XhtmlMinificationManager(XhtmlMinificationSettings settings, ICssMinifierFactory cssMinifierFactory, IJsMinifierFactory jsMinifierFactory, ILogger logger) { MinificationSettings = settings; SupportedMediaTypes = new HashSet<string>(MediaTypeGroupConstants.Xhtml); IncludedPages = new List<IUrlMatcher>(); ExcludedPages = new List<IUrlMatcher>(); CssMinifierFactory = cssMinifierFactory; JsMinifierFactory = jsMinifierFactory; _logger = logger; }
/// <summary> /// Constructs instance of XHTML minifier /// </summary> /// <param name="cssMinifier">CSS minifier</param> /// <param name="jsMinifier">JS minifier</param> /// <param name="settings">XHTML minification settings</param> /// <param name="logger">Logger</param> public XhtmlMinifier(XhtmlMinificationSettings settings = null, ICssMinifier cssMinifier = null, IJsMinifier jsMinifier = null, ILogger logger = null) { settings = settings ?? new XhtmlMinificationSettings(); _genericHtmlMinifier = new GenericHtmlMinifier( new GenericHtmlMinificationSettings { WhitespaceMinificationMode = settings.WhitespaceMinificationMode, RemoveHtmlComments = settings.RemoveHtmlComments, RemoveHtmlCommentsFromScriptsAndStyles = settings.RemoveHtmlCommentsFromScriptsAndStyles, RemoveCdataSectionsFromScriptsAndStyles = false, UseShortDoctype = settings.UseShortDoctype, CustomShortDoctype = string.Empty, PreserveCase = false, UseMetaCharsetTag = settings.UseMetaCharsetTag, EmptyTagRenderMode = settings.RenderEmptyTagsWithSpace ? HtmlEmptyTagRenderMode.SpaceAndSlash : HtmlEmptyTagRenderMode.Slash, RemoveOptionalEndTags = false, RemoveTagsWithoutContent = settings.RemoveTagsWithoutContent, CollapseBooleanAttributes = false, AttributeQuotesRemovalMode = HtmlAttributeQuotesRemovalMode.KeepQuotes, RemoveEmptyAttributes = settings.RemoveEmptyAttributes, RemoveRedundantAttributes = settings.RemoveRedundantAttributes, RemoveJsTypeAttributes = false, RemoveCssTypeAttributes = false, PreservableAttributeList = settings.PreservableAttributeList, RemoveHttpProtocolFromAttributes = settings.RemoveHttpProtocolFromAttributes, RemoveHttpsProtocolFromAttributes = settings.RemoveHttpsProtocolFromAttributes, RemoveJsProtocolFromAttributes = settings.RemoveJsProtocolFromAttributes, MinifyEmbeddedCssCode = settings.MinifyEmbeddedCssCode, MinifyInlineCssCode = settings.MinifyInlineCssCode, MinifyEmbeddedJsCode = settings.MinifyEmbeddedJsCode, MinifyInlineJsCode = settings.MinifyInlineJsCode, MinifyEmbeddedJsonData = settings.MinifyEmbeddedJsonData, ProcessableScriptTypeList = settings.ProcessableScriptTypeList, MinifyKnockoutBindingExpressions = settings.MinifyKnockoutBindingExpressions, MinifyAngularBindingExpressions = settings.MinifyAngularBindingExpressions, CustomAngularDirectiveList = settings.CustomAngularDirectiveList, UseXhtmlSyntax = true }, cssMinifier, jsMinifier, logger ); }
/// <summary> /// Constructs instance of XHTML minifier /// </summary> /// <param name="cssMinifier">CSS minifier</param> /// <param name="jsMinifier">JS minifier</param> /// <param name="settings">XHTML minification settings</param> /// <param name="logger">Logger</param> public XhtmlMinifier(XhtmlMinificationSettings settings = null, ICssMinifier cssMinifier = null, IJsMinifier jsMinifier = null, ILogger logger = null) { settings = settings ?? new XhtmlMinificationSettings(); _genericHtmlMinifier = new GenericHtmlMinifier( new GenericHtmlMinificationSettings { WhitespaceMinificationMode = settings.WhitespaceMinificationMode, RemoveHtmlComments = settings.RemoveHtmlComments, RemoveHtmlCommentsFromScriptsAndStyles = settings.RemoveHtmlCommentsFromScriptsAndStyles, RemoveCdataSectionsFromScriptsAndStyles = false, UseShortDoctype = settings.UseShortDoctype, PreserveCase = false, UseMetaCharsetTag = settings.UseMetaCharsetTag, EmptyTagRenderMode = settings.RenderEmptyTagsWithSpace ? HtmlEmptyTagRenderMode.SpaceAndSlash : HtmlEmptyTagRenderMode.Slash, RemoveOptionalEndTags = false, RemoveTagsWithoutContent = settings.RemoveTagsWithoutContent, CollapseBooleanAttributes = false, AttributeQuotesRemovalMode = HtmlAttributeQuotesRemovalMode.KeepQuotes, RemoveEmptyAttributes = settings.RemoveEmptyAttributes, RemoveRedundantAttributes = settings.RemoveRedundantAttributes, RemoveJsTypeAttributes = false, RemoveCssTypeAttributes = false, PreservableAttributeList = settings.PreservableAttributeList, RemoveHttpProtocolFromAttributes = settings.RemoveHttpProtocolFromAttributes, RemoveHttpsProtocolFromAttributes = settings.RemoveHttpsProtocolFromAttributes, RemoveJsProtocolFromAttributes = settings.RemoveJsProtocolFromAttributes, MinifyEmbeddedCssCode = settings.MinifyEmbeddedCssCode, MinifyInlineCssCode = settings.MinifyInlineCssCode, MinifyEmbeddedJsCode = settings.MinifyEmbeddedJsCode, MinifyInlineJsCode = settings.MinifyInlineJsCode, ProcessableScriptTypeList = settings.ProcessableScriptTypeList, MinifyKnockoutBindingExpressions = settings.MinifyKnockoutBindingExpressions, MinifyAngularBindingExpressions = settings.MinifyAngularBindingExpressions, CustomAngularDirectiveList = settings.CustomAngularDirectiveList, UseXhtmlSyntax = true }, cssMinifier, jsMinifier, logger ); }
/// <summary> /// Minifies the XHTML content. /// </summary> /// <param name="useEmptyMinificationSettings"> /// Boolean to specify whether to use empty minification settings. /// Default value is <c>false</c>, this will use commonly accepted settings. /// </param> public MinifyXhtml(bool useEmptyMinificationSettings = false) { // https://github.com/Taritsyn/WebMarkupMin/wiki/XHTML-Minifier _minificationSettings = new XhtmlMinificationSettings(useEmptyMinificationSettings); }