• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *******************************************************************************
3  * Copyright (C) 1996-2012, International Business Machines Corporation and    *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 package org.unicode.cldr.util.props;
8 
9 import com.ibm.icu.impl.Utility;
10 import com.ibm.icu.text.UTF16;
11 
12 public abstract class UnicodeLabel implements com.ibm.icu.text.Transform<Integer, String> {
13 
getValue(int codepoint, boolean isShort)14     public abstract String getValue(int codepoint, boolean isShort);
15 
16     @Override
transform(Integer codepoint)17     public String transform(Integer codepoint) {
18         return getValue(codepoint, true);
19     }
20 
getValue(String s, String separator, boolean withCodePoint)21     public String getValue(String s, String separator, boolean withCodePoint) {
22         if (s.length() == 1) { // optimize simple case
23             return getValue(s.charAt(0), withCodePoint);
24         }
25         StringBuffer sb = new StringBuffer();
26         int cp;
27         for (int i = 0; i < s.length(); i+=UTF16.getCharCount(cp)) {
28             cp = UTF16.charAt(s,i);
29             if (i != 0) sb.append(separator);
30             sb.append(getValue(cp, withCodePoint));
31         }
32         return sb.toString();
33     }
34 
getMaxWidth(boolean isShort)35     public int getMaxWidth(boolean isShort) {
36         return 0;
37     }
38 
39     private static class Hex extends UnicodeLabel {
40         @Override
getValue(int codepoint, boolean isShort)41         public String getValue(int codepoint, boolean isShort) {
42             if (isShort) return Utility.hex(codepoint,4);
43             return "U+" + Utility.hex(codepoint,4);
44         }
45     }
46 
47     public static class Constant extends UnicodeLabel {
48         private String value;
Constant(String value)49         public Constant(String value) {
50             if (value == null) value = "";
51             this.value = value;
52         }
53         @Override
getValue(int codepoint, boolean isShort)54         public String getValue(int codepoint, boolean isShort) {
55             return value;
56         }
57         @Override
getMaxWidth(boolean isShort)58         public int getMaxWidth(boolean isShort) {
59             return value.length();
60         }
61     }
62     public static final UnicodeLabel NULL = new Constant("");
63     public static final UnicodeLabel HEX = new Hex();
64 }
65