Class HtmlCompressor

  • All Implemented Interfaces:
    Compressor

    public class HtmlCompressor
    extends Object
    implements Compressor
    Class that compresses given HTML source by removing comments, extra spaces and lin<pre> while preserving content within <pre>, <textarea>, <script> and <style> tags.

    Blocks that should be additionally preserved could be marked with:
    <!-- {{{ -->
        ...
    <!-- }}} -->

    or any number of user defined patterns.

    Content inside <script> or <style> tags could be optionally compressed using Yahoo YUI Compressor or Google Closure Compiler libraries.

    Author:
    Sergiy Kovalchuk
    • Field Detail

      • JS_COMPRESSOR_CLOSURE

        public static final String JS_COMPRESSOR_CLOSURE
        The Constant JS_COMPRESSOR_CLOSURE.
        See Also:
        Constant Field Values
      • PHP_TAG_PATTERN

        public static final Pattern PHP_TAG_PATTERN
        Predefined pattern that matches <?php ... ?> tags. Could be passed inside a list to setPreservePatterns method.
      • SERVER_SCRIPT_TAG_PATTERN

        public static final Pattern SERVER_SCRIPT_TAG_PATTERN
        Predefined pattern that matches <% ... %> tags. Could be passed inside a list to setPreservePatterns method.
      • SERVER_SIDE_INCLUDE_PATTERN

        public static final Pattern SERVER_SIDE_INCLUDE_PATTERN
        Predefined pattern that matches <--# ... --> tags. Could be passed inside a list to setPreservePatterns method.
      • TEMP_COND_COMMENT_BLOCK

        protected static final String TEMP_COND_COMMENT_BLOCK
        The Constant tempCondCommentBlock.
        See Also:
        Constant Field Values
      • TEMP_TEXT_AREA_BLOCK

        protected static final String TEMP_TEXT_AREA_BLOCK
        The Constant tempTextAreaBlock.
        See Also:
        Constant Field Values
      • TEMP_LINE_BREAK_BLOCK

        protected static final String TEMP_LINE_BREAK_BLOCK
        The Constant tempLineBreakBlock.
        See Also:
        Constant Field Values
      • emptyPattern

        protected static final Pattern emptyPattern
        The Constant emptyPattern.
      • skipPattern

        protected static final Pattern skipPattern
        The Constant skipPattern.
      • condCommentPattern

        protected static final Pattern condCommentPattern
        The Constant condCommentPattern.
      • commentPattern

        protected static final Pattern commentPattern
        The Constant commentPattern.
      • intertagPattern_TagTag

        protected static final Pattern intertagPattern_TagTag
        The Constant intertagPattern_TagTag.
      • intertagPattern_TagCustom

        protected static final Pattern intertagPattern_TagCustom
        The Constant intertagPattern_TagCustom.
      • intertagPattern_CustomTag

        protected static final Pattern intertagPattern_CustomTag
        The Constant intertagPattern_CustomTag.
      • intertagPattern_CustomCustom

        protected static final Pattern intertagPattern_CustomCustom
        The Constant intertagPattern_CustomCustom.
      • multispacePattern

        protected static final Pattern multispacePattern
        The Constant multispacePattern.
      • tagEndSpacePattern

        protected static final Pattern tagEndSpacePattern
        The Constant tagEndSpacePattern.
      • tagLastUnquotedValuePattern

        protected static final Pattern tagLastUnquotedValuePattern
        The Constant tagLastUnquotedValuePattern.
      • tagQuotePattern

        protected static final Pattern tagQuotePattern
        The Constant tagQuotePattern.
      • prePattern

        protected static final Pattern prePattern
        The Constant prePattern.
      • taPattern

        protected static final Pattern taPattern
        The Constant taPattern.
      • scriptPattern

        protected static final Pattern scriptPattern
        The Constant scriptPattern.
      • stylePattern

        protected static final Pattern stylePattern
        The Constant stylePattern.
      • tagPropertyPattern

        protected static final Pattern tagPropertyPattern
        The Constant tagPropertyPattern.
      • cdataPattern

        protected static final Pattern cdataPattern
        The Constant cdataPattern.
      • doctypePattern

        protected static final Pattern doctypePattern
        The Constant doctypePattern.
      • typeAttrPattern

        protected static final Pattern typeAttrPattern
        The Constant typeAttrPattern.
      • jsTypeAttrPattern

        protected static final Pattern jsTypeAttrPattern
        The Constant jsTypeAttrPattern.
      • jsLangAttrPattern

        protected static final Pattern jsLangAttrPattern
        The Constant jsLangAttrPattern.
      • styleTypeAttrPattern

        protected static final Pattern styleTypeAttrPattern
        The Constant styleTypeAttrPattern.
      • linkTypeAttrPattern

        protected static final Pattern linkTypeAttrPattern
        The Constant linkTypeAttrPattern.
      • linkRelAttrPattern

        protected static final Pattern linkRelAttrPattern
        The Constant linkRelAttrPattern.
      • formMethodAttrPattern

        protected static final Pattern formMethodAttrPattern
        The Constant formMethodAttrPattern.
      • inputTypeAttrPattern

        protected static final Pattern inputTypeAttrPattern
        The Constant inputTypeAttrPattern.
      • booleanAttrPattern

        protected static final Pattern booleanAttrPattern
        The Constant booleanAttrPattern.
      • eventJsProtocolPattern

        protected static final Pattern eventJsProtocolPattern
        The Constant eventJsProtocolPattern.
      • httpProtocolPattern

        protected static final Pattern httpProtocolPattern
        The Constant httpProtocolPattern.
      • httpsProtocolPattern

        protected static final Pattern httpsProtocolPattern
        The Constant httpsProtocolPattern.
      • relExternalPattern

        protected static final Pattern relExternalPattern
        The Constant relExternalPattern.
      • eventPattern1

        protected static final Pattern eventPattern1
        The Constant eventPattern1 (unmasked).
      • eventPattern2

        protected static final Pattern eventPattern2
        The Constant eventPattern2.
      • lineBreakPattern

        protected static final Pattern lineBreakPattern
        The Constant lineBreakPattern.
      • surroundingSpacesMinPattern

        protected static final Pattern surroundingSpacesMinPattern
        The Constant surroundingSpacesMinPattern.
      • surroundingSpacesMaxPattern

        protected static final Pattern surroundingSpacesMaxPattern
        The Constant surroundingSpacesMaxPattern.
      • surroundingSpacesAllPattern

        protected static final Pattern surroundingSpacesAllPattern
        The Constant surroundingSpacesAllPattern.
      • tempCondCommentPattern

        protected static final Pattern tempCondCommentPattern
        The Constant tempCondCommentPattern.
      • tempPrePattern

        protected static final Pattern tempPrePattern
        The Constant tempPrePattern.
      • tempTextAreaPattern

        protected static final Pattern tempTextAreaPattern
        The Constant tempTextAreaPattern.
      • tempScriptPattern

        protected static final Pattern tempScriptPattern
        The Constant tempScriptPattern.
      • tempStylePattern

        protected static final Pattern tempStylePattern
        The Constant tempStylePattern.
      • tempEventPattern

        protected static final Pattern tempEventPattern
        The Constant tempEventPattern.
      • tempSkipPattern

        protected static final Pattern tempSkipPattern
        The Constant tempSkipPattern.
      • tempLineBreakPattern

        protected static final Pattern tempLineBreakPattern
        The Constant tempLineBreakPattern.
    • Constructor Detail

      • HtmlCompressor

        public HtmlCompressor()
    • Method Detail

      • compress

        public String compress​(String html)
        The main method that compresses given HTML source and returns compressed result.
        Specified by:
        compress in interface Compressor
        Parameters:
        html - HTML content to compress
        Returns:
        compressed content.
      • initStatistics

        protected void initStatistics​(String html)
        Inits the statistics.
        Parameters:
        html - the html
      • endStatistics

        protected void endStatistics​(String html)
        End statistics.
        Parameters:
        html - the html
      • preserveBlocks

        protected String preserveBlocks​(String html,
                                        List<String> preBlocks,
                                        List<String> taBlocks,
                                        List<String> scriptBlocks,
                                        List<String> styleBlocks,
                                        List<String> eventBlocks,
                                        List<String> condCommentBlocks,
                                        List<String> skipBlocks,
                                        List<String> lineBreakBlocks,
                                        List<List<String>> userBlocks)
        Preserve blocks.
        Parameters:
        html - the html
        preBlocks - the pre blocks
        taBlocks - the ta blocks
        scriptBlocks - the script blocks
        styleBlocks - the style blocks
        eventBlocks - the event blocks
        condCommentBlocks - the cond comment blocks
        skipBlocks - the skip blocks
        lineBreakBlocks - the line break blocks
        userBlocks - the user blocks
        Returns:
        the string
      • returnBlocks

        protected String returnBlocks​(String html,
                                      List<String> preBlocks,
                                      List<String> taBlocks,
                                      List<String> scriptBlocks,
                                      List<String> styleBlocks,
                                      List<String> eventBlocks,
                                      List<String> condCommentBlocks,
                                      List<String> skipBlocks,
                                      List<String> lineBreakBlocks,
                                      List<List<String>> userBlocks)
        Return blocks.
        Parameters:
        html - the html
        preBlocks - the pre blocks
        taBlocks - the ta blocks
        scriptBlocks - the script blocks
        styleBlocks - the style blocks
        eventBlocks - the event blocks
        condCommentBlocks - the cond comment blocks
        skipBlocks - the skip blocks
        lineBreakBlocks - the line break blocks
        userBlocks - the user blocks
        Returns:
        the string
      • processHtml

        protected String processHtml​(String html)
        Process html.
        Parameters:
        html - the html
        Returns:
        the string
      • removeSurroundingSpaces

        protected String removeSurroundingSpaces​(String html)
        Removes the surrounding spaces.
        Parameters:
        html - the html
        Returns:
        the string
      • removeQuotesInsideTags

        protected String removeQuotesInsideTags​(String html)
        Removes the quotes inside tags.
        Parameters:
        html - the html
        Returns:
        the string
      • removeSpacesInsideTags

        protected String removeSpacesInsideTags​(String html)
        Removes the spaces inside tags.
        Parameters:
        html - the html
        Returns:
        the string
      • removeMultiSpaces

        protected String removeMultiSpaces​(String html)
        Removes the multi spaces.
        Parameters:
        html - the html
        Returns:
        the string
      • removeIntertagSpaces

        protected String removeIntertagSpaces​(String html)
        Removes the intertag spaces.
        Parameters:
        html - the html
        Returns:
        the string
      • removeComments

        protected String removeComments​(String html)
        Removes the comments.
        Parameters:
        html - the html
        Returns:
        the string
      • simpleDoctype

        protected String simpleDoctype​(String html)
        Simple doctype.
        Parameters:
        html - the html
        Returns:
        the string
      • removeScriptAttributes

        protected String removeScriptAttributes​(String html)
        Removes the script attributes.
        Parameters:
        html - the html
        Returns:
        the string
      • removeStyleAttributes

        protected String removeStyleAttributes​(String html)
        Removes the style attributes.
        Parameters:
        html - the html
        Returns:
        the string
      • removeLinkAttributes

        protected String removeLinkAttributes​(String html)
        Removes the link attributes.
        Parameters:
        html - the html
        Returns:
        the string
      • removeFormAttributes

        protected String removeFormAttributes​(String html)
        Removes the form attributes.
        Parameters:
        html - the html
        Returns:
        the string
      • removeInputAttributes

        protected String removeInputAttributes​(String html)
        Removes the input attributes.
        Parameters:
        html - the html
        Returns:
        the string
      • simpleBooleanAttributes

        protected String simpleBooleanAttributes​(String html)
        Simple boolean attributes.
        Parameters:
        html - the html
        Returns:
        the string
      • removeHttpProtocol

        protected String removeHttpProtocol​(String html)
        Removes the http protocol.
        Parameters:
        html - the html
        Returns:
        the string
      • removeHttpsProtocol

        protected String removeHttpsProtocol​(String html)
        Removes the https protocol.
        Parameters:
        html - the html
        Returns:
        the string
      • processPreservedBlocks

        protected void processPreservedBlocks​(List<String> preBlocks,
                                              List<String> taBlocks,
                                              List<String> scriptBlocks,
                                              List<String> styleBlocks,
                                              List<String> eventBlocks,
                                              List<String> condCommentBlocks,
                                              List<String> skipBlocks,
                                              List<String> lineBreakBlocks,
                                              List<List<String>> userBlocks)
        Process preserved blocks.
        Parameters:
        preBlocks - the pre blocks
        taBlocks - the ta blocks
        scriptBlocks - the script blocks
        styleBlocks - the style blocks
        eventBlocks - the event blocks
        condCommentBlocks - the cond comment blocks
        skipBlocks - the skip blocks
        lineBreakBlocks - the line break blocks
        userBlocks - the user blocks
      • processPreBlocks

        protected void processPreBlocks​(List<String> preBlocks)
        Process pre blocks.
        Parameters:
        preBlocks - the pre blocks
      • processTextAreaBlocks

        protected void processTextAreaBlocks​(List<String> taBlocks)
        Process text area blocks.
        Parameters:
        taBlocks - the ta blocks
      • processCondCommentBlocks

        protected void processCondCommentBlocks​(List<String> condCommentBlocks)
        Process cond comment blocks.
        Parameters:
        condCommentBlocks - the cond comment blocks
      • processSkipBlocks

        protected void processSkipBlocks​(List<String> skipBlocks)
        Process skip blocks.
        Parameters:
        skipBlocks - the skip blocks
      • processLineBreakBlocks

        protected void processLineBreakBlocks​(List<String> lineBreakBlocks)
        Process line break blocks.
        Parameters:
        lineBreakBlocks - the line break blocks
      • processUserBlocks

        protected void processUserBlocks​(List<List<String>> userBlocks)
        Process user blocks.
        Parameters:
        userBlocks - the user blocks
      • processEventBlocks

        protected void processEventBlocks​(List<String> eventBlocks)
        Process event blocks.
        Parameters:
        eventBlocks - the event blocks
      • removeJavaScriptProtocol

        protected String removeJavaScriptProtocol​(String source)
        Removes the java script protocol.
        Parameters:
        source - the source
        Returns:
        the string
      • processScriptBlocks

        protected void processScriptBlocks​(List<String> scriptBlocks)
        Process script blocks.
        Parameters:
        scriptBlocks - the script blocks
      • processStyleBlocks

        protected void processStyleBlocks​(List<String> styleBlocks)
        Process style blocks.
        Parameters:
        styleBlocks - the style blocks
      • compressJavaScript

        protected String compressJavaScript​(String source)
        Compress java script.
        Parameters:
        source - the source
        Returns:
        the string
      • compressCssStyles

        protected String compressCssStyles​(String source)
        Compress css styles.
        Parameters:
        source - the source
        Returns:
        the string
      • createCompressorClone

        protected HtmlCompressor createCompressorClone()
        Creates the compressor clone.
        Returns:
        the html compressor
      • isCompressJavaScript

        public boolean isCompressJavaScript()
        Returns true if JavaScript compression is enabled.
        Returns:
        current state of JavaScript compression.
      • setCompressJavaScript

        public void setCompressJavaScript​(boolean compressJavaScript)
        Enables JavaScript compression within <script> tags using Yahoo YUI Compressor if set to true. Default is false for performance reasons.

        Note: Compressing JavaScript is not recommended if pages are compressed dynamically on-the-fly because of performance impact. You should consider putting JavaScript into a separate file and compressing it using standalone YUICompressor for example.

        Parameters:
        compressJavaScript - set true to enable JavaScript compression. Default is false
        See Also:
        Yahoo YUI Compressor
      • isCompressCss

        public boolean isCompressCss()
        Returns true if CSS compression is enabled.
        Returns:
        current state of CSS compression.
      • setCompressCss

        public void setCompressCss​(boolean compressCss)
        Enables CSS compression within <style> tags using Yahoo YUI Compressor if set to true. Default is false for performance reasons.

        Note: Compressing CSS is not recommended if pages are compressed dynamically on-the-fly because of performance impact. You should consider putting CSS into a separate file and compressing it using standalone YUICompressor for example.

        Parameters:
        compressCss - set true to enable CSS compression. Default is false
        See Also:
        Yahoo YUI Compressor
      • isYuiJsNoMunge

        public boolean isYuiJsNoMunge()
        Returns true if Yahoo YUI Compressor will only minify javascript without obfuscating local symbols. This corresponds to --nomunge command line option.
        Returns:
        nomunge parameter value used for JavaScript compression.
        See Also:
        Yahoo YUI Compressor
      • setYuiJsNoMunge

        public void setYuiJsNoMunge​(boolean yuiJsNoMunge)
        Tells Yahoo YUI Compressor to only minify javascript without obfuscating local symbols. This corresponds to --nomunge command line option. This option has effect only if JavaScript compression is enabled. Default is false.
        Parameters:
        yuiJsNoMunge - set true to enable nomunge mode
        See Also:
        Yahoo YUI Compressor
      • isYuiJsPreserveAllSemiColons

        public boolean isYuiJsPreserveAllSemiColons()
        Returns true if Yahoo YUI Compressor will preserve unnecessary semicolons during JavaScript compression. This corresponds to --preserve-semi command line option.
        Returns:
        preserve-semi parameter value used for JavaScript compression.
        See Also:
        Yahoo YUI Compressor
      • setYuiJsPreserveAllSemiColons

        public void setYuiJsPreserveAllSemiColons​(boolean yuiJsPreserveAllSemiColons)
        Tells Yahoo YUI Compressor to preserve unnecessary semicolons during JavaScript compression. This corresponds to --preserve-semi command line option. This option has effect only if JavaScript compression is enabled. Default is false.
        Parameters:
        yuiJsPreserveAllSemiColons - set true to enable preserve-semi mode
        See Also:
        Yahoo YUI Compressor
      • isYuiJsDisableOptimizations

        public boolean isYuiJsDisableOptimizations()
        Returns true if Yahoo YUI Compressor will disable all the built-in micro optimizations during JavaScript compression. This corresponds to --disable-optimizations command line option.
        Returns:
        disable-optimizations parameter value used for JavaScript compression.
        See Also:
        Yahoo YUI Compressor
      • setYuiJsDisableOptimizations

        public void setYuiJsDisableOptimizations​(boolean yuiJsDisableOptimizations)
        Tells Yahoo YUI Compressor to disable all the built-in micro optimizations during JavaScript compression. This corresponds to --disable-optimizations command line option. This option has effect only if JavaScript compression is enabled. Default is false.
        Parameters:
        yuiJsDisableOptimizations - set true to enable disable-optimizations mode
        See Also:
        Yahoo YUI Compressor
      • getYuiJsLineBreak

        public int getYuiJsLineBreak()
        Returns number of symbols per line Yahoo YUI Compressor will use during JavaScript compression. This corresponds to --line-break command line option.
        Returns:
        line-break parameter value used for JavaScript compression.
        See Also:
        Yahoo YUI Compressor
      • setYuiJsLineBreak

        public void setYuiJsLineBreak​(int yuiJsLineBreak)
        Tells Yahoo YUI Compressor to break lines after the specified number of symbols during JavaScript compression. This corresponds to --line-break command line option. This option has effect only if JavaScript compression is enabled. Default is -1 to disable line breaks.
        Parameters:
        yuiJsLineBreak - set number of symbols per line
        See Also:
        Yahoo YUI Compressor
      • getYuiCssLineBreak

        public int getYuiCssLineBreak()
        Returns number of symbols per line Yahoo YUI Compressor will use during CSS compression. This corresponds to --line-break command line option.
        Returns:
        line-break parameter value used for CSS compression.
        See Also:
        Yahoo YUI Compressor
      • setYuiCssLineBreak

        public void setYuiCssLineBreak​(int yuiCssLineBreak)
        Tells Yahoo YUI Compressor to break lines after the specified number of symbols during CSS compression. This corresponds to --line-break command line option. This option has effect only if CSS compression is enabled. Default is -1 to disable line breaks.
        Parameters:
        yuiCssLineBreak - set number of symbols per line
        See Also:
        Yahoo YUI Compressor
      • isRemoveQuotes

        public boolean isRemoveQuotes()
        Returns true if all unnecessary quotes will be removed from tag attributes.
        Returns:
        true, if is removes the quotes
      • setRemoveQuotes

        public void setRemoveQuotes​(boolean removeQuotes)
        If set to true all unnecessary quotes will be removed from tag attributes. Default is false.

        Note: Even though quotes are removed only when it is safe to do so, it still might break strict HTML validation. Turn this option on only if a page validation is not very important or to squeeze the most out of the compression. This option has no performance impact.

        Parameters:
        removeQuotes - set true to remove unnecessary quotes from tag attributes
      • isEnabled

        public boolean isEnabled()
        Returns true if compression is enabled.
        Returns:
        true if compression is enabled.
      • setEnabled

        public void setEnabled​(boolean enabled)
        If set to false all compression will be bypassed. Might be useful for testing purposes. Default is true.
        Parameters:
        enabled - set false to bypass all compression
      • isRemoveComments

        public boolean isRemoveComments()
        Returns true if all HTML comments will be removed.
        Returns:
        true if all HTML comments will be removed
      • setRemoveComments

        public void setRemoveComments​(boolean removeComments)
        If set to true all HTML comments will be removed. Default is true.
        Parameters:
        removeComments - set true to remove all HTML comments
      • isRemoveMultiSpaces

        public boolean isRemoveMultiSpaces()
        Returns true if all multiple whitespace characters will be replaced with single spaces.
        Returns:
        true if all multiple whitespace characters will be replaced with single spaces.
      • setRemoveMultiSpaces

        public void setRemoveMultiSpaces​(boolean removeMultiSpaces)
        If set to true all multiple whitespace characters will be replaced with single spaces. Default is true.
        Parameters:
        removeMultiSpaces - set true to replace all multiple whitespace characters will single spaces.
      • isRemoveIntertagSpaces

        public boolean isRemoveIntertagSpaces()
        Returns true if all inter-tag whitespace characters will be removed.
        Returns:
        true if all inter-tag whitespace characters will be removed.
      • setRemoveIntertagSpaces

        public void setRemoveIntertagSpaces​(boolean removeIntertagSpaces)
        If set to true all inter-tag whitespace characters will be removed. Default is false.

        Note: It is fairly safe to turn this option on unless you rely on spaces for page formatting. Even if you do, you can always preserve required spaces with &nbsp;. This option has no performance impact.

        Parameters:
        removeIntertagSpaces - set true to remove all inter-tag whitespace characters
      • getPreservePatterns

        public List<Pattern> getPreservePatterns()
        Returns a list of Patterns defining custom preserving block rules.
        Returns:
        list of Pattern objects defining rules for preserving block rules
      • setPreservePatterns

        public void setPreservePatterns​(List<Pattern> preservePatterns)
        This method allows setting custom block preservation rules defined by regular expression patterns. Blocks that match provided patterns will be skipped during HTML compression.

        Custom preservation rules have higher priority than default rules. Priority between custom rules are defined by their position in a list (beginning of a list has higher priority).

        Besides custom patterns, you can use 3 predefined patterns: PHP_TAG_PATTERN, SERVER_SCRIPT_TAG_PATTERN, SERVER_SIDE_INCLUDE_PATTERN.

        Parameters:
        preservePatterns - List of Pattern objects that will be used to skip matched blocks during compression
      • getYuiErrorReporter

        public org.mozilla.javascript.ErrorReporter getYuiErrorReporter()
        Returns ErrorReporter used by YUI Compressor to log error messages during JavasSript compression.
        Returns:
        ErrorReporter used by YUI Compressor to log error messages during JavasSript compression
        See Also:
        Yahoo YUI Compressor, Error Reporter Interface
      • getCssCompressor

        public Compressor getCssCompressor()
        Returns CSS compressor implementation that will be used to compress inline CSS in HTML.
        Returns:
        Compressor implementation that will be used to compress inline CSS in HTML.
        See Also:
        YuiCssCompressor, Yahoo YUI Compressor
      • setCssCompressor

        public void setCssCompressor​(Compressor cssCompressor)
        Sets CSS compressor implementation that will be used to compress inline CSS in HTML.

        HtmlCompressor currently comes with basic implementation for Yahoo YUI Compressor (called YuiCssCompressor), but users can also create their own CSS compressors for custom needs.

        If no compressor is set YuiCssCompressor will be used by default.

        Parameters:
        cssCompressor - Compressor implementation that will be used for inline CSS compression
        See Also:
        YuiCssCompressor, Yahoo YUI Compressor
      • isSimpleDoctype

        public boolean isSimpleDoctype()
        Returns true if existing DOCTYPE declaration will be replaced with simple <!DOCTYPE html> declaration.
        Returns:
        true if existing DOCTYPE declaration will be replaced with simple <!DOCTYPE html> declaration.
      • setSimpleDoctype

        public void setSimpleDoctype​(boolean simpleDoctype)
        If set to true, existing DOCTYPE declaration will be replaced with simple <!DOCTYPE html> declaration. Default is false.
        Parameters:
        simpleDoctype - set true to replace existing DOCTYPE declaration with <!DOCTYPE html>
      • isRemoveScriptAttributes

        public boolean isRemoveScriptAttributes()
        Returns true if unnecessary attributes will be removed from <script> tags.
        Returns:
        true if unnecessary attributes will be removed from <script> tags
      • setRemoveScriptAttributes

        public void setRemoveScriptAttributes​(boolean removeScriptAttributes)
        If set to true, following attributes will be removed from <script> tags:
        • type="text/javascript"
        • type="application/javascript"
        • language="javascript"

        Default is false.

        Parameters:
        removeScriptAttributes - set true to remove unnecessary attributes from <script> tags
      • isRemoveStyleAttributes

        public boolean isRemoveStyleAttributes()
        Returns true if type="text/style" attributes will be removed from <style> tags.
        Returns:
        true if type="text/style" attributes will be removed from <style> tags
      • setRemoveStyleAttributes

        public void setRemoveStyleAttributes​(boolean removeStyleAttributes)
        If set to true, type="text/style" attributes will be removed from <style> tags. Default is false.
        Parameters:
        removeStyleAttributes - set true to remove type="text/style" attributes from <style> tags
      • isRemoveLinkAttributes

        public boolean isRemoveLinkAttributes()
        Returns true if unnecessary attributes will be removed from <link> tags.
        Returns:
        true if unnecessary attributes will be removed from <link> tags
      • setRemoveLinkAttributes

        public void setRemoveLinkAttributes​(boolean removeLinkAttributes)
        If set to true, following attributes will be removed from <link rel="stylesheet"> and <link rel="alternate stylesheet"> tags:
        • type="text/css"
        • type="text/plain"

        Default is false.

        Parameters:
        removeLinkAttributes - set true to remove unnecessary attributes from <link> tags
      • isRemoveFormAttributes

        public boolean isRemoveFormAttributes()
        Returns true if method="get" attributes will be removed from <form> tags.
        Returns:
        true if method="get" attributes will be removed from <form> tags
      • setRemoveFormAttributes

        public void setRemoveFormAttributes​(boolean removeFormAttributes)
        If set to true, method="get" attributes will be removed from <form> tags. Default is false.
        Parameters:
        removeFormAttributes - set true to remove method="get" attributes from <form> tags
      • isRemoveInputAttributes

        public boolean isRemoveInputAttributes()
        Returns true if type="text" attributes will be removed from <input> tags.
        Returns:
        true if type="text" attributes will be removed from <input> tags
      • setRemoveInputAttributes

        public void setRemoveInputAttributes​(boolean removeInputAttributes)
        If set to true, type="text" attributes will be removed from <input> tags. Default is false.
        Parameters:
        removeInputAttributes - set true to remove type="text" attributes from <input> tags
      • isSimpleBooleanAttributes

        public boolean isSimpleBooleanAttributes()
        Returns true if boolean attributes will be simplified.
        Returns:
        true if boolean attributes will be simplified
      • setSimpleBooleanAttributes

        public void setSimpleBooleanAttributes​(boolean simpleBooleanAttributes)
        If set to true, any values of following boolean attributes will be removed:
        • checked
        • selected
        • disabled
        • readonly

        For example, <input readonly="readonly"> would become <input readonly>

        Default is false.

        Parameters:
        simpleBooleanAttributes - set true to simplify boolean attributes
      • isRemoveJavaScriptProtocol

        public boolean isRemoveJavaScriptProtocol()
        Returns true if javascript: pseudo-protocol will be removed from inline event handlers.
        Returns:
        true if javascript: pseudo-protocol will be removed from inline event handlers.
      • setRemoveJavaScriptProtocol

        public void setRemoveJavaScriptProtocol​(boolean removeJavaScriptProtocol)
        If set to true, javascript: pseudo-protocol will be removed from inline event handlers.

        For example, <a onclick="javascript:alert()"> would become <a onclick="alert()">

        Default is false.

        Parameters:
        removeJavaScriptProtocol - set true to remove javascript: pseudo-protocol from inline event handlers.
      • isRemoveHttpProtocol

        public boolean isRemoveHttpProtocol()
        Returns true if HTTP protocol will be removed from href, src, cite, and action tag attributes.
        Returns:
        true if HTTP protocol will be removed from href, src, cite, and action tag attributes.
      • setRemoveHttpProtocol

        public void setRemoveHttpProtocol​(boolean removeHttpProtocol)
        If set to true, HTTP protocol will be removed from href, src, cite, and action tag attributes. URL without a protocol would make a browser use document's current protocol instead.

        Tags marked with rel="external" will be skipped.

        For example:

        <a href="http://example.com"> <script src="http://google.com/js.js" rel="external">

        would become:

        <a href="//example.com"> <script src="http://google.com/js.js" rel="external">

        Default is false.

        Parameters:
        removeHttpProtocol - set true to remove HTTP protocol from tag attributes
      • isRemoveHttpsProtocol

        public boolean isRemoveHttpsProtocol()
        Returns true if HTTPS protocol will be removed from href, src , cite, and action tag attributes.
        Returns:
        true if HTTPS protocol will be removed from href, src , cite, and action tag attributes.
      • setRemoveHttpsProtocol

        public void setRemoveHttpsProtocol​(boolean removeHttpsProtocol)
        If set to true, HTTPS protocol will be removed from href, src , cite, and action tag attributes. URL without a protocol would make a browser use document's current protocol instead.

        Tags marked with rel="external" will be skipped.

        For example:

        <a href="https://example.com"> <script src="https://google.com/js.js" rel="external">

        would become:

        <a href="//example.com"> <script src="https://google.com/js.js" rel="external">

        Default is false.

        Parameters:
        removeHttpsProtocol - set true to remove HTTP protocol from tag attributes
      • isGenerateStatistics

        public boolean isGenerateStatistics()
        Returns true if HTML compression statistics is generated.
        Returns:
        true if HTML compression statistics is generated
      • setGenerateStatistics

        public void setGenerateStatistics​(boolean generateStatistics)
        If set to true, HTML compression statistics will be generated.

        Important: Enabling statistics makes HTML compressor not thread safe.

        Default is false.

        Parameters:
        generateStatistics - set true to generate HTML compression statistics
        See Also:
        getStatistics()
      • isPreserveLineBreaks

        public boolean isPreserveLineBreaks()
        Returns true if line breaks will be preserved.
        Returns:
        true if line breaks will be preserved.
      • setPreserveLineBreaks

        public void setPreserveLineBreaks​(boolean preserveLineBreaks)
        If set to true, line breaks will be preserved.

        Default is false.

        Parameters:
        preserveLineBreaks - set true to preserve line breaks
      • getRemoveSurroundingSpaces

        public String getRemoveSurroundingSpaces()
        Returns a comma separated list of tags around which spaces will be removed.
        Returns:
        a comma separated list of tags around which spaces will be removed.
      • setRemoveSurroundingSpaces

        public void setRemoveSurroundingSpaces​(String tagList)
        Enables surrounding spaces removal around provided comma separated list of tags.

        Besides custom defined lists, you can pass one of 3 predefined lists of tags: BLOCK_TAGS_MIN, BLOCK_TAGS_MAX, ALL_TAGS.

        Parameters:
        tagList - a comma separated list of tags around which spaces will be removed