Package: org.gradle.api.file

## [Java] Interface ContentFilterable

- Represents some binary resource whose content can be filtered.

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `ContentFilterable` | `expand(Map<String, ?> properties)`
    `ContentFilterable` | `filter(Map<String, ?> properties, Class<? extends FilterReader> filterType)`
    `ContentFilterable` | `filter(Class<? extends FilterReader> filterType)`
    `ContentFilterable` | `filter(groovy.lang.Closure closure)` Adds a content filter based on the provided closure.

- - ### Method Detail

    - #### public ContentFilterable expand(Map<String, ?> properties)

      Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's groovy.text.SimpleTemplateEngine. This means you can use simple property references, such as `$property` or `${property}` in the file. You can also include arbitrary Groovy code in the file, such as `${version ?: 'unknown'}` or `${classpath*.name.join(' ')}`

      Parameters:
        `properties` - to implement line based filtering
      Returns:
        this

    - #### public ContentFilterable filter(Map<String, ?> properties, Class<? extends FilterReader> filterType)

      Adds a content filter to be used during the copy. Multiple calls to filter, add additional filters to the filter chain. Each filter should implement `java.io.FilterReader`. Include `org.apache.tools.ant.filters.*` for access to all the standard Ant filters.

      Filter properties may be specified using groovy map syntax.

      Examples:

              filter(HeadFilter, lines:25, skip:2)
              filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])

      Parameters:
        `properties` - map of filter properties
        `filterType` - Class of filter to add
      Returns:
        this

    - #### public ContentFilterable filter(Class<? extends FilterReader> filterType)

      Adds a content filter to be used during the copy. Multiple calls to filter, add additional filters to the filter chain. Each filter should implement `java.io.FilterReader`. Include `org.apache.tools.ant.filters.*` for access to all the standard Ant filters.

      Examples:

              filter(StripJavaComments)
              filter(com.mycompany.project.CustomFilter)

      Parameters:
        `filterType` - Class of filter to add
      Returns:
        this

    - #### public ContentFilterable filter(groovy.lang.Closure closure)

      Adds a content filter based on the provided closure. The Closure will be called with each line (stripped of line endings) and should return a String to replace the line or `null` to remove the line. If every line is removed, the result will be an empty file, not an absent one.

      Parameters:
        `closure` - to implement line based filtering
      Returns:
        this