Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(576)

Unified Diff: lib/runtime/dart_sdk.js

Issue 1950133003: Update String methods. (Closed) Base URL: https://github.com/dart-lang/dev_compiler@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « no previous file | tool/input_sdk/lib/core/string.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart_sdk.js
diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js
index 30a293d654be97f761c31299e974d07cb1132d8c..41e14585e9f312af0cc6b10bbf1206de13a79f1c 100644
--- a/lib/runtime/dart_sdk.js
+++ b/lib/runtime/dart_sdk.js
@@ -3112,7 +3112,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
'replaceAllMapped',
'splitMapJoin',
'replaceFirst',
+ 'replaceFirstMapped',
'split',
+ 'replaceRange',
'startsWith',
'substring',
'toLowerCase',
@@ -3142,9 +3144,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
super.Interceptor();
}
[dartx.codeUnitAt](index) {
- if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index));
- if (dart.notNull(index) < 0) dart.throw(new core.RangeError.value(index));
- if (dart.notNull(index) >= dart.notNull(this[dartx.length])) dart.throw(new core.RangeError.value(index));
+ if (!(typeof index == 'number')) dart.throw(_js_helper.diagnoseIndexError(this, index));
+ if (dart.notNull(index) < 0) dart.throw(_js_helper.diagnoseIndexError(this, index));
+ if (dart.notNull(index) >= dart.notNull(this[dartx.length])) dart.throw(_js_helper.diagnoseIndexError(this, index));
return this.charCodeAt(index);
}
[dartx.allMatches](string, start) {
@@ -3170,7 +3172,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
return new _js_helper.StringMatch(start, string, this);
}
[dartx['+']](other) {
- if (!(typeof other == 'string')) dart.throw(new core.ArgumentError(other));
+ if (!(typeof other == 'string')) dart.throw(new core.ArgumentError.value(other));
return this + other;
}
[dartx.endsWith](other) {
@@ -3181,7 +3183,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
[dartx.replaceAll](from, to) {
_js_helper.checkString(to);
- return dart.as(_js_helper.stringReplaceAllUnchecked(this, from, to), core.String);
+ return _js_helper.stringReplaceAllUnchecked(this, from, to);
}
[dartx.replaceAllMapped](from, convert) {
return this[dartx.splitMapJoin](from, {onMatch: convert});
@@ -3189,16 +3191,21 @@ dart_library.library('dart_sdk', null, /* Imports */[
[dartx.splitMapJoin](from, opts) {
let onMatch = opts && 'onMatch' in opts ? opts.onMatch : null;
let onNonMatch = opts && 'onNonMatch' in opts ? opts.onNonMatch : null;
- return dart.as(_js_helper.stringReplaceAllFuncUnchecked(this, from, onMatch, onNonMatch), core.String);
+ return _js_helper.stringReplaceAllFuncUnchecked(this, from, onMatch, onNonMatch);
}
[dartx.replaceFirst](from, to, startIndex) {
if (startIndex === void 0) startIndex = 0;
_js_helper.checkString(to);
_js_helper.checkInt(startIndex);
- if (dart.notNull(startIndex) < 0 || dart.notNull(startIndex) > dart.notNull(this[dartx.length])) {
- dart.throw(new core.RangeError.range(startIndex, 0, this[dartx.length]));
- }
- return dart.as(_js_helper.stringReplaceFirstUnchecked(this, from, to, startIndex), core.String);
+ core.RangeError.checkValueInInterval(startIndex, 0, this[dartx.length], "startIndex");
+ return _js_helper.stringReplaceFirstUnchecked(this, from, to, startIndex);
+ }
+ [dartx.replaceFirstMapped](from, replace, startIndex) {
+ if (startIndex === void 0) startIndex = 0;
+ _js_helper.checkNull(replace);
+ _js_helper.checkInt(startIndex);
+ core.RangeError.checkValueInInterval(startIndex, 0, this[dartx.length], "startIndex");
+ return _js_helper.stringReplaceFirstMappedUnchecked(this, from, replace, startIndex);
}
[dartx.split](pattern) {
_js_helper.checkNull(pattern);
@@ -3211,6 +3218,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
return this[_defaultSplit](pattern);
}
}
+ [dartx.replaceRange](start, end, replacement) {
+ _js_helper.checkString(replacement);
+ _js_helper.checkInt(start);
+ end = core.RangeError.checkValidRange(start, end, this[dartx.length]);
+ _js_helper.checkInt(end);
+ return _js_helper.stringReplaceRangeUnchecked(this, start, end, replacement);
+ }
[_defaultSplit](pattern) {
let result = dart.list([], core.String);
let start = 0;
@@ -3429,12 +3443,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
[dartx.indexOf](pattern, start) {
if (start === void 0) start = 0;
_js_helper.checkNull(pattern);
- if (!(typeof start == 'number')) dart.throw(new core.ArgumentError(start));
+ if (!(typeof start == 'number')) dart.throw(_js_helper.argumentErrorValue(start));
if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[dartx.length])) {
dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
}
if (typeof pattern == 'string') {
- return this.indexOf(pattern, start);
+ return _js_helper.stringIndexOfStringUnchecked(this, pattern, start);
}
if (dart.is(pattern, _js_helper.JSSyntaxRegExp)) {
let re = pattern;
@@ -3452,7 +3466,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
if (start == null) {
start = this[dartx.length];
} else if (!(typeof start == 'number')) {
- dart.throw(new core.ArgumentError(start));
+ dart.throw(_js_helper.argumentErrorValue(start));
} else if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(this[dartx.length])) {
dart.throw(new core.RangeError.range(start, 0, this[dartx.length]));
}
@@ -3474,7 +3488,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
if (dart.notNull(startIndex) < 0 || dart.notNull(startIndex) > dart.notNull(this[dartx.length])) {
dart.throw(new core.RangeError.range(startIndex, 0, this[dartx.length]));
}
- return dart.as(_js_helper.stringContainsUnchecked(this, other, startIndex), core.bool);
+ return _js_helper.stringContainsUnchecked(this, other, startIndex);
}
get [dartx.isEmpty]() {
return this[dartx.length] == 0;
@@ -3483,7 +3497,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
return !dart.notNull(this[dartx.isEmpty]);
}
[dartx.compareTo](other) {
- if (!(typeof other == 'string')) dart.throw(new core.ArgumentError(other));
+ if (!(typeof other == 'string')) dart.throw(_js_helper.argumentErrorValue(other));
return dart.equals(this, other) ? 0 : this < other ? -1 : 1;
}
toString() {
@@ -3507,8 +3521,8 @@ dart_library.library('dart_sdk', null, /* Imports */[
return this.length;
}
[dartx.get](index) {
- if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index));
- if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notNull(index) < 0) dart.throw(new core.RangeError.value(index));
+ if (!(typeof index == 'number')) dart.throw(_js_helper.diagnoseIndexError(this, index));
+ if (dart.notNull(index) >= dart.notNull(this[dartx.length]) || dart.notNull(index) < 0) dart.throw(_js_helper.diagnoseIndexError(this, index));
return this[index];
}
};
@@ -3525,7 +3539,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
[dartx.replaceAllMapped]: [core.String, [core.Pattern, dart.functionType(core.String, [core.Match])]],
[dartx.splitMapJoin]: [core.String, [core.Pattern], {onMatch: dart.functionType(core.String, [core.Match]), onNonMatch: dart.functionType(core.String, [core.String])}],
[dartx.replaceFirst]: [core.String, [core.Pattern, core.String], [core.int]],
+ [dartx.replaceFirstMapped]: [core.String, [core.Pattern, dart.functionType(core.String, [core.Match])], [core.int]],
[dartx.split]: [core.List$(core.String), [core.Pattern]],
+ [dartx.replaceRange]: [core.String, [core.int, core.int, core.String]],
[_defaultSplit]: [core.List$(core.String), [core.Pattern]],
[dartx.startsWith]: [core.bool, [core.Pattern], [core.int]],
[dartx.substring]: [core.String, [core.int], [core.int]],
@@ -10218,6 +10234,22 @@ dart_library.library('dart_sdk', null, /* Imports */[
return regExp[_execGlobal](string, start);
};
dart.lazyFn(_js_helper.firstMatchAfter, () => [core.Match, [_js_helper.JSSyntaxRegExp, core.String, core.int]]);
+ _js_helper.stringIndexOfStringUnchecked = function(receiver, other, startIndex) {
+ return receiver.indexOf(other, startIndex);
+ };
+ dart.fn(_js_helper.stringIndexOfStringUnchecked, core.int, [dart.dynamic, dart.dynamic, dart.dynamic]);
+ _js_helper.substring1Unchecked = function(receiver, startIndex) {
+ return receiver.substring(startIndex);
+ };
+ dart.lazyFn(_js_helper.substring1Unchecked, () => [core.String, [dart.dynamic, dart.dynamic]]);
+ _js_helper.substring2Unchecked = function(receiver, startIndex, endIndex) {
+ return receiver.substring(startIndex, endIndex);
+ };
+ dart.lazyFn(_js_helper.substring2Unchecked, () => [core.String, [dart.dynamic, dart.dynamic, dart.dynamic]]);
+ _js_helper.stringContainsStringUnchecked = function(receiver, other, startIndex) {
+ return dart.notNull(_js_helper.stringIndexOfStringUnchecked(receiver, other, startIndex)) >= 0;
+ };
+ dart.lazyFn(_js_helper.stringContainsStringUnchecked, () => [core.bool, [dart.dynamic, dart.dynamic, dart.dynamic]]);
_js_helper.StringMatch = class StringMatch extends core.Object {
StringMatch(start, input, pattern) {
this.start = start;
@@ -10256,84 +10288,126 @@ dart_library.library('dart_sdk', null, /* Imports */[
groups: [core.List$(core.String), [core.List$(core.int)]]
})
});
- _js_helper.allMatchesInStringUnchecked = function(needle, haystack, startIndex) {
- let result = core.List$(core.Match).new();
- let length = haystack[dartx.length];
- let patternLength = needle[dartx.length];
- while (true) {
- let position = haystack[dartx.indexOf](needle, startIndex);
- if (position == -1) {
- break;
+ _js_helper.allMatchesInStringUnchecked = function(pattern, string, startIndex) {
+ return new _js_helper._StringAllMatchesIterable(string, pattern, startIndex);
+ };
+ dart.lazyFn(_js_helper.allMatchesInStringUnchecked, () => [core.Iterable$(core.Match), [core.String, core.String, core.int]]);
+ const _input = Symbol('_input');
+ const _pattern = Symbol('_pattern');
+ const _index$ = Symbol('_index');
+ _js_helper._StringAllMatchesIterable = class _StringAllMatchesIterable extends collection.IterableBase$(core.Match) {
+ _StringAllMatchesIterable(input, pattern, index) {
+ this[_input] = input;
+ this[_pattern] = pattern;
+ this[_index$] = index;
+ super.IterableBase();
+ }
+ get iterator() {
+ return new _js_helper._StringAllMatchesIterator(this[_input], this[_pattern], this[_index$]);
+ }
+ get first() {
+ let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index$]);
+ if (dart.notNull(index) >= 0) {
+ return new _js_helper.StringMatch(index, this[_input], this[_pattern]);
}
- result[dartx.add](new _js_helper.StringMatch(position, haystack, needle));
- let endIndex = dart.notNull(position) + dart.notNull(patternLength);
- if (endIndex == length) {
- break;
- } else if (position == endIndex) {
- startIndex = dart.notNull(startIndex) + 1;
- } else {
- startIndex = endIndex;
+ dart.throw(_internal.IterableElementError.noElement());
+ }
+ };
+ dart.setSignature(_js_helper._StringAllMatchesIterable, {
+ constructors: () => ({_StringAllMatchesIterable: [_js_helper._StringAllMatchesIterable, [core.String, core.String, core.int]]})
+ });
+ dart.defineExtensionMembers(_js_helper._StringAllMatchesIterable, ['iterator', 'first']);
+ _js_helper._StringAllMatchesIterator = class _StringAllMatchesIterator extends core.Object {
+ _StringAllMatchesIterator(input, pattern, index) {
+ this[_input] = input;
+ this[_pattern] = pattern;
+ this[_index$] = index;
+ this[_current$] = null;
+ }
+ moveNext() {
+ if (dart.notNull(this[_index$]) + dart.notNull(this[_pattern][dartx.length]) > dart.notNull(this[_input][dartx.length])) {
+ this[_current$] = null;
+ return false;
+ }
+ let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index$]);
+ if (dart.notNull(index) < 0) {
+ this[_index$] = dart.notNull(this[_input][dartx.length]) + 1;
+ this[_current$] = null;
+ return false;
}
+ let end = dart.notNull(index) + dart.notNull(this[_pattern][dartx.length]);
+ this[_current$] = new _js_helper.StringMatch(index, this[_input], this[_pattern]);
+ if (end == this[_index$]) end++;
+ this[_index$] = end;
+ return true;
+ }
+ get current() {
+ return this[_current$];
}
- return result;
};
- dart.lazyFn(_js_helper.allMatchesInStringUnchecked, () => [core.List$(core.Match), [core.String, core.String, core.int]]);
+ _js_helper._StringAllMatchesIterator[dart.implements] = () => [core.Iterator$(core.Match)];
+ dart.setSignature(_js_helper._StringAllMatchesIterator, {
+ constructors: () => ({_StringAllMatchesIterator: [_js_helper._StringAllMatchesIterator, [core.String, core.String, core.int]]}),
+ methods: () => ({moveNext: [core.bool, []]})
+ });
_js_helper.stringContainsUnchecked = function(receiver, other, startIndex) {
if (typeof other == 'string') {
- return !dart.equals(dart.dsend(receiver, 'indexOf', other, startIndex), -1);
+ return _js_helper.stringContainsStringUnchecked(receiver, other, startIndex);
} else if (dart.is(other, _js_helper.JSSyntaxRegExp)) {
- return other.hasMatch(dart.as(dart.dsend(receiver, 'substring', startIndex), core.String));
+ return other.hasMatch(receiver[dartx.substring](startIndex));
} else {
- let substr = dart.dsend(receiver, 'substring', startIndex);
- return dart.dload(dart.dsend(other, 'allMatches', substr), 'isNotEmpty');
+ let substr = receiver[dartx.substring](startIndex);
+ return dart.as(dart.dload(dart.dsend(other, 'allMatches', substr), 'isNotEmpty'), core.bool);
}
};
- dart.fn(_js_helper.stringContainsUnchecked);
- _js_helper.stringReplaceJS = function(receiver, replacer, to) {
- to = to.replace(/\$/g, "$$$$");
- return receiver.replace(replacer, to);
+ dart.lazyFn(_js_helper.stringContainsUnchecked, () => [core.bool, [core.String, dart.dynamic, core.int]]);
+ _js_helper.stringReplaceJS = function(receiver, replacer, replacement) {
+ replacement = replacement.replace(/\$/g, "$$$$");
+ return receiver.replace(replacer, replacement);
};
- dart.fn(_js_helper.stringReplaceJS);
- _js_helper.stringReplaceFirstRE = function(receiver, regexp, to, startIndex) {
- let match = dart.dsend(regexp, _execGlobal, receiver, startIndex);
+ dart.lazyFn(_js_helper.stringReplaceJS, () => [core.String, [dart.dynamic, dart.dynamic, dart.dynamic]]);
+ _js_helper.stringReplaceFirstRE = function(receiver, regexp, replacement, startIndex) {
+ let match = regexp[_execGlobal](receiver, startIndex);
if (match == null) return receiver;
- let start = dart.dload(match, 'start');
- let end = dart.dload(match, 'end');
- return `${dart.dsend(receiver, 'substring', 0, start)}${to}${dart.dsend(receiver, 'substring', end)}`;
- };
- dart.fn(_js_helper.stringReplaceFirstRE);
- _js_helper.ESCAPE_REGEXP = '[[\\]{}()*+?.\\\\^$|]';
- _js_helper.stringReplaceAllUnchecked = function(receiver, from, to) {
- _js_helper.checkString(to);
- if (typeof from == 'string') {
- if (from == "") {
- if (dart.equals(receiver, "")) {
- return to;
+ let start = match.start;
+ let end = match.end;
+ return _js_helper.stringReplaceRangeUnchecked(receiver, start, end, replacement);
+ };
+ dart.lazyFn(_js_helper.stringReplaceFirstRE, () => [core.String, [core.String, _js_helper.JSSyntaxRegExp, core.String, core.int]]);
+ _js_helper.quoteStringForRegExp = function(string) {
+ return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
+ };
+ dart.lazyFn(_js_helper.quoteStringForRegExp, () => [core.String, [dart.dynamic]]);
+ _js_helper.stringReplaceAllUnchecked = function(receiver, pattern, replacement) {
+ _js_helper.checkString(replacement);
+ if (typeof pattern == 'string') {
+ if (pattern == "") {
+ if (receiver == "") {
+ return replacement;
} else {
let result = new core.StringBuffer();
- let length = dart.as(dart.dload(receiver, 'length'), core.int);
- result.write(to);
+ let length = receiver[dartx.length];
+ result.write(replacement);
for (let i = 0; i < dart.notNull(length); i++) {
- result.write(dart.dindex(receiver, i));
- result.write(to);
+ result.write(receiver[dartx.get](i));
+ result.write(replacement);
}
return result.toString();
}
} else {
- let quoter = new RegExp(_js_helper.ESCAPE_REGEXP, 'g');
- let quoted = from.replace(quoter, "\\$&");
+ let quoted = _js_helper.quoteStringForRegExp(pattern);
let replacer = new RegExp(quoted, 'g');
- return _js_helper.stringReplaceJS(receiver, replacer, to);
+ return _js_helper.stringReplaceJS(receiver, replacer, replacement);
}
- } else if (dart.is(from, _js_helper.JSSyntaxRegExp)) {
- let re = _js_helper.regExpGetGlobalNative(from);
- return _js_helper.stringReplaceJS(receiver, re, to);
+ } else if (dart.is(pattern, _js_helper.JSSyntaxRegExp)) {
+ let re = _js_helper.regExpGetGlobalNative(pattern);
+ return _js_helper.stringReplaceJS(receiver, re, replacement);
} else {
- _js_helper.checkNull(from);
+ _js_helper.checkNull(pattern);
dart.throw("String.replaceAll(Pattern) UNIMPLEMENTED");
}
};
- dart.fn(_js_helper.stringReplaceAllUnchecked);
+ dart.lazyFn(_js_helper.stringReplaceAllUnchecked, () => [core.String, [core.String, core.Pattern, core.String]]);
_js_helper._matchString = function(match) {
return match.get(0);
};
@@ -10343,89 +10417,105 @@ dart_library.library('dart_sdk', null, /* Imports */[
};
dart.lazyFn(_js_helper._stringIdentity, () => [core.String, [core.String]]);
_js_helper.stringReplaceAllFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
- if (!dart.is(pattern, core.Pattern)) {
- dart.throw(new core.ArgumentError(`${pattern} is not a Pattern`));
- }
if (onMatch == null) onMatch = _js_helper._matchString;
if (onNonMatch == null) onNonMatch = _js_helper._stringIdentity;
if (typeof pattern == 'string') {
return _js_helper.stringReplaceAllStringFuncUnchecked(receiver, pattern, onMatch, onNonMatch);
}
+ if (!dart.is(pattern, core.Pattern)) {
+ dart.throw(new core.ArgumentError.value(pattern, 'pattern', 'is not a Pattern'));
+ }
let buffer = new core.StringBuffer();
let startIndex = 0;
- for (let match of dart.as(dart.dsend(pattern, 'allMatches', receiver), core.Iterable)) {
- dart.as(match, core.Match);
- buffer.write(dart.dcall(onNonMatch, dart.dsend(receiver, 'substring', startIndex, match.start)));
- buffer.write(dart.dcall(onMatch, match));
+ for (let match of pattern[dartx.allMatches](receiver)) {
+ buffer.write(onNonMatch(receiver[dartx.substring](startIndex, match.start)));
+ buffer.write(onMatch(match));
startIndex = match.end;
}
- buffer.write(dart.dcall(onNonMatch, dart.dsend(receiver, 'substring', startIndex)));
+ buffer.write(onNonMatch(receiver[dartx.substring](startIndex)));
return buffer.toString();
};
- dart.fn(_js_helper.stringReplaceAllFuncUnchecked);
+ dart.lazyFn(_js_helper.stringReplaceAllFuncUnchecked, () => [core.String, [core.String, core.Pattern, dart.functionType(core.String, [core.Match]), dart.functionType(core.String, [core.String])]]);
_js_helper.stringReplaceAllEmptyFuncUnchecked = function(receiver, onMatch, onNonMatch) {
let buffer = new core.StringBuffer();
- let length = dart.as(dart.dload(receiver, 'length'), core.int);
+ let length = receiver[dartx.length];
let i = 0;
- buffer.write(dart.dcall(onNonMatch, ""));
+ buffer.write(onNonMatch(""));
while (i < dart.notNull(length)) {
- buffer.write(dart.dcall(onMatch, new _js_helper.StringMatch(i, dart.as(receiver, core.String), "")));
- let code = dart.as(dart.dsend(receiver, 'codeUnitAt', i), core.int);
+ buffer.write(onMatch(new _js_helper.StringMatch(i, receiver, "")));
+ let code = receiver[dartx.codeUnitAt](i);
if ((dart.notNull(code) & ~1023) >>> 0 == 55296 && dart.notNull(length) > i + 1) {
- code = dart.as(dart.dsend(receiver, 'codeUnitAt', i + 1), core.int);
+ code = receiver[dartx.codeUnitAt](i + 1);
if ((dart.notNull(code) & ~1023) >>> 0 == 56320) {
- buffer.write(dart.dcall(onNonMatch, dart.dsend(receiver, 'substring', i, i + 2)));
+ buffer.write(onNonMatch(receiver[dartx.substring](i, i + 2)));
i = i + 2;
continue;
}
}
- buffer.write(dart.dcall(onNonMatch, dart.dindex(receiver, i)));
+ buffer.write(onNonMatch(receiver[dartx.get](i)));
i++;
}
- buffer.write(dart.dcall(onMatch, new _js_helper.StringMatch(i, dart.as(receiver, core.String), "")));
- buffer.write(dart.dcall(onNonMatch, ""));
+ buffer.write(onMatch(new _js_helper.StringMatch(i, receiver, "")));
+ buffer.write(onNonMatch(""));
return buffer.toString();
};
- dart.fn(_js_helper.stringReplaceAllEmptyFuncUnchecked);
+ dart.lazyFn(_js_helper.stringReplaceAllEmptyFuncUnchecked, () => [core.String, [core.String, dart.functionType(core.String, [core.Match]), dart.functionType(core.String, [core.String])]]);
_js_helper.stringReplaceAllStringFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
- let patternLength = dart.as(dart.dload(pattern, 'length'), core.int);
+ let patternLength = pattern[dartx.length];
if (patternLength == 0) {
return _js_helper.stringReplaceAllEmptyFuncUnchecked(receiver, onMatch, onNonMatch);
}
- let length = dart.as(dart.dload(receiver, 'length'), core.int);
+ let length = receiver[dartx.length];
let buffer = new core.StringBuffer();
let startIndex = 0;
while (startIndex < dart.notNull(length)) {
- let position = dart.as(dart.dsend(receiver, 'indexOf', pattern, startIndex), core.int);
+ let position = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
if (position == -1) {
break;
}
- buffer.write(dart.dcall(onNonMatch, dart.dsend(receiver, 'substring', startIndex, position)));
- buffer.write(dart.dcall(onMatch, new _js_helper.StringMatch(position, dart.as(receiver, core.String), dart.as(pattern, core.String))));
+ buffer.write(onNonMatch(receiver[dartx.substring](startIndex, position)));
+ buffer.write(onMatch(new _js_helper.StringMatch(position, receiver, pattern)));
startIndex = dart.notNull(position) + dart.notNull(patternLength);
}
- buffer.write(dart.dcall(onNonMatch, dart.dsend(receiver, 'substring', startIndex)));
+ buffer.write(onNonMatch(receiver[dartx.substring](startIndex)));
return buffer.toString();
};
- dart.fn(_js_helper.stringReplaceAllStringFuncUnchecked);
- _js_helper.stringReplaceFirstUnchecked = function(receiver, from, to, startIndex) {
- if (startIndex === void 0) startIndex = 0;
- if (typeof from == 'string') {
- let index = dart.dsend(receiver, 'indexOf', from, startIndex);
- if (dart.notNull(dart.as(dart.dsend(index, '<', 0), core.bool))) return receiver;
- return `${dart.dsend(receiver, 'substring', 0, index)}${to}` + `${dart.dsend(receiver, 'substring', dart.dsend(index, '+', from[dartx.length]))}`;
- } else if (dart.is(from, _js_helper.JSSyntaxRegExp)) {
- return startIndex == 0 ? _js_helper.stringReplaceJS(receiver, _js_helper.regExpGetNative(from), to) : _js_helper.stringReplaceFirstRE(receiver, from, to, startIndex);
- } else {
- _js_helper.checkNull(from);
- dart.throw("String.replace(Pattern) UNIMPLEMENTED");
- }
- };
- dart.fn(_js_helper.stringReplaceFirstUnchecked, dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic], [core.int]);
+ dart.lazyFn(_js_helper.stringReplaceAllStringFuncUnchecked, () => [core.String, [core.String, core.String, dart.functionType(core.String, [core.Match]), dart.functionType(core.String, [core.String])]]);
+ _js_helper.stringReplaceFirstUnchecked = function(receiver, pattern, replacement, startIndex) {
+ if (typeof pattern == 'string') {
+ let index = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
+ if (dart.notNull(index) < 0) return receiver;
+ let end = dart.notNull(index) + dart.notNull(pattern[dartx.length]);
+ return _js_helper.stringReplaceRangeUnchecked(receiver, index, end, replacement);
+ }
+ if (dart.is(pattern, _js_helper.JSSyntaxRegExp)) {
+ return startIndex == 0 ? _js_helper.stringReplaceJS(receiver, _js_helper.regExpGetNative(pattern), replacement) : _js_helper.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
+ }
+ _js_helper.checkNull(pattern);
+ let matches = pattern[dartx.allMatches](receiver, startIndex)[dartx.iterator];
+ if (!dart.notNull(matches.moveNext())) return receiver;
+ let match = matches.current;
+ return receiver[dartx.replaceRange](match.start, match.end, replacement);
+ };
+ dart.lazyFn(_js_helper.stringReplaceFirstUnchecked, () => [core.String, [core.String, core.Pattern, core.String, core.int]]);
+ _js_helper.stringReplaceFirstMappedUnchecked = function(receiver, pattern, replace, startIndex) {
+ let matches = pattern[dartx.allMatches](receiver, startIndex)[dartx.iterator];
+ if (!dart.notNull(matches.moveNext())) return receiver;
+ let match = matches.current;
+ let replacement = `${replace(match)}`;
+ return receiver[dartx.replaceRange](match.start, match.end, replacement);
+ };
+ dart.lazyFn(_js_helper.stringReplaceFirstMappedUnchecked, () => [core.String, [core.String, core.Pattern, dart.functionType(core.String, [core.Match]), core.int]]);
_js_helper.stringJoinUnchecked = function(array, separator) {
return array.join(separator);
};
- dart.fn(_js_helper.stringJoinUnchecked);
+ dart.lazyFn(_js_helper.stringJoinUnchecked, () => [core.String, [dart.dynamic, dart.dynamic]]);
+ _js_helper.stringReplaceRangeUnchecked = function(receiver, start, end, replacement) {
+ let prefix = receiver.substring(0, start);
+ let suffix = receiver.substring(end);
+ return `${prefix}${replacement}${suffix}`;
+ };
+ dart.lazyFn(_js_helper.stringReplaceRangeUnchecked, () => [core.String, [core.String, core.int, core.int, core.String]]);
_js_helper.getRuntimeType = function(object) {
return dart.getReifiedType(object);
};
@@ -27554,20 +27644,20 @@ dart_library.library('dart_sdk', null, /* Imports */[
return _GeneratorIterable;
});
core._GeneratorIterable = core._GeneratorIterable$();
- const _index$ = Symbol('_index');
+ const _index$0 = Symbol('_index');
const _current$2 = Symbol('_current');
core._GeneratorIterator$ = dart.generic(E => {
class _GeneratorIterator extends core.Object {
_GeneratorIterator(index, end, generator) {
- this[_index$] = index;
+ this[_index$0] = index;
this[_end$] = end;
this[_generator$] = generator;
this[_current$2] = null;
}
moveNext() {
- if (dart.notNull(this[_index$]) < dart.notNull(this[_end$])) {
- this[_current$2] = this[_generator$](this[_index$]);
- this[_index$] = dart.notNull(this[_index$]) + 1;
+ if (dart.notNull(this[_index$0]) < dart.notNull(this[_end$])) {
+ this[_current$2] = this[_generator$](this[_index$0]);
+ this[_index$0] = dart.notNull(this[_index$0]) + 1;
return true;
} else {
this[_current$2] = null;
@@ -27851,7 +27941,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
this[_currentCodePoint] = null;
}
get current() {
- return dart.asInt(this[_currentCodePoint]);
+ return this[_currentCodePoint];
}
get currentSize() {
return dart.notNull(this[_nextPosition]) - dart.notNull(this[_position$]);
« no previous file with comments | « no previous file | tool/input_sdk/lib/core/string.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698