<commit_before>Webcrush
========

Webcrush is a simple utility for minifying and compressing HTML.

Crushing an HTML file discourages casual inspection of the code,
which may be useful, for example, for posting an interactive puzzle
or a student problem-set project without broadcasting spoilers
in cleartext in the HTML.

## Usage

Webcrush can be used at [this][1] page. The webpage provides two options:

  * LZ compression is optional, on by default.  Unchecking this
    can result in smaller files when LZ overhead dominates.
  * Absolute-url scripts (such as CDN scripts) can be pulled
    out of the LZ compressed code, on by default.  Chrome
    warns about performance penalties when CDN scripts are
    generated by document.write, this avoids that warning.

There is also a [nodejs API][2] and a nodejs [command-line interface][3]
that provide more options which can be read about in the source.

[1]: https://rawgit.com/davidbau/webcrush/master/webcrush.html
[2]: https://github.com/davidbau/webcrush/blob/master/lib/webcrush.js
[3]: https://github.com/davidbau/webcrush/blob/master/bin/webcrush

## Caveats

Note that crushing is not good for hiding serious secrets in HTML,
because it is not difficult to decompress and reveal the code.
Also, crushing can grow short documents, because the code is
expressed in base64 (which grows 25%) and LZ decompression code
must be packaged in the document (which adds 483 bytes). It
is better to rely on HTTP gzip encoding for saving bandwidth.<commit_msg>Grammar.<commit_after>Webcrush
========

Webcrush is a simple utility for minifying and compressing HTML.

Crushing an HTML file discourages casual inspection of the code,
which may be useful, for example, for posting an interactive puzzle
or a student problem-set project without broadcasting spoilers
in cleartext in the HTML.

## Usage

Webcrush can be used at [this][1] page. The webpage provides two options:

  * LZ compression is optional, on by default.  Unchecking this
    can result in smaller files when LZ overhead dominates.
  * Absolute-url scripts (such as CDN scripts) can be pulled
    out of the LZ compressed code, on by default.  Chrome
    warns about performance penalties when CDN scripts are
    generated by document.write, and this avoids that warning.

There is also a [nodejs API][2] and a nodejs [command-line interface][3]
that provide more options which can be read about in the source.

[1]: https://rawgit.com/davidbau/webcrush/master/webcrush.html
[2]: https://github.com/davidbau/webcrush/blob/master/lib/webcrush.js
[3]: https://github.com/davidbau/webcrush/blob/master/bin/webcrush

## Caveats

Note that crushing is not good for hiding serious secrets in HTML,
because it is not difficult to decompress and reveal the code.
Also, crushing can grow short documents, because the code is
expressed in base64 (which grows 25%) and LZ decompression code
must be packaged in the document (which adds 483 bytes). It
is better to rely on HTTP gzip encoding for saving bandwidth.
{'fraction_non_alphanumeric': 0.0665783371977476, 'fraction_numerical': 0.008612123219609143, 'mean_word_length': 4.326278659611993, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '275913', 'n_tokens_mistral': 857, 'n_tokens_neox': 824, 'n_words': 410}