| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library string_scanner.string_scanner; | 5 library string_scanner.string_scanner; |
| 6 | 6 |
| 7 import 'package:source_span/source_span.dart'; | 7 import 'package:source_span/source_span.dart'; |
| 8 | 8 |
| 9 import 'exception.dart'; | 9 import 'exception.dart'; |
| 10 import 'utils.dart'; | 10 import 'utils.dart'; |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 /// instead. | 100 /// instead. |
| 101 void expect(Pattern pattern, {String name}) { | 101 void expect(Pattern pattern, {String name}) { |
| 102 if (scan(pattern)) return; | 102 if (scan(pattern)) return; |
| 103 | 103 |
| 104 if (name == null) { | 104 if (name == null) { |
| 105 if (pattern is RegExp) { | 105 if (pattern is RegExp) { |
| 106 var source = pattern.pattern; | 106 var source = pattern.pattern; |
| 107 if (!_slashAutoEscape) source = source.replaceAll("/", "\\/"); | 107 if (!_slashAutoEscape) source = source.replaceAll("/", "\\/"); |
| 108 name = "/$source/"; | 108 name = "/$source/"; |
| 109 } else { | 109 } else { |
| 110 name = pattern.toString() | 110 name = |
| 111 .replaceAll("\\", "\\\\").replaceAll('"', '\\"'); | 111 pattern.toString().replaceAll("\\", "\\\\").replaceAll('"', '\\"'); |
| 112 name = '"$name"'; | 112 name = '"$name"'; |
| 113 } | 113 } |
| 114 } | 114 } |
| 115 _fail(name); | 115 _fail(name); |
| 116 } | 116 } |
| 117 | 117 |
| 118 /// If the string has not been fully consumed, this throws a | 118 /// If the string has not been fully consumed, this throws a |
| 119 /// [FormatException]. | 119 /// [FormatException]. |
| 120 void expectDone() { | 120 void expectDone() { |
| 121 if (isDone) return; | 121 if (isDone) return; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 throw new StringScannerException(message, span, string); | 167 throw new StringScannerException(message, span, string); |
| 168 } | 168 } |
| 169 | 169 |
| 170 // TODO(nweiz): Make this handle long lines more gracefully. | 170 // TODO(nweiz): Make this handle long lines more gracefully. |
| 171 /// Throws a [FormatException] describing that [name] is expected at the | 171 /// Throws a [FormatException] describing that [name] is expected at the |
| 172 /// current position in the string. | 172 /// current position in the string. |
| 173 void _fail(String name) { | 173 void _fail(String name) { |
| 174 error("expected $name.", position: this.position, length: 0); | 174 error("expected $name.", position: this.position, length: 0); |
| 175 } | 175 } |
| 176 } | 176 } |
| OLD | NEW |