| Index: sdk/lib/utf/utf_core.dart
|
| diff --git a/sdk/lib/utf/utf_core.dart b/sdk/lib/utf/utf_core.dart
|
| index f22290bf23e3b7c8f19c25dbd746b2f5575bcdce..a1cedcece985c193b05a446ef78147a3bfc7d212 100644
|
| --- a/sdk/lib/utf/utf_core.dart
|
| +++ b/sdk/lib/utf/utf_core.dart
|
| @@ -2,6 +2,48 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| +// TODO(jmesserly): would be nice to have this on String (dartbug.com/6501).
|
| +/**
|
| + * Provide a list of Unicode codepoints for a given string.
|
| + */
|
| +List<int> stringToCodepoints(String str) {
|
| + // Note: str.charCodes gives us 16-bit code units on all Dart implementations.
|
| + // So we need to convert. The same is not true of "new String.fromCharCodes",
|
| + // which accepts code points on the VM but not dart2js (dartbug.com/1357).
|
| + return _utf16CodeUnitsToCodepoints(str.charCodes);
|
| +}
|
| +
|
| +/**
|
| + * Generate a string from the provided Unicode codepoints.
|
| + */
|
| +String codepointsToString(List<int> codepoints) {
|
| + // TODO _is16BitCodeUnit() is used to work around a bug with dart2js
|
| + // (http://code.google.com/p/dart/issues/detail?id=1357). Consider
|
| + // removing after this issue is resolved.
|
| + if (_is16BitCodeUnit()) {
|
| + return new String.fromCharCodes(
|
| + _codepointsToUtf16CodeUnits(codepoints));
|
| + } else {
|
| + return new String.fromCharCodes(codepoints);
|
| + }
|
| +}
|
| +
|
| +/*
|
| + * Test for presence of bug related to the use of UTF-16 code units for
|
| + * Dart compiled to JS.
|
| + */
|
| +bool _test16BitCodeUnit = null;
|
| +// TODO _is16BitCodeUnit() is used to work around a bug with dart2js
|
| +// (http://code.google.com/p/dart/issues/detail?id=1357). Consider
|
| +// removing after this issue is resolved.
|
| +bool _is16BitCodeUnit() {
|
| + if (_test16BitCodeUnit == null) {
|
| + _test16BitCodeUnit = (new String.fromCharCodes([0x1D11E])) ==
|
| + (new String.fromCharCodes([0xD11E]));
|
| + }
|
| + return _test16BitCodeUnit;
|
| +}
|
| +
|
| /**
|
| * Invalid codepoints or encodings may be substituted with the value U+fffd.
|
| */
|
|
|