Class HtmlCompressor

  • All Implemented Interfaces:
    Compressor

    public class HtmlCompressor
    extends java.lang.Object
    implements Compressor
    Class that compresses given HTML source by removing comments, extra spaces and line breaks 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 Summary

      Fields 
      Modifier and TypeFieldDescription
      static java.lang.StringALL_TAGS
      Could be passed to setRemoveSurroundingSpaces method to remove all surrounding spaces (not recommended).
      static java.lang.StringBLOCK_TAGS_MAX
      Predefined list of tags that are block-level by default, excluding <div> and <li> tags.
      static java.lang.StringBLOCK_TAGS_MIN
      Predefined list of tags that are very likely to be block-level.
      static java.util.regex.PatternPHP_TAG_PATTERN
      Predefined pattern that matches <?php ...
      static java.util.regex.PatternSERVER_SCRIPT_TAG_PATTERN
      Predefined pattern that matches <% ...
      static java.util.regex.PatternSERVER_SIDE_INCLUDE_PATTERN
      Predefined pattern that matches <--# ...
    • Constructor Summary

      Constructors 
      ConstructorDescription
      HtmlCompressor() 
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      java.lang.Stringcompress​(java.lang.String html)
      The main method that compresses given HTML source and returns compressed result.
      CompressorgetCssCompressor()
      Returns CSS compressor implementation that will be used to compress inline CSS in HTML.
      java.util.List<java.util.regex.Pattern>getPreservePatterns()
      Returns a list of Patterns defining custom preserving block rules
      java.lang.StringgetRemoveSurroundingSpaces()
      Returns a comma separated list of tags around which spaces will be removed.
      HtmlCompressorStatisticsgetStatistics()
      Returns HtmlCompressorStatistics object containing statistics of the last HTML compression, if enabled.
      intgetYuiCssLineBreak()
      Returns number of symbols per line Yahoo YUI Compressor will use during CSS compression.
      intgetYuiJsLineBreak()
      Returns number of symbols per line Yahoo YUI Compressor will use during JavaScript compression.
      booleanisCompressCss()
      Returns true if CSS compression is enabled.
      booleanisCompressJavaScript()
      Returns true if JavaScript compression is enabled.
      booleanisEnabled()
      Returns true if compression is enabled.
      booleanisGenerateStatistics()
      Returns true if HTML compression statistics is generated
      booleanisPreserveLineBreaks()
      Returns true if line breaks will be preserved.
      booleanisRemoveComments()
      Returns true if all HTML comments will be removed.
      booleanisRemoveFormAttributes()
      Returns true if method="get" attributes will be removed from <form> tags
      booleanisRemoveHttpProtocol()
      Returns true if HTTP protocol will be removed from href, src, cite, and action tag attributes.
      booleanisRemoveHttpsProtocol()
      Returns true if HTTPS protocol will be removed from href, src, cite, and action tag attributes.
      booleanisRemoveInputAttributes()
      Returns true if type="text" attributes will be removed from <input> tags
      booleanisRemoveIntertagSpaces()
      Returns true if all inter-tag whitespace characters will be removed.
      booleanisRemoveJavaScriptProtocol()
      Returns true if javascript: pseudo-protocol will be removed from inline event handlers.
      booleanisRemoveLinkAttributes()
      Returns true if unnecessary attributes will be removed from <link> tags
      booleanisRemoveMultiSpaces()
      Returns true if all multiple whitespace characters will be replaced with single spaces.
      booleanisRemoveQuotes()
      Returns true if all unnecessary quotes will be removed from tag attributes.
      booleanisRemoveScriptAttributes()
      Returns true if unnecessary attributes will be removed from <script> tags
      booleanisRemoveStyleAttributes()
      Returns true if type="text/style" attributes will be removed from <style> tags
      booleanisSimpleBooleanAttributes()
      Returns true if boolean attributes will be simplified
      booleanisSimpleDoctype()
      Returns true if existing DOCTYPE declaration will be replaced with simple <!DOCTYPE html> declaration.
      booleanisYuiJsDisableOptimizations()
      Returns true if Yahoo YUI Compressor will disable all the built-in micro optimizations during JavaScript compression.
      booleanisYuiJsNoMunge()
      Returns true if Yahoo YUI Compressor will only minify javascript without obfuscating local symbols.
      booleanisYuiJsPreserveAllSemiColons()
      Returns true if Yahoo YUI Compressor will preserve unnecessary semicolons during JavaScript compression.
      voidsetCompressCss​(boolean compressCss)
      Enables CSS compression within <style> tags using Yahoo YUI Compressor if set to true.
      voidsetCompressJavaScript​(boolean compressJavaScript)
      Enables JavaScript compression within <script> tags using Yahoo YUI Compressor if set to true.
      voidsetCssCompressor​(Compressor cssCompressor)
      Sets CSS compressor implementation that will be used to compress inline CSS in HTML.
      voidsetEnabled​(boolean enabled)
      If set to false all compression will be bypassed.
      voidsetGenerateStatistics​(boolean generateStatistics)
      If set to true, HTML compression statistics will be generated.
      voidsetPreserveLineBreaks​(boolean preserveLineBreaks)
      If set to true, line breaks will be preserved.
      voidsetPreservePatterns​(java.util.List<java.util.regex.Pattern> preservePatterns)
      This method allows setting custom block preservation rules defined by regular expression patterns.
      voidsetRemoveComments​(boolean removeComments)
      If set to true all HTML comments will be removed.
      voidsetRemoveFormAttributes​(boolean removeFormAttributes)
      If set to true, method="get" attributes will be removed from <form> tags.
      voidsetRemoveHttpProtocol​(boolean removeHttpProtocol)
      If set to true, HTTP protocol will be removed from href, src, cite, and action tag attributes.
      voidsetRemoveHttpsProtocol​(boolean removeHttpsProtocol)
      If set to true, HTTPS protocol will be removed from href, src, cite, and action tag attributes.
      voidsetRemoveInputAttributes​(boolean removeInputAttributes)
      If set to true, type="text" attributes will be removed from <input> tags.
      voidsetRemoveIntertagSpaces​(boolean removeIntertagSpaces)
      If set to true all inter-tag whitespace characters will be removed.
      voidsetRemoveJavaScriptProtocol​(boolean removeJavaScriptProtocol)
      If set to true, javascript: pseudo-protocol will be removed from inline event handlers.
      voidsetRemoveLinkAttributes​(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"
      voidsetRemoveMultiSpaces​(boolean removeMultiSpaces)
      If set to true all multiple whitespace characters will be replaced with single spaces.
      voidsetRemoveQuotes​(boolean removeQuotes)
      If set to true all unnecessary quotes will be removed from tag attributes.
      voidsetRemoveScriptAttributes​(boolean removeScriptAttributes)
      If set to true, following attributes will be removed from <script> tags: type="text/javascript" type="application/javascript" language="javascript"
      voidsetRemoveStyleAttributes​(boolean removeStyleAttributes)
      If set to true, type="text/style" attributes will be removed from <style> tags.
      voidsetRemoveSurroundingSpaces​(java.lang.String tagList)
      Enables surrounding spaces removal around provided comma separated list of tags.
      voidsetSimpleBooleanAttributes​(boolean simpleBooleanAttributes)
      If set to true, any values of following boolean attributes will be removed: checked selected disabled readonly
      voidsetSimpleDoctype​(boolean simpleDoctype)
      If set to true, existing DOCTYPE declaration will be replaced with simple <!DOCTYPE html> declaration.
      voidsetYuiCssLineBreak​(int yuiCssLineBreak)
      Tells Yahoo YUI Compressor to break lines after the specified number of symbols during CSS compression.
      voidsetYuiJsDisableOptimizations​(boolean yuiJsDisableOptimizations)
      Tells Yahoo YUI Compressor to disable all the built-in micro optimizations during JavaScript compression.
      voidsetYuiJsLineBreak​(int yuiJsLineBreak)
      Tells Yahoo YUI Compressor to break lines after the specified number of symbols during JavaScript compression.
      voidsetYuiJsNoMunge​(boolean yuiJsNoMunge)
      Tells Yahoo YUI Compressor to only minify javascript without obfuscating local symbols.
      voidsetYuiJsPreserveAllSemiColons​(boolean yuiJsPreserveAllSemiColons)
      Tells Yahoo YUI Compressor to preserve unnecessary semicolons during JavaScript compression.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • PHP_TAG_PATTERN

        public static final java.util.regex.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 java.util.regex.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 java.util.regex.Pattern SERVER_SIDE_INCLUDE_PATTERN
        Predefined pattern that matches <--# ... --> tags. Could be passed inside a list to setPreservePatterns method.
      • BLOCK_TAGS_MAX

        public static final java.lang.String BLOCK_TAGS_MAX
        Predefined list of tags that are block-level by default, excluding <div> and <li> tags. Table tags are also included. Could be passed to setRemoveSurroundingSpaces method.
        See Also:
        Constant Field Values
    • Constructor Detail

      • HtmlCompressor

        public HtmlCompressor()
    • Method Detail

      • compress

        public java.lang.String compress​(java.lang.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.
      • 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.
      • 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 java.util.List<java.util.regex.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​(java.util.List<java.util.regex.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
      • 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 java.lang.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​(java.lang.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