/*******************************************************************************
* Copyright (c) 2012 Research Group for Industrial Software (INSO), Vienna University of Technology.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Research Group for Industrial Software (INSO), Vienna University of Technology - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.versions.tasks.mapper.internal;
import java.util.Arrays;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;
/**
*
* @author Kilian Matt
*
*/
public class BracketFilter extends TokenFilter {
private TermAttribute attribute;
private char[] illegalChars= {'(',')','[',']','{','}'};
public BracketFilter(TokenStream in) {
super(in);
attribute = (TermAttribute) addAttribute(TermAttribute.class);
Arrays.sort(illegalChars);
}
/** Returns the next token in the stream, or null at EOS.
* <p>Removes <tt>'s</tt> from the end of words.
* <p>Removes dots from acronyms.
*/
public final boolean incrementToken() throws java.io.IOException {
if(!input.incrementToken()) return false;
char[] buffer = attribute.termBuffer();
char[] target = new char[buffer.length];
int targetPos=0;
for(int i =0; i < buffer.length; i++) {
if(Arrays.binarySearch(illegalChars,buffer[i])<0) {
target[targetPos++] = buffer[i];
}
}
attribute.setTermBuffer(target,0,targetPos);
return true;
}
}