
com.oracle.truffle.js.runtime.Strings Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of js-language Show documentation
Show all versions of js-language Show documentation
Graal JavaScript implementation
The newest version!
/*
* Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
*
* Subject to the condition set forth below, permission is hereby granted to any
* person obtaining a copy of this software, associated documentation and/or
* data (collectively the "Software"), free of charge and under any and all
* copyright rights in the Software, and any and all patent rights owned or
* freely licensable by each licensor hereunder covering either (i) the
* unmodified Software as contributed to or provided by such licensor, or (ii)
* the Larger Works (as defined below), to deal in both
*
* (a) the Software, and
*
* (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
* one is included with the Software each a "Larger Work" to which the Software
* is contributed by such licensors),
*
* without restriction, including without limitation the rights to copy, create
* derivative works of, display, perform, and distribute the Software and make,
* use, sell, offer for sale, import, export, have made, and have sold the
* Software and the Larger Work(s), and to sublicense the foregoing rights on
* either these or other terms.
*
* This license is subject to the following condition:
*
* The above copyright notice and either this complete permission notice or at a
* minimum a reference to the UPL must be included in all copies or substantial
* portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.oracle.truffle.js.runtime;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Locale;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
import com.oracle.truffle.api.interop.InteropLibrary;
import com.oracle.truffle.api.interop.UnsupportedMessageException;
import com.oracle.truffle.api.strings.TruffleString;
import com.oracle.truffle.api.strings.TruffleStringBuilder;
import com.oracle.truffle.api.strings.TruffleStringBuilderUTF16;
public final class Strings {
private Strings() {
}
public static final TruffleString EMPTY_STRING = TruffleString.Encoding.UTF_16.getEmpty();
public static final String LINE_SEPARATOR_JLS = "\n";
public static final TruffleString LINE_SEPARATOR = constant(LINE_SEPARATOR_JLS);
/* Numeric */
public static final TruffleString ZERO = constant("0");
public static final TruffleString NEGATIVE_ZERO = constant("-0");
public static final TruffleString INFINITY = constant("Infinity");
public static final TruffleString NEGATIVE_INFINITY = constant("-Infinity");
public static final TruffleString POSITIVE_INFINITY = constant("+Infinity");
public static final TruffleString NAN = constant("NaN");
public static final TruffleString CAPS_POSITIVE_INFINITY = constant("POSITIVE_INFINITY");
public static final TruffleString CAPS_NEGATIVE_INFINITY = constant("NEGATIVE_INFINITY");
public static final TruffleString CAPS_MAX_VALUE = constant("MAX_VALUE");
public static final TruffleString CAPS_MIN_VALUE = constant("MIN_VALUE");
public static final TruffleString CAPS_EPSILON = constant("EPSILON");
public static final TruffleString CAPS_MAX_SAFE_INTEGER = constant("MAX_SAFE_INTEGER");
public static final TruffleString CAPS_MIN_SAFE_INTEGER = constant("MIN_SAFE_INTEGER");
/* Math */
public static final TruffleString E = constant("E");
public static final TruffleString PI = constant("PI");
public static final TruffleString LN_10 = constant("LN10");
public static final TruffleString LN_2 = constant("LN2");
public static final TruffleString LOG_2_E = constant("LOG2E");
public static final TruffleString LOG_10_E = constant("LOG10E");
public static final TruffleString SQRT_1_2 = constant("SQRT1_2");
public static final TruffleString SQRT_2 = constant("SQRT2");
/* Special chars */
public static final TruffleString ANGLE_BRACKET_OPEN = constant("<");
public static final TruffleString ANGLE_BRACKET_OPEN_2 = constant("<<");
public static final TruffleString ANGLE_BRACKET_CLOSE = constant(">");
public static final TruffleString ANGLE_BRACKET_CLOSE_2 = constant(">>");
public static final TruffleString ANGLE_BRACKET_CLOSE_3 = constant(">>>");
public static final TruffleString ANGLE_BRACKET_OPEN_SLASH = constant("");
public static final TruffleString BACKSLASH = constant("\\");
public static final TruffleString BIG_ARROW_SPACES = constant(" => ");
public static final TruffleString BRACKET_OPEN = constant("[");
public static final TruffleString BRACKET_OPEN_2 = constant("[[");
public static final TruffleString BRACKET_CLOSE = constant("]");
public static final TruffleString BRACKET_CLOSE_2_COLON = constant("]]: ");
public static final TruffleString COMMA = constant(",");
public static final TruffleString COMMA_SPC = constant(", ");
public static final TruffleString COMMA_NEWLINE = constant(",\n");
public static final TruffleString COLON = constant(":");
public static final TruffleString COLON_SPACE = constant(": ");
public static final TruffleString DASH = constant("-");
public static final TruffleString DOUBLE_QUOTE = constant("\"");
public static final TruffleString DOT = constant(".");
public static final TruffleString DOT_SLASH = constant("./");
public static final TruffleString DOT_DOT_SLASH = constant("../");
public static final TruffleString DOT_DOT_DOT = constant("...");
public static final TruffleString EMPTY_ARRAY = constant("[]");
public static final TruffleString EMPTY_ARRAY_DOTS = constant("[...]");
public static final TruffleString EMPTY_OBJECT = constant("{}");
public static final TruffleString EMPTY_OBJECT_DOTS = constant("{...}");
public static final TruffleString EQUALS_DOUBLE_QUOTE = constant("=\"");
public static final TruffleString EXCLAMATION_MARK = constant("!");
public static final TruffleString GET_DOLLAR_UNDERSCORE = constant("get $_");
public static final TruffleString PAREN_OPEN = constant("(");
public static final TruffleString PAREN_CLOSE = constant(")");
public static final TruffleString UNDERSCORE = constant("_");
public static final TruffleString UNDERSCORE_2 = constant("__");
public static final TruffleString SLASH = constant("/");
public static final TruffleString SPACE = constant(" ");
public static final TruffleString SINGLE_QUOTE = constant("'");
public static final TruffleString SYMBOL_PLUS = constant("+");
public static final TruffleString SYMBOL_PLUS_PLUS = constant("++");
public static final TruffleString SYMBOL_MINUS = DASH;
public static final TruffleString SYMBOL_MINUS_MINUS = constant("--");
public static final TruffleString SYMBOL_AMPERSAND = constant("&");
public static final TruffleString SYMBOL_PIPE = constant("|");
public static final TruffleString SYMBOL_PERCENT = constant("%");
public static final TruffleString SYMBOL_CARET = constant("^");
public static final TruffleString SYMBOL_TILDE = constant("~");
public static final TruffleString SYMBOL_EQUALS_EQUALS = constant("==");
public static final TruffleString SYMBOL_STAR = constant("*");
public static final TruffleString SYMBOL_STAR_STAR = constant("**");
public static final TruffleString BRACKET_SYMBOL_DOT = constant("[Symbol.");
/* words */
public static final TruffleString ACCESSOR = constant("accessor");
public static final TruffleString ADD = constant("add");
public static final TruffleString ALL = Strings.constant("all");
public static final TruffleString ANY = Strings.constant("any");
public static final TruffleString APPLY = Strings.constant("apply");
public static final TruffleString ARGUMENTS = Strings.constant("arguments");
public static final TruffleString BOUND = constant("bound");
public static final TruffleString CALL = constant("call");
public static final TruffleString CALLEE = constant("callee");
public static final TruffleString CALLER = constant("caller");
public static final TruffleString CAUSE = constant("cause");
public static final TruffleString COMPARE = constant("compare");
public static final TruffleString CONSTRUCT = Strings.constant("construct");
public static final TruffleString DEFAULT = constant("default");
public static final TruffleString DEFAULT_VALUE = constant("defaultValue");
public static final TruffleString DELETE = constant("delete");
public static final TruffleString DONE = constant("done");
public static final TruffleString EMPTY = constant("empty");
public static final TruffleString EMPTY_X = constant("empty \u00d7 ");
public static final TruffleString ENTRIES = constant("entries");
public static final TruffleString UC_ERROR = constant("Error");
public static final TruffleString FILE = constant("file");
public static final TruffleString FORMAT = constant("format");
public static final TruffleString FUNCTION = constant("function");
public static final TruffleString GLOBAL = constant("global");
public static final TruffleString HAS = constant("has");
public static final TruffleString INDEX = constant("index");
public static final TruffleString INPUT = constant("input");
public static final TruffleString INSTANCE = constant("instance");
public static final TruffleString JOIN = constant("join");
public static final String JOIN_JLS = toJavaString(JOIN);
public static final TruffleString JSON = constant("json");
public static final TruffleString KEY = constant("key");
public static final TruffleString KEYS = constant("keys");
public static final TruffleString LENGTH = constant("length");
public static final TruffleString MESSAGE = constant("message");
public static final TruffleString MODULE = constant("module");
public static final TruffleString NAME = constant("name");
public static final TruffleString NATIVE = constant("native");
public static final TruffleString NEG = constant("neg");
public static final TruffleString NEXT = constant("next");
public static final TruffleString NOW = constant("now");
public static final TruffleString NULL = constant("null");
public static final TruffleString UC_NUMBER = constant("Number");
public static final TruffleString OBJECT = constant("object");
public static final TruffleString PARSE = constant("parse");
public static final TruffleString POS = constant("pos");
public static final TruffleString PRIMITIVE_VALUE = constant("PrimitiveValue");
public static final TruffleString PROMISE = constant("promise");
public static final TruffleString RAW = constant("raw");
public static final TruffleString RAW_JSON = constant("rawJSON");
public static final TruffleString REJECT = constant("reject");
public static final TruffleString RESOLVE = constant("resolve");
public static final TruffleString RETURN = constant("return");
public static final TruffleString SCRIPT = constant("script");
public static final TruffleString SOURCE = constant("source");
public static final TruffleString STRING = constant("string");
public static final TruffleString UC_STRING = constant("String");
public static final TruffleString SUPER = constant("super");
public static final TruffleString SWITCH = constant("switch");
public static final TruffleString SYMBOL = constant("symbol");
public static final TruffleString UC_SYMBOL = constant("Symbol");
public static final TruffleString THEN = Strings.constant("then");
public static final TruffleString THIS = Strings.constant("this");
public static final TruffleString THROW = Strings.constant("throw");
public static final TruffleString TYPE = constant("type");
public static final TruffleString UNDEFINED = constant("undefined");
public static final TruffleString UNKNOWN = constant("unknown");
public static final TruffleString URL = constant("url");
public static final String VALUE_JLS = "value";
public static final TruffleString VALUE = constant(VALUE_JLS);
public static final TruffleString VALUES = constant("values");
public static final TruffleString WITH = constant("with");
/* method names */
public static final TruffleString ANYFUNC = constant("anyfunc");
public static final TruffleString AT = constant("at");
public static final TruffleString COPY_WITHIN = constant("copyWithin");
public static final TruffleString EVAL_FILE = constant("evalFile");
public static final TruffleString EXTERNREF = constant("externref");
public static final TruffleString FILL = constant("fill");
public static final TruffleString FIND = constant("find");
public static final TruffleString FIND_INDEX = constant("findIndex");
public static final TruffleString FIND_LAST = constant("findLast");
public static final TruffleString FIND_LAST_INDEX = constant("findLastIndex");
public static final TruffleString FLAT = constant("flat");
public static final TruffleString FLAT_MAP = constant("flatMap");
public static final TruffleString INCLUDES = constant("includes");
public static final TruffleString IS_VIEW = constant("isView");
public static final TruffleString PARSE_INT = Strings.constant("parseInt");
public static final TruffleString PARSE_FLOAT = Strings.constant("parseFloat");
public static final TruffleString SLICE = constant("slice");
public static final TruffleString STRING_MAX_LENGTH = constant("stringMaxLength");
public static final TruffleString TO_JSON = constant("toJSON");
public static final TruffleString TO_ISO_STRING = constant("toISOString");
public static final TruffleString TO_LOCALE_STRING = constant("toLocaleString");
public static final String TO_STRING_JLS = "toString";
public static final TruffleString TO_STRING = constant(TO_STRING_JLS);
public static final TruffleString TO_UTC_STRING = constant("toUTCString");
public static final TruffleString TO_GMT_STRING = constant("toGMTString");
public static final String VALUE_OF_JLS = "valueOf";
public static final TruffleString VALUE_OF = constant(VALUE_OF_JLS);
public static final TruffleString IMPORT_SCRIPT_ENGINE_GLOBAL_BINDINGS = constant("importScriptEngineGlobalBindings");
public static final TruffleString HAS_INSTANCE = constant("hasInstance");
public static final TruffleString IS_CONCAT_SPREADABLE = constant("isConcatSpreadable");
public static final TruffleString ITERATOR = constant("iterator");
public static final TruffleString ASYNC_ITERATOR = constant("asyncIterator");
public static final TruffleString MATCH = constant("match");
public static final TruffleString MATCH_ALL = constant("matchAll");
public static final TruffleString REPLACE = constant("replace");
public static final TruffleString SEARCH = constant("search");
public static final TruffleString SPECIES = constant("species");
public static final TruffleString SPLIT = constant("split");
public static final TruffleString TO_STRING_TAG = constant("toStringTag");
public static final TruffleString TO_PRIMITIVE = constant("toPrimitive");
public static final TruffleString UNSCOPABLES = constant("unscopables");
public static final TruffleString TO_REVERSED = constant("toReversed");
public static final TruffleString TO_SORTED = constant("toSorted");
public static final TruffleString TO_SPLICED = constant("toSpliced");
public static final TruffleString UC_ARRAY = constant("Array");
public static final TruffleString UC_OBJECT = constant("Object");
public static final TruffleString UC_MODULE = constant("Module");
public static final TruffleString CAPS_ID = constant("ID");
public static final TruffleString CAPS_PWD = constant("PWD");
/* globals */
public static final TruffleString DOLLAR_ENV = constant("$ENV");
/* hint words */
public static final TruffleString HINT_STRING = STRING;
public static final TruffleString HINT_NUMBER = constant("number");
public static final TruffleString HINT_DEFAULT = DEFAULT;
/* html */
public static final TruffleString HTML_QUOT = constant(""");
/* hex */
public static final TruffleString UC_0X = constant("0X");
public static final TruffleString LC_0X = constant("0x");
public static final TruffleString PARENS_THIS = constant("(this)");
public static final TruffleString SYMBOL_PAREN_OPEN = constant("Symbol(");
/* Boolean */
public static final TruffleString LC_BOOLEAN = constant("boolean");
public static final TruffleString UC_BOOLEAN = constant("Boolean");
public static final TruffleString BOOLEAN_PROTOTYPE = constant("Boolean.prototype");
public static final TruffleString TRUE = constant("true");
public static final TruffleString FALSE = constant("false");
/* get / set */
public static final TruffleString GET = constant("get");
public static final TruffleString SET = constant("set");
public static final TruffleString GET_SPC = constant("get ");
public static final TruffleString SET_SPC = constant("set ");
public static final TruffleString IS = constant("is");
/* Letters */
public static final TruffleString G = constant("g");
public static final TruffleString N = constant("n");
public static final TruffleString NFC = constant("NFC");
public static final TruffleString NFD = constant("NFD");
public static final TruffleString NFKC = constant("NFKC");
public static final TruffleString NFKD = constant("NFKD");
public static final TruffleString MS = constant("ms");
public static final TruffleString Y = constant("y");
public static final TruffleString OK = constant("ok");
public static final TruffleString NOT_EQUAL = constant("not-equal");
public static final TruffleString TIMED_OUT = constant("timed-out");
/* snippets */
public static final TruffleString ARRAY_PAREN_OPEN = constant("Array(");
public static final TruffleString BOUND_SPC = constant("bound ");
public static final TruffleString BRACKET_OBJECT_SPC = constant("[object ");
public static final TruffleString BRACKET_BOOLEAN_SPC = constant("[Boolean ");
public static final TruffleString BRACKET_DATE_SPC = constant("[Date ");
public static final TruffleString COMMA_ANONYMOUS_BRACKETS = constant(", ");
public static final TruffleString FUNCTION_NATIVE_CODE_BODY = constant("() { [native code] }");
public static final TruffleString FUNCTION_BODY_DOTS = constant("() {...}");
public static final TruffleString FUNCTION_BODY_OMITTED = constant("......\n}");
public static final TruffleString FUNCTION_SPC = constant("function ");
public static final TruffleString FUNCTION_NATIVE_CODE = constant("function () { [native code] }");
public static final TruffleString PROXY_PAREN = constant("Proxy(");
public static final TruffleString ASYNC_SPC = constant("async ");
public static final TruffleString ASYNC_PROMISE_ALL_BEGIN = constant("async Promise.all (index ");
public static final TruffleString SPACE_PAREN_OPEN = constant(" (");
public static final TruffleString NEW_SPACE = constant("new ");
/* escaped chars */
public static final TruffleString BACKSLASH_U = constant("\\u");
public static final TruffleString BACKSLASH_U00 = constant("\\u00");
public static final TruffleString BACKSLASH_UD = constant("\\ud");
public static final TruffleString BACKSLASH_B = constant("\\b");
public static final TruffleString BACKSLASH_F = constant("\\f");
public static final TruffleString BACKSLASH_N = constant("\\n");
public static final TruffleString BACKSLASH_R = constant("\\r");
public static final TruffleString BACKSLASH_T = constant("\\t");
public static final TruffleString BACKSLASH_BACKSLASH = constant("\\\\");
public static final TruffleString BACKSLASH_DOUBLE_QUOTE = constant("\\\"");
/* WASM */
public static final TruffleString I_64 = constant("i64");
public static final TruffleString I_32 = constant("i32");
public static final TruffleString F_32 = constant("f32");
public static final TruffleString F_64 = constant("f64");
public static final TruffleString V_128 = constant("v128");
/* JSProxy */
public static final TruffleString PROXY = constant("proxy");
public static final TruffleString REVOKE = constant("revoke");
public static final TruffleString REVOCABLE = constant("revocable");
/* GlobalBuiltins */
public static final TruffleString EVAL_OBJ_FILE_NAME = NAME;
public static final TruffleString EVAL_OBJ_SOURCE = SCRIPT;
/* CommonJS */
public static final TruffleString FILENAME_VAR_NAME = constant("__filename");
public static final TruffleString DIRNAME_VAR_NAME = constant("__dirname");
public static final TruffleString MODULE_PROPERTY_NAME = MODULE;
public static final TruffleString EXPORTS_PROPERTY_NAME = constant("exports");
public static final TruffleString REQUIRE_PROPERTY_NAME = constant("require");
public static final TruffleString RESOLVE_PROPERTY_NAME = RESOLVE;
public static final TruffleString LOADED_PROPERTY_NAME = constant("loaded");
public static final TruffleString FILENAME_PROPERTY_NAME = constant("filename");
public static final TruffleString ID_PROPERTY_NAME = constant("id");
public static final TruffleString ENV_PROPERTY_NAME = constant("env");
public static final TruffleString PACKAGE_JSON_MAIN_PROPERTY_NAME = constant("main");
public static final TruffleString PACKAGE_JSON_TYPE_PROPERTY_NAME = TYPE;
/* Test262 */
public static final TruffleString CREATE_REALM = constant("createRealm");
public static final TruffleString DETACH_ARRAY_BUFFER = constant("detachArrayBuffer");
public static final TruffleString EVAL_SCRIPT = constant("evalScript");
public static final TruffleString GC = constant("gc");
public static final TruffleString AGENT = constant("agent");
public static final TruffleString START = constant("start");
public static final TruffleString BROADCAST = constant("broadcast");
public static final TruffleString GET_REPORT = constant("getReport");
public static final TruffleString SLEEP = constant("sleep");
public static final TruffleString MONOTONIC_NOW = constant("monotonicNow");
public static final TruffleString RECEIVE_BROADCAST = constant("receiveBroadcast");
public static final TruffleString REPORT = constant("report");
public static final TruffleString LEAVING = constant("leaving");
public static final TruffleString AGENT_START = constant("agentStart");
public static final TruffleString AGENT_BROADCAST = constant("agentBroadcast");
public static final TruffleString AGENT_GET_REPORT = constant("agentGetReport");
public static final TruffleString AGENT_SLEEP = constant("agentSleep");
public static final TruffleString AGENT_RECEIVE_BROADCAST = constant("agentReceiveBroadcast");
public static final TruffleString AGENT_REPORT = constant("agentReport");
public static final TruffleString AGENT_LEAVING = constant("agentLeaving");
/* globals */
public static final TruffleString LOAD = constant("load");
public static final TruffleString LOAD_WITH_NEW_GLOBAL = constant("loadWithNewGlobal");
public static final TruffleString GLOBAL_THIS = constant("globalThis");
public static final TruffleString EXIT = constant("exit");
public static final TruffleString QUIT = constant("quit");
public static final TruffleString PARSE_TO_JSON = constant("parseToJSON");
public static final TruffleString PRINT = constant("print");
public static final TruffleString PRINT_ERR = constant("printErr");
public static final TruffleString GRAAL = constant("Graal");
public static final TruffleString LANGUAGE = constant("language");
public static final TruffleString VERSION_GRAAL_VM = constant("versionGraalVM");
public static final TruffleString VERSION_ECMA_SCRIPT = constant("versionECMAScript");
public static final TruffleString IS_GRAAL_RUNTIME = constant("isGraalRuntime");
public static final TruffleString SET_UNHANDLED_PROMISE_REJECTION_HANDLER = constant("setUnhandledPromiseRejectionHandler");
public static final TruffleString UC_PACKAGES = constant("Packages");
public static final TruffleString JAVA = constant("java");
public static final TruffleString JAVAFX = constant("javafx");
public static final TruffleString JAVAX = constant("javax");
public static final TruffleString COM = constant("com");
public static final TruffleString ORG = constant("org");
public static final TruffleString EDU = constant("edu");
public static final TruffleString CONSOLE = constant("console");
public static final TruffleString EXEC = constant("exec");
public static final TruffleString READ_FULLY = constant("readFully");
public static final TruffleString READ_LINE = constant("readLine");
public static final TruffleString $_EXEC = constant("$EXEC");
public static final TruffleString $_EXIT = constant("$EXIT");
public static final TruffleString $_OUT = constant("$OUT");
public static final TruffleString $_ERR = constant("$ERR");
public static final TruffleString GLOBAL__LINE__ = constant("__LINE__");
public static final TruffleString GLOBAL__FILE__ = constant("__FILE__");
public static final TruffleString GLOBAL__DIR__ = constant("__DIR__");
public static final TruffleString _TIMEZONE = constant("_timezone");
public static final TruffleString _SCRIPTING = constant("_scripting");
public static final TruffleString _COMPILE_ONLY = constant("_compile_only");
public static final TruffleString $_OPTIONS = constant("$OPTIONS");
public static final TruffleString $_ARG = constant("$ARG");
public static final TruffleString MEMORY = constant("memory");
public static final TruffleString TABLE = constant("table");
public static final TruffleString STATUS = constant("status");
public static final TruffleString REASON = constant("reason");
public static final TruffleString DOT_PROTOTYPE = constant(".prototype");
public static final TruffleString EVAL = constant("eval");
public static final TruffleString A = constant("a");
public static final TruffleString BIG = constant("big");
public static final TruffleString BLINK = constant("blink");
public static final TruffleString B = constant("b");
public static final TruffleString TT = constant("tt");
public static final TruffleString FONT = constant("font");
public static final TruffleString COLOR = constant("color");
public static final TruffleString I = constant("i");
public static final TruffleString HREF = constant("href");
public static final TruffleString SIZE = constant("size");
public static final TruffleString SMALL = constant("small");
public static final TruffleString STRIKE = constant("strike");
public static final TruffleString SUB = constant("sub");
public static final TruffleString SUP = constant("sup");
public static final TruffleString TO_STRING_VALUE_NULL = constant("[object Null]");
public static final TruffleString TO_STRING_VALUE_UNDEFINED = constant("[object Undefined]");
public static final TruffleString TO_STRING_VALUE_ARRAY = constant("[object Array]");
public static final TruffleString TO_STRING_VALUE_FUNCTION = constant("[object Function]");
public static final TruffleString TO_STRING_VALUE_DATE = constant("[object Date]");
public static final TruffleString TO_STRING_VALUE_OBJECT = constant("[object Object]");
public static final TruffleString FULFILLED = constant("fulfilled");
public static final TruffleString REJECTED = constant("rejected");
public static final TruffleString CAPTURE_STACK_TRACE = constant("captureStackTrace");
public static final TruffleString JAVA_CLASS_BRACKET = constant("JavaClass[");
public static final TruffleString JAVA_OBJECT_BRACKET = constant("JavaObject[");
public static final TruffleString RESOLVED = constant("resolved");
public static final TruffleString PENDING = constant("pending");
public static final TruffleString PROMISE_STATUS = constant("PromiseStatus");
public static final TruffleString PROMISE_VALUE = constant("PromiseValue");
public static final TruffleString TEST = constant("test");
public static final TruffleString UNKNOWN_FILENAME = constant("");
public static final TruffleString DYNAMIC_FUNCTION_NAME = constant("anonymous");
public static final TruffleString ASYNC = constant("async");
public static final TruffleString UC_M = constant("M");
public static final TruffleString UC_M0 = constant("M0");
public static final TruffleString UC_Z = constant("Z");
public static final TruffleString Z = constant("z");
public static final TruffleString UC_ETC = constant("Etc");
public static final TruffleString UNICODE_MINUS_SIGN = constant("\u2212");
public static final TruffleString MUTABLE = constant("mutable");
public static final TruffleString ELEMENT = constant("element");
public static final TruffleString INITIAL = constant("initial");
public static final TruffleString MAXIMUM = constant("maximum");
public static final TruffleString SHARED = constant("shared");
public static final TruffleString STATIC = constant("static");
public static final TruffleString PRIVATE = constant("private");
public static final TruffleString INIT = constant("init");
/* Intl and Temporal: common string constants. */
public static final TruffleString CALENDAR = Strings.constant("calendar");
public static final TruffleString ERA = Strings.constant("era");
public static final TruffleString YEAR = Strings.constant("year");
public static final TruffleString MONTH = Strings.constant("month");
public static final TruffleString DAY = Strings.constant("day");
public static final TruffleString HOUR = Strings.constant("hour");
public static final TruffleString MINUTE = Strings.constant("minute");
public static final TruffleString SECOND = Strings.constant("second");
public static final TruffleString UNIT = Strings.constant("unit");
public static final TruffleString FRACTIONAL_SECOND_DIGITS = Strings.constant("fractionalSecondDigits");
public static final TruffleString ROUNDING_INCREMENT = Strings.constant("roundingIncrement");
public static final TruffleString ROUNDING_MODE = Strings.constant("roundingMode");
public static final TruffleString TIME_ZONE = Strings.constant("timeZone");
public static final TruffleString TIME_ZONE_NAME = Strings.constant("timeZoneName");
/* end of constants */
public static boolean isTString(Object string) {
return string instanceof TruffleString;
}
public static TruffleString constant(String s) {
TruffleString ret = fromJavaString(s);
ret.hashCodeUncached(TruffleString.Encoding.UTF_16);
return ret;
}
public static TruffleString fromJavaString(String str) {
return fromJavaString(TruffleString.FromJavaStringNode.getUncached(), str);
}
public static TruffleString fromJavaString(TruffleString.FromJavaStringNode node, String str) {
return node.execute(str, TruffleString.Encoding.UTF_16);
}
public static TruffleString fromLong(long longValue) {
return fromLong(TruffleString.FromLongNode.getUncached(), longValue);
}
public static TruffleString fromLong(TruffleString.FromLongNode node, long longValue) {
return node.execute(longValue, TruffleString.Encoding.UTF_16, true);
}
public static TruffleString[] fromJavaStringArray(String... strings) {
TruffleString[] ret = new TruffleString[strings.length];
for (int i = 0; i < strings.length; i++) {
ret[i] = fromJavaString(strings[i]);
}
return ret;
}
public static int length(TruffleString s) {
return s.byteLength(TruffleString.Encoding.UTF_16) >> 1;
}
public static boolean isEmpty(TruffleString s) {
return length(s) == 0;
}
public static char charAt(TruffleString s, int i) {
return charAt(TruffleString.ReadCharUTF16Node.getUncached(), s, i);
}
public static char charAt(TruffleString.ReadCharUTF16Node readRawNode, TruffleString s, int i) {
return readRawNode.execute(s, i);
}
public static int codePointAt(TruffleString.CodePointAtByteIndexNode node, TruffleString s, int i) {
return node.execute(s, i << 1, TruffleString.Encoding.UTF_16);
}
public static TruffleString concat(TruffleString s1, TruffleString s2) {
return concat(TruffleString.ConcatNode.getUncached(), s1, s2);
}
public static TruffleString concat(TruffleString.ConcatNode node, TruffleString s1, TruffleString s2) {
return node.execute(s1, s2, TruffleString.Encoding.UTF_16, JSConfig.LazyStrings);
}
public static TruffleString concatAll(TruffleString s, TruffleString... concat) {
int len = length(s);
for (TruffleString c : concat) {
len += length(c);
}
var sb = builderCreate(len);
TruffleStringBuilder.AppendStringNode.getUncached().execute(sb, s);
for (TruffleString c : concat) {
TruffleStringBuilder.AppendStringNode.getUncached().execute(sb, c);
}
return TruffleStringBuilder.ToStringNode.getUncached().execute(sb);
}
public static TruffleString lazySubstring(TruffleString s, int fromIndex) {
return lazySubstring(s, fromIndex, length(s) - fromIndex);
}
public static TruffleString lazySubstring(TruffleString s, int fromIndex, int length) {
return lazySubstring(TruffleString.SubstringByteIndexNode.getUncached(), s, fromIndex, length);
}
/**
* Create a lazy substring, unconditionally. Use this method instead of
* {@link #substring(JSContext, TruffleString, int, int)} when the resulting string is known to
* never escape into user code, or the amount of memory leaked is constant and very small.
*/
public static TruffleString lazySubstring(TruffleString.SubstringByteIndexNode node, TruffleString s, int fromIndex, int length) {
return substring(true, node, s, fromIndex, length);
}
public static TruffleString substring(JSContext context, TruffleString s, int fromIndex) {
return substring(context, s, fromIndex, length(s) - fromIndex);
}
public static TruffleString substring(JSContext context, TruffleString.SubstringByteIndexNode node, TruffleString s, int fromIndex) {
return substring(context, node, s, fromIndex, length(s) - fromIndex);
}
public static TruffleString substring(JSContext context, TruffleString s, int fromIndex, int length) {
return substring(context, TruffleString.SubstringByteIndexNode.getUncached(), s, fromIndex, length);
}
public static TruffleString substring(JSContext context, TruffleString.SubstringByteIndexNode node, TruffleString s, int fromIndex, int length) {
return substring(context.getLanguageOptions().stringLazySubstrings(), node, s, fromIndex, length);
}
/**
* Create a substring. If {@code lazy} is {@code true}, the internal array of string {@code s}
* is re-used, without copying. This is a memory leak, since the resulting string's internal
* array is never trimmed.
*/
public static TruffleString substring(boolean lazy, TruffleString.SubstringByteIndexNode node, TruffleString s, int fromIndex, int length) {
return length == 0 ? Strings.EMPTY_STRING : node.execute(s, fromIndex << 1, length << 1, TruffleString.Encoding.UTF_16, lazy);
}
public static boolean startsWith(TruffleString s1, TruffleString s2) {
return startsWith(s1, s2, 0);
}
public static boolean startsWith(TruffleString s1, TruffleString s2, int startPos) {
return startsWith(TruffleString.RegionEqualByteIndexNode.getUncached(), s1, s2, startPos);
}
public static boolean startsWith(TruffleString.RegionEqualByteIndexNode regionEqualsNode, TruffleString s1, TruffleString s2) {
return startsWith(regionEqualsNode, s1, s2, 0);
}
public static boolean startsWith(TruffleString.RegionEqualByteIndexNode regionEqualsNode, TruffleString s1, TruffleString s2, int startPos) {
return length(s1) - startPos >= length(s2) && regionEquals(regionEqualsNode, s1, startPos, s2, 0, length(s2));
}
public static boolean regionEquals(TruffleString s1, int offset1, TruffleString s2, int offset2, int length) {
return regionEquals(TruffleString.RegionEqualByteIndexNode.getUncached(), s1, offset1, s2, offset2, length);
}
public static boolean regionEquals(TruffleString.RegionEqualByteIndexNode regionEqualsNode, TruffleString s1, int offset1, TruffleString s2, int offset2, int length) {
return regionEqualsNode.execute(s1, offset1 << 1, s2, offset2 << 1, length << 1, TruffleString.Encoding.UTF_16);
}
public static boolean endsWith(TruffleString s1, TruffleString s2) {
return endsWith(TruffleString.RegionEqualByteIndexNode.getUncached(), s1, s2);
}
public static boolean endsWith(TruffleString.RegionEqualByteIndexNode regionEqualsNode, TruffleString s1, TruffleString s2) {
return length(s1) >= length(s2) && regionEquals(regionEqualsNode, s1, length(s1) - length(s2), s2, 0, length(s2));
}
public static boolean contains(TruffleString s, char c) {
return indexOf(s, c) >= 0;
}
public static int indexOf(TruffleString string, char c) {
return string.charIndexOfAnyCharUTF16Uncached(0, length(string), new char[]{c});
}
public static int indexOfAny(TruffleString.CharIndexOfAnyCharUTF16Node node, TruffleString s, char... chars) {
return node.execute(s, 0, length(s), chars);
}
public static int indexOf(TruffleString.ByteIndexOfCodePointNode node, TruffleString s, int codepoint) {
return indexOf(node, s, codepoint, 0);
}
public static int indexOf(TruffleString s, int codepoint, int fromIndex) {
return indexOf(TruffleString.ByteIndexOfCodePointNode.getUncached(), s, codepoint, fromIndex);
}
public static int indexOf(TruffleString.ByteIndexOfCodePointNode node, TruffleString s, int codepoint, int fromIndex) {
if (fromIndex >= length(s)) {
return -1;
}
return node.execute(s, codepoint, fromIndex << 1, length(s) << 1, TruffleString.Encoding.UTF_16) >> 1;
}
public static int indexOf(TruffleString s1, TruffleString s2) {
return indexOf(s1, s2, 0);
}
public static int indexOf(TruffleString.ByteIndexOfStringNode node, TruffleString s1, TruffleString s2) {
return indexOf(node, s1, s2, 0);
}
public static int indexOf(TruffleString s1, TruffleString s2, int fromIndex) {
return indexOf(TruffleString.ByteIndexOfStringNode.getUncached(), s1, s2, fromIndex);
}
public static int indexOf(TruffleString s1, TruffleString s2, int fromIndex, int toIndex) {
return indexOf(TruffleString.ByteIndexOfStringNode.getUncached(), s1, s2, fromIndex, toIndex);
}
public static int indexOf(TruffleString.ByteIndexOfStringNode node, TruffleString s1, TruffleString s2, int fromIndex) {
return indexOf(node, s1, s2, fromIndex, length(s1));
}
public static int indexOf(TruffleString.ByteIndexOfStringNode node, TruffleString s1, TruffleString s2, int fromIndex, int toIndex) {
int fromIndexPos = Math.max(fromIndex, 0);
if (length(s2) == 0) {
return fromIndexPos;
}
return length(s1) - fromIndexPos >= length(s2) ? node.execute(s1, s2, fromIndexPos << 1, toIndex << 1, TruffleString.Encoding.UTF_16) >> 1 : -1;
}
public static int lastIndexOf(TruffleString.LastByteIndexOfStringNode lastIndexOfNode, TruffleString s1, TruffleString s2, int fromIndex) {
return lastIndexOfNode.execute(s1, s2, Math.min(fromIndex + length(s2), length(s1)) << 1, 0, TruffleString.Encoding.UTF_16) >> 1;
}
public static int lastIndexOf(TruffleString s, int codePoint) {
return lastIndexOf(TruffleString.LastByteIndexOfCodePointNode.getUncached(), s, codePoint);
}
public static int lastIndexOf(TruffleString.LastByteIndexOfCodePointNode node, TruffleString s, int codePoint) {
return node.execute(s, codePoint, length(s) << 1, 0, TruffleString.Encoding.UTF_16) >> 1;
}
public static boolean equals(TruffleString s1, TruffleString s2) {
return equals(TruffleString.EqualNode.getUncached(), s1, s2);
}
public static boolean equals(TruffleString.EqualNode node, TruffleString s1, TruffleString s2) {
return node.execute(s1, s2, TruffleString.Encoding.UTF_16);
}
public static TruffleString replace(TruffleString s, TruffleString search, TruffleString replace) {
int pos = indexOf(s, search);
if (pos < 0) {
return s;
}
if (length(s) == length(search)) {
return replace;
}
var sb = builderCreate(length(s));
int lastEndPos = 0;
do {
builderAppend(sb, s, lastEndPos, pos);
builderAppend(sb, replace);
lastEndPos = pos + length(search);
pos = indexOf(s, search, lastEndPos);
} while (pos >= 0);
builderAppend(sb, s, lastEndPos, length(s));
return builderToString(sb);
}
public static int compareTo(TruffleString a, TruffleString b) {
return TruffleString.CompareCharsUTF16Node.getUncached().execute(a, b);
}
public static int compareTo(TruffleString.CompareCharsUTF16Node node, TruffleString a, TruffleString b) {
return node.execute(a, b);
}
public static String toJavaString(TruffleString s) {
return toJavaString(TruffleString.ToJavaStringNode.getUncached(), s);
}
public static String toJavaString(TruffleString.ToJavaStringNode node, TruffleString s) {
return node.execute(s);
}
public static TruffleString toUpperCase(TruffleString s, Locale locale) {
return fromJavaString(javaStringToUpperCase(toJavaString(s), locale));
}
@TruffleBoundary
public static String javaStringToLowerCase(String s, Locale locale) {
return s.toLowerCase(locale);
}
@TruffleBoundary
public static String javaStringToUpperCase(String s, Locale locale) {
return s.toUpperCase(locale);
}
public static TruffleString lazyTrim(TruffleString s) {
int end = length(s);
int start = 0;
while ((start < end) && (charAt(s, start) <= ' ')) {
start++;
}
while ((start < end) && (charAt(s, end - 1) <= ' ')) {
end--;
}
return ((start > 0) || (end < length(s))) ? lazySubstring(s, start, end - start) : s;
}
public static long parseLong(TruffleString s) throws TruffleString.NumberFormatException {
return parseLong(s, 10);
}
public static long parseLong(TruffleString s, int radix) throws TruffleString.NumberFormatException {
return parseLong(TruffleString.ParseLongNode.getUncached(), s, radix);
}
public static long parseLong(TruffleString.ParseLongNode node, TruffleString s, int radix) throws TruffleString.NumberFormatException {
return node.execute(s, radix);
}
public static double parseDouble(TruffleString s) throws TruffleString.NumberFormatException {
return parseDouble(TruffleString.ParseDoubleNode.getUncached(), s);
}
public static double parseDouble(TruffleString.ParseDoubleNode node, TruffleString s) throws TruffleString.NumberFormatException {
return node.execute(s);
}
public static TruffleString fromCodePoint(TruffleString.FromCodePointNode node, int c) {
assert c >= 0;
return node.execute(c, TruffleString.Encoding.UTF_16, true);
}
public static TruffleString fromBoolean(boolean b) {
return b ? TRUE : FALSE;
}
public static TruffleString fromInt(int intValue) {
return fromLong(intValue);
}
public static TruffleString fromDouble(double d) {
return TruffleString.FromJavaStringNode.getUncached().execute(doubleToJavaString(d), TruffleString.Encoding.UTF_16);
}
@TruffleBoundary
private static String doubleToJavaString(double d) {
return String.valueOf(d);
}
public static TruffleString fromNumber(Number number) {
if (number instanceof Integer) {
return fromInt(number.intValue());
}
if (number instanceof Long) {
return fromLong(number.longValue());
}
if (number instanceof Double) {
return fromDouble(number.doubleValue());
}
throw CompilerDirectives.shouldNotReachHere();
}
public static TruffleString fromBigInt(BigInt bi) {
return fromJavaString(bi.toString());
}
public static TruffleString fromBigInt(BigInt bi, int radix) {
return fromJavaString(bi.toString(radix));
}
public static TruffleString fromObject(Object o) {
return fromJavaString(objectToJavaString(o));
}
@TruffleBoundary
private static String objectToJavaString(Object o) {
return String.valueOf(o);
}
public static TruffleString fromCharArray(TruffleString.FromCharArrayUTF16Node node, char[] chars) {
return fromCharArray(node, chars, 0, chars.length);
}
public static TruffleString fromCharArray(char[] chars, int fromIndex, int length) {
return fromCharArray(TruffleString.FromCharArrayUTF16Node.getUncached(), chars, fromIndex, length);
}
public static TruffleString fromCharArray(TruffleString.FromCharArrayUTF16Node node, char[] chars, int fromIndex, int length) {
return node.execute(chars, fromIndex, length);
}
public static TruffleString flatten(TruffleString.MaterializeNode materializeNode, TruffleString value) {
materializeNode.execute(value, TruffleString.Encoding.UTF_16);
return value;
}
public static String interopAsString(Object key) throws UnsupportedMessageException {
return interopAsString(InteropLibrary.getUncached(), key);
}
public static String interopAsString(InteropLibrary stringInterop, Object key) throws UnsupportedMessageException {
return key instanceof String ? (String) key : stringInterop.asString(key);
}
public static TruffleString interopAsTruffleString(Object key) {
return interopAsTruffleString(key, InteropLibrary.getUncached(), TruffleString.SwitchEncodingNode.getUncached());
}
public static TruffleString interopAsTruffleString(Object key, InteropLibrary stringInterop) {
return interopAsTruffleString(key, stringInterop, TruffleString.SwitchEncodingNode.getUncached());
}
public static TruffleString interopAsTruffleString(Object key, InteropLibrary stringInterop, TruffleString.SwitchEncodingNode switchEncodingNode) {
assert stringInterop.isString(key) : key;
TruffleString truffleString;
if (key instanceof TruffleString) {
truffleString = (TruffleString) key;
} else {
try {
truffleString = stringInterop.asTruffleString(key);
} catch (UnsupportedMessageException e) {
throw Errors.createTypeErrorInteropException(key, e, "asTruffleString", stringInterop);
}
}
return switchEncodingNode.execute(truffleString, TruffleString.Encoding.UTF_16);
}
public static BigInt parseBigInt(TruffleString s) {
return BigInt.valueOf(toJavaString(s));
}
public static BigInteger parseBigInteger(TruffleString s, int radix) {
return new BigInteger(toJavaString(s), radix);
}
public static TruffleStringBuilderUTF16 builderCreate() {
return TruffleStringBuilder.createUTF16();
}
public static TruffleStringBuilderUTF16 builderCreate(int capacity) {
return TruffleStringBuilder.createUTF16(capacity);
}
public static void builderAppend(TruffleStringBuilderUTF16 sb, char chr) {
TruffleStringBuilder.AppendCharUTF16Node.getUncached().execute(sb, chr);
}
public static void builderAppend(TruffleStringBuilder.AppendCharUTF16Node node, TruffleStringBuilderUTF16 sb, char chr) {
node.execute(sb, chr);
}
public static void builderAppend(TruffleStringBuilderUTF16 sb, int i) {
TruffleStringBuilder.AppendIntNumberNode.getUncached().execute(sb, i);
}
public static void builderAppend(TruffleStringBuilder.AppendIntNumberNode node, TruffleStringBuilderUTF16 sb, int i) {
node.execute(sb, i);
}
public static void builderAppend(TruffleStringBuilderUTF16 sb, long i) {
TruffleStringBuilder.AppendLongNumberNode.getUncached().execute(sb, i);
}
public static void builderAppend(TruffleStringBuilder.AppendLongNumberNode node, TruffleStringBuilderUTF16 sb, long i) {
node.execute(sb, i);
}
public static void builderAppend(TruffleStringBuilderUTF16 sb, String str) {
TruffleStringBuilder.AppendJavaStringUTF16Node.getUncached().execute(sb, str, 0, str.length());
}
public static void builderAppend(TruffleStringBuilderUTF16 sb, TruffleString str) {
builderAppendLen(sb, str, 0, length(str));
}
public static void builderAppend(TruffleStringBuilder.AppendStringNode node, TruffleStringBuilderUTF16 sb, TruffleString str) {
node.execute(sb, str);
}
public static void builderAppend(TruffleStringBuilderUTF16 sb, TruffleString str, int start, int end) {
builderAppendLen(sb, str, start, end - start);
}
public static void builderAppend(TruffleStringBuilder.AppendSubstringByteIndexNode node, TruffleStringBuilderUTF16 sb, TruffleString str, int start, int end) {
builderAppendLen(node, sb, str, start, end - start);
}
public static void builderAppendLen(TruffleStringBuilderUTF16 sb, TruffleString str, int start, int len) {
builderAppendLen(TruffleStringBuilder.AppendSubstringByteIndexNode.getUncached(), sb, str, start, len);
}
public static void builderAppendLen(TruffleStringBuilder.AppendSubstringByteIndexNode node, TruffleStringBuilderUTF16 sb, TruffleString str, int start, int len) {
node.execute(sb, str, start << 1, len << 1);
}
public static TruffleString builderToString(TruffleStringBuilderUTF16 sb) {
return builderToString(TruffleStringBuilder.ToStringNode.getUncached(), sb);
}
public static TruffleString builderToString(TruffleStringBuilder.ToStringNode node, TruffleStringBuilderUTF16 sb) {
return node.execute(sb);
}
public static String builderToJavaString(TruffleStringBuilderUTF16 sb) {
return toJavaString(builderToString(sb));
}
public static int builderLength(TruffleStringBuilderUTF16 sb) {
return sb.byteLength() >> 1;
}
public static TruffleString[] convertJavaStringArray(String[] array) {
TruffleString[] ret = new TruffleString[array.length];
for (int i = 0; i < array.length; i++) {
ret[i] = fromJavaString(array[i]);
}
return ret;
}
public static TruffleString addBrackets(TruffleString str) {
return Strings.concatAll(Strings.BRACKET_OPEN, str, Strings.BRACKET_CLOSE);
}
public static TruffleString format(String formatString, Object... args) {
return fromJavaString(String.format(formatString, args));
}
@TruffleBoundary
public static TruffleString[] split(JSContext context, TruffleString str, TruffleString delimiter) {
if (isEmpty(str)) {
return new TruffleString[0];
}
int pos = indexOf(str, delimiter);
if (pos < 0) {
return new TruffleString[]{str};
}
ArrayList ret = new ArrayList<>();
int lastEnd = 0;
do {
ret.add(substring(context, str, lastEnd, pos - lastEnd));
lastEnd = pos + length(delimiter);
pos = indexOf(str, delimiter, lastEnd);
} while (pos >= 0);
ret.add(substring(context, str, lastEnd, length(str) - lastEnd));
return ret.toArray(new TruffleString[0]);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy