1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.intl;
16
17 import org.htmlunit.corejs.javascript.Context;
18 import org.htmlunit.corejs.javascript.Function;
19 import org.htmlunit.corejs.javascript.FunctionObject;
20 import org.htmlunit.corejs.javascript.NativeArray;
21 import org.htmlunit.corejs.javascript.Scriptable;
22 import org.htmlunit.corejs.javascript.VarScope;
23 import org.htmlunit.javascript.HtmlUnitScriptable;
24 import org.htmlunit.javascript.JavaScriptEngine;
25 import org.htmlunit.javascript.configuration.JsxClass;
26 import org.htmlunit.javascript.configuration.JsxConstructor;
27 import org.htmlunit.javascript.configuration.JsxSymbolConstant;
28
29
30
31
32
33
34
35 @JsxClass
36 public class Collator extends HtmlUnitScriptable {
37
38
39 @JsxSymbolConstant
40 public static final String TO_STRING_TAG = "Intl.Collator";
41
42
43
44
45
46
47
48
49
50
51 @JsxConstructor
52 public static Scriptable jsConstructor(final Context cx, final VarScope scope,
53 final Object[] args, final Function ctorObj, final boolean inNewExpr) {
54 final String[] locales;
55 if (args.length == 0) {
56 locales = new String[] {""};
57 }
58 else {
59 if (args[0] instanceof NativeArray array) {
60 locales = new String[(int) array.getLength()];
61 for (int i = 0; i < locales.length; i++) {
62 locales[i] = JavaScriptEngine.toString(array.get(i));
63 }
64 }
65 else {
66 locales = new String[] {JavaScriptEngine.toString(args[0])};
67 }
68 }
69 final Collator format = new Collator();
70 format.setParentScope(scope);
71 format.setPrototype(((FunctionObject) ctorObj).getClassPrototype());
72 return format;
73 }
74
75 @Override
76 public Object getDefaultValue(final Class<?> hint) {
77 if (String.class.equals(hint) || hint == null) {
78 return "[object Intl.Collator]";
79 }
80 return super.getDefaultValue(hint);
81 }
82 }