Package org.gradle.api.file

## Interface ContentFilterable

- All Known Subinterfaces:
    `CopyProcessingSpec`, `CopySpec`, `FileCopyDetails`
  All Known Implementing Classes:
    `AbstractArchiveTask`, `AbstractCopyTask`, `Copy`, `Ear`, `Jar`, `Jar`, `ProcessResources`, `Sync`, `Tar`, `War`, `Zip`

      public interface ContentFilterable

  Represents some binary resource whose content can be filtered.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ContentFilterable` | `expand​(Map<String,​?> properties)` | Expands property references in each file as it is copied.
    `ContentFilterable` | `expand​(Map<String,​?> properties, Action<? super ExpandDetails> action)` | Expands property references in each file as it is copied.
    `ContentFilterable` | `filter​(Closure closure)` | Adds a content filter based on the provided closure.
    `ContentFilterable` | `filter​(Class<? extends FilterReader> filterType)` | Adds a content filter to be used during the copy.
    `ContentFilterable` | `filter​(Map<String,​?> properties, Class<? extends FilterReader> filterType)` | Adds a content filter to be used during the copy.
    `ContentFilterable` | `filter​(Transformer<String,​String> transformer)` | Adds a content filter based on the provided transformer.

- - ### Method Detail

    - #### filter

          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

    - #### filter

          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

    - #### filter

          ContentFilterable filter​(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

    - #### filter

          ContentFilterable filter​(Transformer<String,​String> transformer)

      Adds a content filter based on the provided transformer. 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:
        `transformer` - to implement line based filtering
      Returns:
        this

    - #### expand

          ContentFilterable expand​(Map<String,​?> properties)

      Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's `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(' ')}`

      Note that all escape sequences (`\n`, `\t`, `\\`, etc) are converted to the symbols they represent, so, for example, `\n` becomes newline. If this is undesirable then `expand(Map, Action)` should be used to disable this behavior.

      Parameters:
        `properties` - reference-to-value map for substitution
      Returns:
        this

    - #### expand

          @Incubating
          ContentFilterable expand​(Map<String,​?> properties,
                                   Action<? super ExpandDetails> action)

      Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's `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(' ')}`. The template engine can be configured with the provided action.

      Note that by default all escape sequences (`\n`, `\t`, `\\`, etc) are converted to the symbols they represent, so, for example, `\n` becomes newline. This behavior is controlled by `ExpandDetails.getEscapeBackslash()` property. It should be set to `true` to disable escape sequences conversion:

            expand(one: '1', two: 2) {
                escapeBackslash = true
            }

      Parameters:
        `properties` - reference-to-value map for substitution
        `action` - action to perform additional configuration of the underlying template engine
      Returns:
        this
      Since:
        7.2