com.googlecode.htmlcompressor.compressor

## 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 Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `ALL_TAGS` Could be passed to `setRemoveSurroundingSpaces` method to remove all surrounding spaces (not recommended).
    `static String` | `BLOCK_TAGS_MAX` Predefined list of tags that are block-level by default, excluding `<div>` and `<li>` tags.
    `static String` | `BLOCK_TAGS_MIN` Predefined list of tags that are very likely to be block-level.
    `protected static Pattern` | `booleanAttrPattern` The Constant booleanAttrPattern.
    `protected static Pattern` | `cdataPattern` The Constant cdataPattern.
    `protected static Pattern` | `commentPattern` The Constant commentPattern.
    `protected static Pattern` | `condCommentPattern` The Constant condCommentPattern.
    `protected static Pattern` | `doctypePattern` The Constant doctypePattern.
    `protected static Pattern` | `emptyPattern` The Constant emptyPattern.
    `protected static Pattern` | `eventJsProtocolPattern` The Constant eventJsProtocolPattern.
    `protected static Pattern` | `eventPattern1` The Constant eventPattern1 (unmasked).
    `protected static Pattern` | `eventPattern2` The Constant eventPattern2.
    `protected static Pattern` | `formMethodAttrPattern` The Constant formMethodAttrPattern.
    `protected static Pattern` | `httpProtocolPattern` The Constant httpProtocolPattern.
    `protected static Pattern` | `httpsProtocolPattern` The Constant httpsProtocolPattern.
    `protected static Pattern` | `inputTypeAttrPattern` The Constant inputTypeAttrPattern.
    `protected static Pattern` | `intertagPattern_CustomCustom` The Constant intertagPattern_CustomCustom.
    `protected static Pattern` | `intertagPattern_CustomTag` The Constant intertagPattern_CustomTag.
    `protected static Pattern` | `intertagPattern_TagCustom` The Constant intertagPattern_TagCustom.
    `protected static Pattern` | `intertagPattern_TagTag` The Constant intertagPattern_TagTag.
    `static String` | `JS_COMPRESSOR_CLOSURE` The Constant JS_COMPRESSOR_CLOSURE.
    `static String` | `JS_COMPRESSOR_YUI` The Constant JS_COMPRESSOR_YUI.
    `protected static Pattern` | `jsLangAttrPattern` The Constant jsLangAttrPattern.
    `protected static Pattern` | `jsTypeAttrPattern` The Constant jsTypeAttrPattern.
    `protected static Pattern` | `lineBreakPattern` The Constant lineBreakPattern.
    `protected static Pattern` | `linkRelAttrPattern` The Constant linkRelAttrPattern.
    `protected static Pattern` | `linkTypeAttrPattern` The Constant linkTypeAttrPattern.
    `protected static Pattern` | `multispacePattern` The Constant multispacePattern.
    `static Pattern` | `PHP_TAG_PATTERN` Predefined pattern that matches `<?php ...`
    `protected static Pattern` | `prePattern` The Constant prePattern.
    `protected static Pattern` | `relExternalPattern` The Constant relExternalPattern.
    `protected static Pattern` | `scriptPattern` The Constant scriptPattern.
    `static Pattern` | `SERVER_SCRIPT_TAG_PATTERN` Predefined pattern that matches `<% ...`
    `static Pattern` | `SERVER_SIDE_INCLUDE_PATTERN` Predefined pattern that matches `<--# ...`
    `protected static Pattern` | `skipPattern` The Constant skipPattern.
    `protected static Pattern` | `stylePattern` The Constant stylePattern.
    `protected static Pattern` | `styleTypeAttrPattern` The Constant styleTypeAttrPattern.
    `protected static Pattern` | `surroundingSpacesAllPattern` The Constant surroundingSpacesAllPattern.
    `protected static Pattern` | `surroundingSpacesMaxPattern` The Constant surroundingSpacesMaxPattern.
    `protected static Pattern` | `surroundingSpacesMinPattern` The Constant surroundingSpacesMinPattern.
    `protected static Pattern` | `tagEndSpacePattern` The Constant tagEndSpacePattern.
    `protected static Pattern` | `tagLastUnquotedValuePattern` The Constant tagLastUnquotedValuePattern.
    `protected static Pattern` | `tagPropertyPattern` The Constant tagPropertyPattern.
    `protected static Pattern` | `tagQuotePattern` The Constant tagQuotePattern.
    `protected static Pattern` | `taPattern` The Constant taPattern.
    `protected static String` | `TEMP_COND_COMMENT_BLOCK` The Constant tempCondCommentBlock.
    `protected static String` | `TEMP_EVENT_BLOCK` The Constant tempEventBlock.
    `protected static String` | `TEMP_LINE_BREAK_BLOCK` The Constant tempLineBreakBlock.
    `protected static String` | `TEMP_PRE_BLOCK` The Constant tempPreBlock.
    `protected static String` | `TEMP_SCRIPT_BLOCK` The Constant tempScriptBlock.
    `protected static String` | `TEMP_SKIP_BLOCK` The Constant tempSkipBlock.
    `protected static String` | `TEMP_STYLE_BLOCK` The Constant tempStyleBlock.
    `protected static String` | `TEMP_TEXT_AREA_BLOCK` The Constant tempTextAreaBlock.
    `protected static String` | `TEMP_USER_BLOCK` The Constant tempUserBlock.
    `protected static Pattern` | `tempCondCommentPattern` The Constant tempCondCommentPattern.
    `protected static Pattern` | `tempEventPattern` The Constant tempEventPattern.
    `protected static Pattern` | `tempLineBreakPattern` The Constant tempLineBreakPattern.
    `protected static Pattern` | `tempPrePattern` The Constant tempPrePattern.
    `protected static Pattern` | `tempScriptPattern` The Constant tempScriptPattern.
    `protected static Pattern` | `tempSkipPattern` The Constant tempSkipPattern.
    `protected static Pattern` | `tempStylePattern` The Constant tempStylePattern.
    `protected static Pattern` | `tempTextAreaPattern` The Constant tempTextAreaPattern.
    `protected static Pattern` | `typeAttrPattern` The Constant typeAttrPattern.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HtmlCompressor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `compress(String html)` The main method that compresses given HTML source and returns compressed result.
    `protected String` | `compressCssStyles(String source)` Compress css styles.
    `protected String` | `compressJavaScript(String source)` Compress java script.
    `protected HtmlCompressor` | `createCompressorClone()` Creates the compressor clone.
    `protected void` | `endStatistics(String html)` End statistics.
    `Compressor` | `getCssCompressor()` Returns CSS compressor implementation that will be used to compress inline CSS in HTML.
    `Compressor` | `getJavaScriptCompressor()` Returns JavaScript compressor implementation that will be used to compress inline JavaScript in HTML.
    `List<Pattern>` | `getPreservePatterns()` Returns a list of Patterns defining custom preserving block rules.
    `String` | `getRemoveSurroundingSpaces()` Returns a comma separated list of tags around which spaces will be removed.
    `HtmlCompressorStatistics` | `getStatistics()` Returns `HtmlCompressorStatistics` object containing statistics of the last HTML compression, if enabled.
    `int` | `getYuiCssLineBreak()` Returns number of symbols per line Yahoo YUI Compressor will use during CSS compression.
    `org.mozilla.javascript.ErrorReporter` | `getYuiErrorReporter()` Returns `ErrorReporter` used by YUI Compressor to log error messages during JavasSript compression.
    `int` | `getYuiJsLineBreak()` Returns number of symbols per line Yahoo YUI Compressor will use during JavaScript compression.
    `protected void` | `initStatistics(String html)` Inits the statistics.
    `boolean` | `isCompressCss()` Returns `true` if CSS compression is enabled.
    `boolean` | `isCompressJavaScript()` Returns `true` if JavaScript compression is enabled.
    `boolean` | `isEnabled()` Returns `true` if compression is enabled.
    `boolean` | `isGenerateStatistics()` Returns `true` if HTML compression statistics is generated.
    `boolean` | `isPreserveLineBreaks()` Returns `true` if line breaks will be preserved.
    `boolean` | `isRemoveComments()` Returns `true` if all HTML comments will be removed.
    `boolean` | `isRemoveFormAttributes()` Returns `true` if `method="get"` attributes will be removed from `<form>` tags.
    `boolean` | `isRemoveHttpProtocol()` Returns `true` if `HTTP` protocol will be removed from `href`, `src`, `cite`, and `action` tag attributes.
    `boolean` | `isRemoveHttpsProtocol()` Returns `true` if `HTTPS` protocol will be removed from `href`, `src` , `cite`, and `action` tag attributes.
    `boolean` | `isRemoveInputAttributes()` Returns `true` if `type="text"` attributes will be removed from `<input>` tags.
    `boolean` | `isRemoveIntertagSpaces()` Returns `true` if all inter-tag whitespace characters will be removed.
    `boolean` | `isRemoveJavaScriptProtocol()` Returns `true` if `javascript:` pseudo-protocol will be removed from inline event handlers.
    `boolean` | `isRemoveLinkAttributes()` Returns `true` if unnecessary attributes will be removed from `<link>` tags.
    `boolean` | `isRemoveMultiSpaces()` Returns `true` if all multiple whitespace characters will be replaced with single spaces.
    `boolean` | `isRemoveQuotes()` Returns `true` if all unnecessary quotes will be removed from tag attributes.
    `boolean` | `isRemoveScriptAttributes()` Returns `true` if unnecessary attributes will be removed from `<script>` tags.
    `boolean` | `isRemoveStyleAttributes()` Returns `true` if `type="text/style"` attributes will be removed from `<style>` tags.
    `boolean` | `isSimpleBooleanAttributes()` Returns `true` if boolean attributes will be simplified.
    `boolean` | `isSimpleDoctype()` Returns `true` if existing DOCTYPE declaration will be replaced with simple `<!DOCTYPE html>` declaration.
    `boolean` | `isYuiJsDisableOptimizations()` Returns `true` if Yahoo YUI Compressor will disable all the built-in micro optimizations during JavaScript compression.
    `boolean` | `isYuiJsNoMunge()` Returns `true` if Yahoo YUI Compressor will only minify javascript without obfuscating local symbols.
    `boolean` | `isYuiJsPreserveAllSemiColons()` Returns `true` if Yahoo YUI Compressor will preserve unnecessary semicolons during JavaScript compression.
    `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.
    `protected void` | `processCondCommentBlocks(List<String> condCommentBlocks)` Process cond comment blocks.
    `protected void` | `processEventBlocks(List<String> eventBlocks)` Process event blocks.
    `protected String` | `processHtml(String html)` Process html.
    `protected void` | `processLineBreakBlocks(List<String> lineBreakBlocks)` Process line break blocks.
    `protected void` | `processPreBlocks(List<String> preBlocks)` Process pre blocks.
    `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.
    `protected void` | `processScriptBlocks(List<String> scriptBlocks)` Process script blocks.
    `protected void` | `processSkipBlocks(List<String> skipBlocks)` Process skip blocks.
    `protected void` | `processStyleBlocks(List<String> styleBlocks)` Process style blocks.
    `protected void` | `processTextAreaBlocks(List<String> taBlocks)` Process text area blocks.
    `protected void` | `processUserBlocks(List<List<String>> userBlocks)` Process user blocks.
    `protected String` | `removeComments(String html)` Removes the comments.
    `protected String` | `removeFormAttributes(String html)` Removes the form attributes.
    `protected String` | `removeHttpProtocol(String html)` Removes the http protocol.
    `protected String` | `removeHttpsProtocol(String html)` Removes the https protocol.
    `protected String` | `removeInputAttributes(String html)` Removes the input attributes.
    `protected String` | `removeIntertagSpaces(String html)` Removes the intertag spaces.
    `protected String` | `removeJavaScriptProtocol(String source)` Removes the java script protocol.
    `protected String` | `removeLinkAttributes(String html)` Removes the link attributes.
    `protected String` | `removeMultiSpaces(String html)` Removes the multi spaces.
    `protected String` | `removeQuotesInsideTags(String html)` Removes the quotes inside tags.
    `protected String` | `removeScriptAttributes(String html)` Removes the script attributes.
    `protected String` | `removeSpacesInsideTags(String html)` Removes the spaces inside tags.
    `protected String` | `removeStyleAttributes(String html)` Removes the style attributes.
    `protected String` | `removeSurroundingSpaces(String html)` Removes the surrounding spaces.
    `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.
    `void` | `setCompressCss(boolean compressCss)` Enables CSS compression within <style> tags using Yahoo YUI Compressor if set to `true`.
    `void` | `setCompressJavaScript(boolean compressJavaScript)` Enables JavaScript compression within <script> tags using Yahoo YUI Compressor if set to `true`.
    `void` | `setCssCompressor(Compressor cssCompressor)` Sets CSS compressor implementation that will be used to compress inline CSS in HTML.
    `void` | `setEnabled(boolean enabled)` If set to `false` all compression will be bypassed.
    `void` | `setGenerateStatistics(boolean generateStatistics)` If set to `true`, HTML compression statistics will be generated.
    `void` | `setJavaScriptCompressor(Compressor javaScriptCompressor)` Sets JavaScript compressor implementation that will be used to compress inline JavaScript in HTML.
    `void` | `setPreserveLineBreaks(boolean preserveLineBreaks)` If set to `true`, line breaks will be preserved.
    `void` | `setPreservePatterns(List<Pattern> preservePatterns)` This method allows setting custom block preservation rules defined by regular expression patterns.
    `void` | `setRemoveComments(boolean removeComments)` If set to `true` all HTML comments will be removed.
    `void` | `setRemoveFormAttributes(boolean removeFormAttributes)` If set to `true`, `method="get"` attributes will be removed from `<form>` tags.
    `void` | `setRemoveHttpProtocol(boolean removeHttpProtocol)` If set to `true`, `HTTP` protocol will be removed from `href`, `src`, `cite`, and `action` tag attributes.
    `void` | `setRemoveHttpsProtocol(boolean removeHttpsProtocol)` If set to `true`, `HTTPS` protocol will be removed from `href`, `src` , `cite`, and `action` tag attributes.
    `void` | `setRemoveInputAttributes(boolean removeInputAttributes)` If set to `true`, `type="text"` attributes will be removed from `<input>` tags.
    `void` | `setRemoveIntertagSpaces(boolean removeIntertagSpaces)` If set to `true` all inter-tag whitespace characters will be removed.
    `void` | `setRemoveJavaScriptProtocol(boolean removeJavaScriptProtocol)` If set to `true`, `javascript:` pseudo-protocol will be removed from inline event handlers.
    `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"
    `void` | `setRemoveMultiSpaces(boolean removeMultiSpaces)` If set to `true` all multiple whitespace characters will be replaced with single spaces.
    `void` | `setRemoveQuotes(boolean removeQuotes)` If set to `true` all unnecessary quotes will be removed from tag attributes.
    `void` | `setRemoveScriptAttributes(boolean removeScriptAttributes)` If set to `true`, following attributes will be removed from `<script>` tags: type="text/javascript" type="application/javascript" language="javascript"
    `void` | `setRemoveStyleAttributes(boolean removeStyleAttributes)` If set to `true`, `type="text/style"` attributes will be removed from `<style>` tags.
    `void` | `setRemoveSurroundingSpaces(String tagList)` Enables surrounding spaces removal around provided comma separated list of tags.
    `void` | `setSimpleBooleanAttributes(boolean simpleBooleanAttributes)` If set to `true`, any values of following boolean attributes will be removed: checked selected disabled readonly
    `void` | `setSimpleDoctype(boolean simpleDoctype)` If set to `true`, existing DOCTYPE declaration will be replaced with simple `<!DOCTYPE html>` declaration.
    `void` | `setYuiCssLineBreak(int yuiCssLineBreak)` Tells Yahoo YUI Compressor to break lines after the specified number of symbols during CSS compression.
    `void` | `setYuiErrorReporter(org.mozilla.javascript.ErrorReporter yuiErrorReporter)` Sets `ErrorReporter` that YUI Compressor will use for reporting errors during JavaScript compression.
    `void` | `setYuiJsDisableOptimizations(boolean yuiJsDisableOptimizations)` Tells Yahoo YUI Compressor to disable all the built-in micro optimizations during JavaScript compression.
    `void` | `setYuiJsLineBreak(int yuiJsLineBreak)` Tells Yahoo YUI Compressor to break lines after the specified number of symbols during JavaScript compression.
    `void` | `setYuiJsNoMunge(boolean yuiJsNoMunge)` Tells Yahoo YUI Compressor to only minify javascript without obfuscating local symbols.
    `void` | `setYuiJsPreserveAllSemiColons(boolean yuiJsPreserveAllSemiColons)` Tells Yahoo YUI Compressor to preserve unnecessary semicolons during JavaScript compression.
    `protected String` | `simpleBooleanAttributes(String html)` Simple boolean attributes.
    `protected String` | `simpleDoctype(String html)` Simple doctype.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### JS_COMPRESSOR_YUI

          public static final String JS_COMPRESSOR_YUI

      The Constant JS_COMPRESSOR_YUI.
      See Also:
        Constant Field Values

    - #### 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.

    - #### 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:
        Constant Field Values

    - #### 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:
        Constant Field Values

    - #### ALL_TAGS

          public static final String ALL_TAGS

      Could be passed to `setRemoveSurroundingSpaces` method to remove all surrounding spaces (not recommended).
      See Also:
        Constant Field Values

    - #### TEMP_COND_COMMENT_BLOCK

          protected static final String TEMP_COND_COMMENT_BLOCK

      The Constant tempCondCommentBlock.
      See Also:
        Constant Field Values

    - #### TEMP_PRE_BLOCK

          protected static final String TEMP_PRE_BLOCK

      The Constant tempPreBlock.
      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_SCRIPT_BLOCK

          protected static final String TEMP_SCRIPT_BLOCK

      The Constant tempScriptBlock.
      See Also:
        Constant Field Values

    - #### TEMP_STYLE_BLOCK

          protected static final String TEMP_STYLE_BLOCK

      The Constant tempStyleBlock.
      See Also:
        Constant Field Values

    - #### TEMP_EVENT_BLOCK

          protected static final String TEMP_EVENT_BLOCK

      The Constant tempEventBlock.
      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

    - #### TEMP_SKIP_BLOCK

          protected static final String TEMP_SKIP_BLOCK

      The Constant tempSkipBlock.
      See Also:
        Constant Field Values

    - #### TEMP_USER_BLOCK

          protected static final String TEMP_USER_BLOCK

      The Constant tempUserBlock.
      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

    - #### 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:
        `YuiJavaScriptCompressor.DefaultErrorReporter`, Yahoo YUI Compressor, ErrorReporter Interface

    - #### 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:
        `YuiJavaScriptCompressor`, `ClosureJavaScriptCompressor`, Yahoo YUI Compressor, Google Closure Compiler

    - #### 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:
        `YuiJavaScriptCompressor`, `ClosureJavaScriptCompressor`, Yahoo YUI Compressor, Google Closure Compiler

    - #### 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()`

    - #### 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:
        `HtmlCompressorStatistics`, `setGenerateStatistics(boolean)`

    - #### 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

Copyright © 2009–2018 Jeremy Landis. All rights reserved.