{"id":7548418,"url":"https://github.com/mohiva/play-html-compressor","last_synced_at":"2025-05-12T01:31:24.698Z","repository":{"id":8965722,"uuid":"10706687","full_name":"mohiva/play-html-compressor","owner":"mohiva","description":"Google's HTML Compressor for Play Framework 2","archived":true,"fork":false,"pushed_at":"2019-07-22T11:04:43.000Z","size":128,"stargazers_count":97,"open_issues_count":0,"forks_count":21,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-08-04T20:34:05.765Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mohiva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-06-15T13:32:45.000Z","updated_at":"2024-02-19T15:46:46.000Z","dependencies_parsed_at":"2022-09-06T01:11:38.923Z","dependency_job_id":null,"html_url":"https://github.com/mohiva/play-html-compressor","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohiva%2Fplay-html-compressor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohiva%2Fplay-html-compressor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohiva%2Fplay-html-compressor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mohiva%2Fplay-html-compressor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mohiva","download_url":"https://codeload.github.com/mohiva/play-html-compressor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225112911,"owners_count":17422825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-04-08T00:53:34.991Z","updated_at":"2024-11-18T01:31:02.498Z","avatar_url":"https://github.com/mohiva.png","language":"Scala","funding_links":[],"categories":["Libraries"],"sub_categories":["Others"],"readme":"# This project is not maintained anymore.\n\nA fork can be found under: https://github.com/fkoehler/play-html-compressor\n\n\n\n# Google's HTML (and XML) Compressor for Play Framework 2 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.mohiva/play-html-compressor_2.11/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.mohiva/play-html-compressor_2.11) [![Build Status](https://travis-ci.org/mohiva/play-html-compressor.png)](https://travis-ci.org/mohiva/play-html-compressor)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mohiva/play-html-compressor?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n## Installation\n\nIn your project/Build.scala:\n```scala\nlibraryDependencies ++= Seq(\n  \"com.mohiva\" %% \"play-html-compressor\" % \"0.7.1\"\n)\n```\n\n### History\n\n* For Play Framework 2.6 use version 0.7.1\n* For Play Framework 2.5 use version 0.6.3\n* For Play Framework 2.4 use version 0.5.0\n* For Play Framework 2.3 use version 0.3.1\n* For Play Framework 2.2 use version 0.2.1\n* For Play Framework 2.1 use version 0.1-SNAPSHOT\n\n## How to use\n\nThe filter comes with built-in `HtmlCompressor` and `XmlCompressor`\nconfigurations, but it can also be used with user-defined configurations. The\nfollowing two examples shows how to define the filters with the default and the\nuser-defined configurations.\n\nTo provide the filters for your application you must define it as described in the Play\nDocumentation ([Scala](https://www.playframework.com/documentation/2.6.x/ScalaHttpFilters#Using-filters), [Java](https://www.playframework.com/documentation/2.6.x/JavaHttpFilters#Using-filters)).\n\n### Provide filters\n\n#### For Scala users\n\n```scala\nimport javax.inject.Inject\n\nimport com.mohiva.play.htmlcompressor.HTMLCompressorFilter\nimport com.mohiva.play.xmlcompressor.XMLCompressorFilter\nimport play.api.http.HttpFilters\nimport play.api.mvc.EssentialFilter\n\nclass Filters @Inject() (\n  htmlCompressorFilter: HTMLCompressorFilter,\n  xmlCompressorFilter: XMLCompressorFilter)\n  extends HttpFilters {\n\n  override def filters: Seq[EssentialFilter] = Seq(\n    htmlCompressorFilter,\n    xmlCompressorFilter\n  )\n}\n```\n\n#### For Java users\n\n```java\nimport com.mohiva.play.htmlcompressor.HTMLCompressorFilter;\nimport com.mohiva.play.xmlcompressor.XMLCompressorFilter;\nimport play.mvc.EssentialFilter;\nimport play.http.HttpFilters;\n\nimport javax.inject.Inject;\n\npublic class DefaultFilter implements HttpFilters {\n\n    private HTMLCompressorFilter htmlCompressorFilter;\n    private XMLCompressorFilter xmlCompressorFilter;\n\n    @Inject\n    public DefaultFilter(\n        HTMLCompressorFilter htmlCompressorFilter,\n        XMLCompressorFilter xmlCompressorFilter) {\n\n        this.htmlCompressorFilter = htmlCompressorFilter;\n        this.xmlCompressorFilter = xmlCompressorFilter;\n    }\n\n    @Override\n    public EssentialFilter[] filters() {\n        return new EssentialFilter[] {\n            htmlCompressorFilter.asJava(),\n            xmlCompressorFilter.asJava()\n        };\n    }\n}\n\n```\n\n### Default filter\n\nFor the default filters we provide DI modules which will be automatically enabled if you\npull in the dependency. You must only provide your instance of `HttpFilters` as described\nabove.\n\n### User-defined filter\n\nFor user defined filters there is a little bit mor to do. First you must create your instances of\nthe filter. As next you must provide your instance of `HttpFilters` as described above. At last\nyou must provide the bindings for you created filter and disable the default DI modules.\n\n#### Implement filters\n\n##### For Scala users\n\n```scala\nimport javax.inject.Inject\n\nimport akka.stream.Materializer\nimport com.googlecode.htmlcompressor.compressor.HtmlCompressor\nimport com.mohiva.play.htmlcompressor.HTMLCompressorFilter\nimport play.api.{Configuration, Environment, Mode}\n\nclass CustomHTMLCompressorFilter @Inject() (\n  val configuration: Configuration, environment: Environment, val mat: Materializer)\n  extends HTMLCompressorFilter {\n\n  override val compressor: HtmlCompressor = {\n    val c = new HtmlCompressor()\n    if (environment.mode == Mode.Dev) {\n      c.setPreserveLineBreaks(true)\n    }\n\n    c.setRemoveComments(true)\n    c.setRemoveIntertagSpaces(false)\n    c.setRemoveHttpProtocol(true)\n    c.setRemoveHttpsProtocol(true)\n    c\n  }\n}\n\n```\n\n##### For Java users\n\n```java\nimport akka.stream.Materializer;\nimport com.googlecode.htmlcompressor.compressor.HtmlCompressor;\nimport com.mohiva.play.htmlcompressor.HTMLCompressorFilter;\nimport play.Environment;\nimport play.Mode;\nimport play.api.Configuration;\n\nimport javax.inject.Inject;\n\npublic class CustomHTMLCompressorFilter extends HTMLCompressorFilter {\n\n    private Configuration configuration;\n    private Environment environment;\n    private Materializer mat;\n\n    @Inject\n    public CustomHTMLCompressorFilter(\n        Configuration configuration, Environment environment, Materializer mat) {\n\n        this.configuration = configuration;\n        this.environment = environment;\n        this.mat = mat;\n    }\n\n    @Override\n    public Configuration configuration() {\n        return configuration;\n    }\n\n    @Override\n    public HtmlCompressor compressor() {\n        HtmlCompressor compressor = new HtmlCompressor();\n        if (environment.mode() == Mode.DEV) {\n            compressor.setPreserveLineBreaks(true);\n        }\n\n        compressor.setRemoveComments(true);\n        compressor.setRemoveIntertagSpaces(true);\n        compressor.setRemoveHttpProtocol(true);\n        compressor.setRemoveHttpsProtocol(true);\n\n        return compressor;\n    }\n\n    @Override\n    public Materializer mat() {\n        return mat;\n    }\n\n}\n\n```\n\n#### Provide bindings\n\nTo provide your bindings for your user defined filter you must either create a new module\nor you can add the binding to your default DI module. This process is detailed documented\nfor [Scala](https://www.playframework.com/documentation/2.6.x/ScalaDependencyInjection) and\n[Java](https://www.playframework.com/documentation/2.6.x/JavaDependencyInjection) users. So\nplease refer to this documentation.\n\n##### Disable default modules\n\nTo disable the default modules you must append the modules to the `play.modules.disabled` property in `application.conf`:\n\n```scala\nplay.modules.disabled += \"com.mohiva.play.htmlcompressor.HTMLCompressorFilterModule\"\nplay.modules.disabled += \"com.mohiva.play.xmlcompressor.XMLCompressorFilterModule\"\n```\n\n### Customize filter behaviour\n\nYou have the possibility to customize filter behaviour without using class inheritance. For\nthat, you could adding the following keys on your `application.conf` file :\n\n```scala\nplay.filters {\n\n  # Mohiva Compressor\n  # ~~~~~\n  # https://github.com/mohiva/play-html-compressor\n  compressor {\n    html {\n      preserveLineBreaks = false\n      removeComments = true\n      removeIntertagSpaces = false\n      removeHttpProtocol = true\n      removeHttpsProtocol = true\n    }\n\n    xml {\n      removeComments = true\n      removeIntertagSpaces = true\n    }\n  }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohiva%2Fplay-html-compressor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohiva%2Fplay-html-compressor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohiva%2Fplay-html-compressor/lists"}