]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/classes/core/src/com/ibm/icu/impl/locale/PrivateuseExtension.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / classes / core / src / com / ibm / icu / impl / locale / PrivateuseExtension.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2009, International Business Machines Corporation and         *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.impl.locale;\r
8 \r
9 import com.ibm.icu.impl.locale.LanguageTag.ParseStatus;\r
10 \r
11 public class PrivateuseExtension extends Extension {\r
12     public static final char SINGLETON = 'x';\r
13 \r
14     protected PrivateuseExtension() {\r
15         super(SINGLETON);\r
16     }\r
17 \r
18     /*\r
19      * package local constructor only used by LanguageTag implementation\r
20      */\r
21     PrivateuseExtension(String privuse) {\r
22         super(SINGLETON);\r
23         _value = privuse;\r
24     }\r
25 \r
26     protected void setExtensionValue(StringTokenIterator itr, ParseStatus sts) {\r
27         if (sts.isError() || itr.isDone()) {\r
28             _value = null;\r
29             return;\r
30         }\r
31 \r
32         StringBuilder buf = new StringBuilder();\r
33         while (!itr.isDone()) {\r
34             String s = itr.current();\r
35             if (!LanguageTag.isPrivateuseSubtag(s)) {\r
36                 break;\r
37             }\r
38             s = LanguageTag.canonicalizePrivateuseSubtag(s);\r
39             if (buf.length() != 0) {\r
40                 buf.append(LanguageTag.SEP);\r
41             }\r
42             buf.append(s);\r
43             sts.parseLength = itr.currentEnd();\r
44             itr.next();\r
45         }\r
46 \r
47         if (buf.length() == 0) {\r
48             _value = null;\r
49         } else {\r
50             _value = buf.toString();\r
51         }\r
52     }\r
53 }\r