RemoveTransliterator.java
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
*******************************************************************************
* Copyright (C) 1996-2014, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.text;
/** A transliterator that removes characters. This is useful in conjunction with a filter. */
class RemoveTransliterator extends Transliterator {
/** ID for this transliterator. */
private static final String _ID = "Any-Remove";
/** System registration hook. */
static void register() {
Transliterator.registerFactory(
_ID,
new Transliterator.Factory() {
@Override
public Transliterator getInstance(String ID) {
return new RemoveTransliterator();
}
});
Transliterator.registerSpecialInverse("Remove", "Null", false);
}
/** Constructs a transliterator. */
public RemoveTransliterator() {
super(_ID, null);
}
/** Implements {@link Transliterator#handleTransliterate}. */
@Override
protected void handleTransliterate(Replaceable text, Position index, boolean incremental) {
// Our caller (filteredTransliterate) has already narrowed us
// to an unfiltered run. Delete it.
text.replace(index.start, index.limit, "");
int len = index.limit - index.start;
index.contextLimit -= len;
index.limit -= len;
}
/* (non-Javadoc)
* @see com.ibm.icu.text.Transliterator#addSourceTargetSet(boolean, com.ibm.icu.text.UnicodeSet, com.ibm.icu.text.UnicodeSet)
*/
@Override
public void addSourceTargetSet(
UnicodeSet inputFilter, UnicodeSet sourceSet, UnicodeSet targetSet) {
// intersect myFilter with the input filter
UnicodeSet myFilter = getFilterAsUnicodeSet(inputFilter);
sourceSet.addAll(myFilter);
// do nothing with the target
}
}