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

Unified Diff: sdk/lib/_internal/compiler/implementation/lib/regexp_helper.dart

Issue 16538002: Move lib from sdk/lib/_internal/compiler/implementation to _internal root. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 6 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:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/lib/regexp_helper.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/lib/regexp_helper.dart (revision 23664)
+++ sdk/lib/_internal/compiler/implementation/lib/regexp_helper.dart (working copy)
@@ -1,142 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// 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.
-
-part of _js_helper;
-
-// Helper method used by internal libraries.
-regExpGetNative(JSSyntaxRegExp regexp) => regexp._nativeRegExp;
-
-class JSSyntaxRegExp implements RegExp {
- final String _pattern;
- final bool _isMultiLine;
- final bool _isCaseSensitive;
- var _nativeRegExp;
-
- JSSyntaxRegExp._internal(String pattern,
- bool multiLine,
- bool caseSensitive,
- bool global)
- : _nativeRegExp = makeNative(pattern, multiLine, caseSensitive, global),
- this._pattern = pattern,
- this._isMultiLine = multiLine,
- this._isCaseSensitive = caseSensitive;
-
- JSSyntaxRegExp(String pattern,
- {bool multiLine: false,
- bool caseSensitive: true})
- : this._internal(pattern, multiLine, caseSensitive, false);
-
- JSSyntaxRegExp._globalVersionOf(JSSyntaxRegExp other)
- : this._internal(other.pattern,
- other.isMultiLine,
- other.isCaseSensitive,
- true);
-
- static makeNative(
- String pattern, bool multiLine, bool caseSensitive, bool global) {
- checkString(pattern);
- String m = multiLine ? 'm' : '';
- String i = caseSensitive ? '' : 'i';
- String g = global ? 'g' : '';
- // We're using the JavaScript's try catch instead of the Dart one
- // to avoid dragging in Dart runtime support just because of using
- // RegExp.
- var regexp = JS('',
- '(function() {'
- 'try {'
- 'return new RegExp(#, # + # + #);'
- '} catch (e) {'
- 'return e;'
- '}'
- '})()', pattern, m, i, g);
- if (JS('bool', '# instanceof RegExp', regexp)) return regexp;
- // The returned value is the JavaScript exception. Turn it into a
- // Dart exception.
- String errorMessage = JS('String', r'String(#)', regexp);
- throw new FormatException(
- "Illegal RegExp pattern: $pattern, $errorMessage");
- }
-
- Match firstMatch(String str) {
- List<String> m =
- JS('=List|Null', r'#.exec(#)', _nativeRegExp, checkString(str));
- if (m == null) return null;
- var matchStart = JS('int', r'#.index', m);
- // m.lastIndex only works with flag 'g'.
- var matchEnd = matchStart + m[0].length;
- return new _MatchImplementation(pattern, str, matchStart, matchEnd, m);
- }
-
- bool hasMatch(String str) {
- return JS('bool', r'#.test(#)', _nativeRegExp, checkString(str));
- }
-
- String stringMatch(String str) {
- var match = firstMatch(str);
- return match == null ? null : match.group(0);
- }
-
- Iterable<Match> allMatches(String str) {
- checkString(str);
- return new _AllMatchesIterable(this, str);
- }
-
- String get pattern => _pattern;
- bool get isMultiLine => _isMultiLine;
- bool get isCaseSensitive => _isCaseSensitive;
-}
-
-class _MatchImplementation implements Match {
- final String pattern;
- final String str;
- final int start;
- final int end;
- final List<String> _groups;
-
- const _MatchImplementation(
- String this.pattern,
- String this.str,
- int this.start,
- int this.end,
- List<String> this._groups);
-
- String group(int index) => _groups[index];
- String operator [](int index) => group(index);
- int get groupCount => _groups.length - 1;
-
- List<String> groups(List<int> groups) {
- List<String> out = [];
- for (int i in groups) {
- out.add(group(i));
- }
- return out;
- }
-}
-
-class _AllMatchesIterable extends IterableBase<Match> {
- final JSSyntaxRegExp _re;
- final String _str;
-
- const _AllMatchesIterable(this._re, this._str);
-
- Iterator<Match> get iterator => new _AllMatchesIterator(_re, _str);
-}
-
-class _AllMatchesIterator implements Iterator<Match> {
- final RegExp _re;
- final String _str;
- Match _current;
-
- _AllMatchesIterator(JSSyntaxRegExp re, String this._str)
- : _re = new JSSyntaxRegExp._globalVersionOf(re);
-
- Match get current => _current;
-
- bool moveNext() {
- // firstMatch actually acts as nextMatch because of
- // hidden global flag.
- _current = _re.firstMatch(_str);
- return _current != null;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698