/** * Copyright 2015 Santhosh Kumar Tekuri * * The JLibs authors license this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package jlibs.xml.sax.async; import java.io.IOException; import java.io.Reader; /** * @author Santhosh Kumar T */ class SpaceWrappedReader extends Reader{ private char[] data; private int index = -1; public SpaceWrappedReader(char[] data){ this.data = data; } @Override public int read(char[] buf, int off, int len) throws IOException{ if(index==data.length+1) return -1; int givenOff = off; if(index==-1){ buf[off] = ' '; off++; len--; index++; } if(len>0 && index<data.length){ int read = Math.min(data.length-index, len); System.arraycopy(data, index, buf, off, read); off += read; index += read; len -= read; } if(len>0 && index==data.length){ buf[off] = ' '; off++; index++; } return off-givenOff; } @Override public void close() throws IOException{ index = data.length+1; } }