Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.tectonica.util;
  
  import java.io.Reader;
  import java.util.HashMap;
  import java.util.Map;
  
 public class SearchReplaceReader extends Reader
 {
 	protected PushbackReader pushbackReader = null;
 	protected TokenResolver tokenResolver = null;
 	protected StringBuilder tokenNameBuffer = new StringBuilder();
 	protected String tokenValue = null;
 	protected int tokenValueIndex = 0;
 
 	public SearchReplaceReader(Reader sourceTokenResolver resolver)
 	{
 		this. = new PushbackReader(source, 2);
 		this. = resolver;
 	}
 
 	public int read(CharBuffer targetthrows IOException
 	{
 		throw new RuntimeException("Operation Not Supported");
 	}
 
 	public int read() throws IOException
 	{
 		if ( != null)
 		{
 
 			{
 				 = null;
 			}
 		}
 
 		int data = .read();
 		if (data != '$')
 			return data;
 
 		data = .read();
 		if (data != '{')
 		{
 			return '$';
 		}
 
 		data = .read();
 		while (data != '}')
 		{
 			.append((chardata);
 			data = .read();
 		}
 
 
 		if ( == null)
 			 = "${" + .toString() + "}";
 
 	}
 
 	public int read(char cbuf[]) throws IOException
 	{
 		return read(cbuf, 0, cbuf.length);
 	}
 
 	public int read(char cbuf[], int offint lenthrows IOException
 	{
 		int charsRead = 0;
 		for (int i = 0; i < leni++)
 		{
 			int nextChar = read();
 			if (nextChar == -1)
 			{
 				if (charsRead == 0)
 					charsRead = -1;
 				break;
 			}
 			charsRead = i + 1;
 			cbuf[off + i] = (charnextChar;
 		}
 		return charsRead;
 	}
 
 	public void close() throws IOException
 	{
 	}
 
 	public long skip(long nthrows IOException
 	{
		throw new RuntimeException("Operation Not Supported");
	}
	public boolean ready() throws IOException
	{
	}
	public boolean markSupported()
	{
		return false;
	}
	public void mark(int readAheadLimitthrows IOException
	{
		throw new RuntimeException("Operation Not Supported");
	}
	public void reset() throws IOException
	{
		throw new RuntimeException("Operation Not Supported");
	}
	// //////////////////////////////////////////////////////////////////////////////////
	public static interface TokenResolver
	{
		public String resolveToken(String tokenName);
	}
	public static class MapTokenResolver implements TokenResolver
	{
		protected Map<StringStringtokenMap = new HashMap<StringString>();
		public MapTokenResolver(Map<StringStringtokenMap)
		{
			this. = tokenMap;
		}
		public String resolveToken(String tokenName)
		{
			return this..get(tokenName);
		}
	}
New to GrepCode? Check out our FAQ X