package humanize.text.util;
import java.util.ArrayList;
import java.util.Collection;
import com.google.common.base.Strings;
import com.google.common.collect.Range;
import com.google.common.escape.UnicodeEscaper;
public class UnicodeInterpolator extends UnicodeEscaper
{
private final Replacer replacer;
private final Collection<Range<Integer>> ranges;
public UnicodeInterpolator(Replacer replacer)
{
this.replacer = replacer;
this.ranges = new ArrayList<Range<Integer>>();
}
public void addRange(int lower, int upper)
{
addRange(Range.closed(lower, upper));
}
public void addRange(Range<Integer> range)
{
ranges.add(range);
}
@Override
protected char[] escape(int codePoint)
{
for (Range<Integer> range : ranges)
{
if (range.contains(codePoint))
{
return Strings.nullToEmpty(replacer.replace(Integer.toHexString(codePoint))).toCharArray();
}
}
return Character.toChars(codePoint);
}
}