Package org.codehaus.plexus.util

# Class InterpolationFilterReader

java.lang.Object
java.io.Reader
java.io.FilterReader
org.codehaus.plexus.util.InterpolationFilterReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Readable`

public class InterpolationFilterReader extends FilterReader
A FilterReader which interpolates keyword values into a character stream. Keywords are recognized when enclosed between starting and ending delimiter strings. The keywords themselves, and their values, are fetched from a Map supplied to the constructor.

When a possible keyword token is recognized (by detecting the starting and ending token delimiters):

- if the enclosed string is found in the keyword Map, the delimiters and the keyword are effectively replaced by the keyword's value;
- if the enclosed string is found in the keyword Map, but its value has zero length, then the token (delimiters and keyword) is effectively removed from the character stream;
- if the enclosed string is not found in the keyword Map, then no substitution is made; the token text is passed through unaltered.

See Also:
  - `s`

## Field Summary

### Fields inherited from class java.io.FilterReader

`in`

### Fields inherited from class java.io.Reader

`lock`

## Constructor Summary

Constructors
Constructor
Description
`InterpolationFilterReader(Reader in, Map<?,Object> variables, String beginToken, String endToken)`
Construct a Reader to interpolate values enclosed between the given delimiter tokens.
`InterpolationFilterReader(Reader in, Map<String,Object> variables)`
Construct a Reader using the default interpolation delimiter tokens "${" and "}".

## Method Summary

Modifier and Type
Method
Description
`int`
`read()`
Returns the next character in the filtered stream, replacing tokens from the original stream.
`int`
`read(char[] cbuf, int off, int len)`
Reads characters into a portion of an array.
`long`
`skip(long n)`
Skips characters.

### Methods inherited from class java.io.FilterReader

`close, mark, markSupported, ready, reset`

### Methods inherited from class java.io.Reader

`nullReader, read, read, transferTo`

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

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

## Constructor Details

### InterpolationFilterReader

public InterpolationFilterReader(Reader in, Map<?,Object> variables, String beginToken, String endToken)
Construct a Reader to interpolate values enclosed between the given delimiter tokens.

Parameters:
  `in` - a Reader to be wrapped for interpolation.
  `variables` - name/value pairs to be interpolated into the character stream.
  `beginToken` - an interpolation target begins with this.
  `endToken` - an interpolation target ends with this.

### InterpolationFilterReader

public InterpolationFilterReader(Reader in, Map<String,Object> variables)
Construct a Reader using the default interpolation delimiter tokens "${" and "}".

Parameters:
  `in` - a Reader to be wrapped for interpolation.
  `variables` - name/value pairs to be interpolated into the character stream.

## Method Details

### skip

public long skip(long n) throws IOException
Skips characters. This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached.

Overrides:
  `skip` in class `FilterReader`
Parameters:
  `n` - The number of characters to skip
Returns:
  the number of characters actually skipped
Throws:
  `IllegalArgumentException` - If `n` is negative.
  `IOException` - If an I/O error occurs

### read

public int read(char[] cbuf, int off, int len) throws IOException
Reads characters into a portion of an array. This method will block until some input is available, an I/O error occurs, or the end of the stream is reached.

Overrides:
  `read` in class `FilterReader`
Parameters:
  `cbuf` - Destination buffer to write characters to. Must not be `null`.
  `off` - Offset at which to start storing characters.
  `len` - Maximum number of characters to read.
Returns:
  the number of characters read, or -1 if the end of the stream has been reached
Throws:
  `IOException` - If an I/O error occurs

### read

public int read() throws IOException
Returns the next character in the filtered stream, replacing tokens from the original stream.

Overrides:
  `read` in class `FilterReader`
Returns:
  the next character in the resulting stream, or -1 if the end of the resulting stream has been reached
Throws:
  `IOException` - if the underlying stream throws an IOException during reading