You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2009/06/25 05:54:44 UTC
svn commit: r788244 -
/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/translate/UnicodeEscaper.java
Author: bayard
Date: Thu Jun 25 03:54:43 2009
New Revision: 788244
URL: http://svn.apache.org/viewvc?rev=788244&view=rev
Log:
Rather than writing specific translators to handle unicode between different ranges, UnicodeEscaper now supports a range filter. cf LANG-505
Modified:
commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/translate/UnicodeEscaper.java
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/translate/UnicodeEscaper.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/translate/UnicodeEscaper.java?rev=788244&r1=788243&r2=788244&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/translate/UnicodeEscaper.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/translate/UnicodeEscaper.java Thu Jun 25 03:54:43 2009
@@ -25,10 +25,47 @@
*/
public class UnicodeEscaper extends CodePointTranslator {
+ private int below = 0;
+ private int above = Integer.MAX_VALUE;
+ private boolean between = true;
+
+ public static UnicodeEscaper below(int codepoint) {
+ return between(0, codepoint);
+ }
+
+ public static UnicodeEscaper above(int codepoint) {
+ return between(codepoint, Integer.MAX_VALUE);
+ }
+
+ public static UnicodeEscaper outsideOf(int codepointLow, int codepointHigh) {
+ UnicodeEscaper escaper = new UnicodeEscaper();
+ escaper.above = codepointHigh;
+ escaper.below = codepointLow;
+ escaper.between = false;
+ return escaper;
+ }
+
+ public static UnicodeEscaper between(int codepointLow, int codepointHigh) {
+ UnicodeEscaper escaper = new UnicodeEscaper();
+ escaper.above = codepointHigh;
+ escaper.below = codepointLow;
+ return escaper;
+ }
+
/**
* {@inheritDoc}
*/
public boolean translate(int codepoint, Writer out) throws IOException {
+ if(between) {
+ if (codepoint < below || codepoint > above) {
+ return false;
+ }
+ } else {
+ if (codepoint >= below && codepoint <= above) {
+ return false;
+ }
+ }
+
if (codepoint > 0xffff) {
// TODO: Figure out what to do. Output as two unicodes?
// Does this make this a Java-specific output class?