Class HtmlCompressor

java.lang.Object
com.googlecode.htmlcompressor.compressor.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 Details

    • JS_COMPRESSOR_YUI

      public static final String JS_COMPRESSOR_YUI
      The Constant JS_COMPRESSOR_YUI.
      See Also:
    • JS_COMPRESSOR_CLOSURE

      public static final String JS_COMPRESSOR_CLOSURE
      The Constant JS_COMPRESSOR_CLOSURE.
      See Also:
    • 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.
    • BLOCK_TAGS_MIN

      public static final String BLOCK_TAGS_MIN
      Predefined list of tags that are very likely to be block-level. Could be passed to setRemoveSurroundingSpaces method.
      See Also:
    • BLOCK_TAGS_MAX

      public static final 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:
    • ALL_TAGS

      public static final String ALL_TAGS
      Could be passed to setRemoveSurroundingSpaces method to remove all surrounding spaces (not recommended).
      See Also:
    • TEMP_COND_COMMENT_BLOCK

      protected static final String TEMP_COND_COMMENT_BLOCK
      The Constant tempCondCommentBlock.
      See Also:
    • TEMP_PRE_BLOCK

      protected static final String TEMP_PRE_BLOCK
      The Constant tempPreBlock.
      See Also:
    • TEMP_TEXT_AREA_BLOCK

      protected static final String TEMP_TEXT_AREA_BLOCK
      The Constant tempTextAreaBlock.
      See Also:
    • TEMP_SCRIPT_BLOCK

      protected static final String TEMP_SCRIPT_BLOCK
      The Constant tempScriptBlock.
      See Also:
    • TEMP_STYLE_BLOCK

      protected static final String TEMP_STYLE_BLOCK
      The Constant tempStyleBlock.
      See Also:
    • TEMP_EVENT_BLOCK

      protected static final String TEMP_EVENT_BLOCK
      The Constant tempEventBlock.
      See Also:
    • TEMP_LINE_BREAK_BLOCK

      protected static final String TEMP_LINE_BREAK_BLOCK
      The Constant tempLineBreakBlock.
      See Also:
    • TEMP_SKIP_BLOCK

      protected static final String TEMP_SKIP_BLOCK
      The Constant tempSkipBlock.
      See Also:
    • TEMP_USER_BLOCK

      protected static final String TEMP_USER_BLOCK
      The Constant tempUserBlock.
      See Also:
    • 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 Details

    • HtmlCompressor

      public HtmlCompressor()
  • Method Details

    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • setYuiErrorReporter

      public void setYuiErrorReporter(org.mozilla.javascript.ErrorReporter yuiErrorReporter)
      Sets ErrorReporter that YUI Compressor will use for reporting errors during JavaScript compression. If no ErrorReporter was provided YuiJavaScriptCompressor.DefaultErrorReporter will be used which reports errors to System.err stream.
      Parameters:
      yuiErrorReporter - ErrorReporter that will be used by YUI Compressor
      See Also:
    • getJavaScriptCompressor

      public Compressor getJavaScriptCompressor()
      Returns JavaScript compressor implementation that will be used to compress inline JavaScript in HTML.
      Returns:
      Compressor implementation that will be used to compress inline JavaScript in HTML.
      See Also:
    • setJavaScriptCompressor

      public void setJavaScriptCompressor(Compressor javaScriptCompressor)
      Sets JavaScript compressor implementation that will be used to compress inline JavaScript in HTML.

      HtmlCompressor currently comes with basic implementations for Yahoo YUI Compressor (called YuiJavaScriptCompressor) and Google Closure Compiler (called ClosureJavaScriptCompressor) that should be enough for most cases, but users can also create their own JavaScript compressors for custom needs.

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

      Parameters:
      javaScriptCompressor - Compressor implementation that will be used for inline JavaScript compression
      See Also:
    • 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:
    • 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:
    • 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

      public HtmlCompressorStatistics getStatistics()
      Returns HtmlCompressorStatistics object containing statistics of the last HTML compression, if enabled. Should be called after compress(String)
      Returns:
      HtmlCompressorStatistics object containing last HTML compression statistics
      See Also:
    • 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