Fix escaping in YAML RegExp.
This was causing it to try to parse "m4" as a number, which fails.
Fixes #9128.
BUG=
Review URL: https://codereview.chromium.org//12876003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/yaml@20107 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/lib/composer.dart b/lib/composer.dart
index e22159f..90ed330 100644
--- a/lib/composer.dart
+++ b/lib/composer.dart
@@ -98,13 +98,13 @@
/// Parses a null scalar.
_ScalarNode parseNull(String content) {
- if (!new RegExp("^(null|Null|NULL|~|)\$").hasMatch(content)) return null;
+ if (!new RegExp(r"^(null|Null|NULL|~|)$").hasMatch(content)) return null;
return new _ScalarNode(_Tag.yaml("null"), value: null);
}
/// Parses a boolean scalar.
_ScalarNode parseBool(String content) {
- var match = new RegExp("^(?:(true|True|TRUE)|(false|False|FALSE))\$").
+ var match = new RegExp(r"^(?:(true|True|TRUE)|(false|False|FALSE))$").
firstMatch(content);
if (match == null) return null;
return new _ScalarNode(_Tag.yaml("bool"), value: match.group(1) != null);
@@ -112,19 +112,19 @@
/// Parses an integer scalar.
_ScalarNode parseInt(String content) {
- var match = new RegExp("^[-+]?[0-9]+\$").firstMatch(content);
+ var match = new RegExp(r"^[-+]?[0-9]+$").firstMatch(content);
if (match != null) {
return new _ScalarNode(_Tag.yaml("int"),
value: int.parse(match.group(0)));
}
- match = new RegExp("^0o([0-7]+)\$").firstMatch(content);
+ match = new RegExp(r"^0o([0-7]+)$").firstMatch(content);
if (match != null) {
int n = int.parse(match.group(1), radix: 8);
return new _ScalarNode(_Tag.yaml("int"), value: n);
}
- match = new RegExp("^0x[0-9a-fA-F]+\$").firstMatch(content);
+ match = new RegExp(r"^0x[0-9a-fA-F]+$").firstMatch(content);
if (match != null) {
return new _ScalarNode(_Tag.yaml("int"),
value: int.parse(match.group(0)));
@@ -136,7 +136,7 @@
/// Parses a floating-point scalar.
_ScalarNode parseFloat(String content) {
var match = new RegExp(
- "^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?\$").
+ r"^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$").
firstMatch(content);
if (match != null) {
// YAML allows floats of the form "0.", but Dart does not. Fix up those
@@ -146,13 +146,13 @@
value: double.parse(matchStr));
}
- match = new RegExp("^([+-]?)\.(inf|Inf|INF)\$").firstMatch(content);
+ match = new RegExp(r"^([+-]?)\.(inf|Inf|INF)$").firstMatch(content);
if (match != null) {
var value = match.group(1) == "-" ? -double.INFINITY : double.INFINITY;
return new _ScalarNode(_Tag.yaml("float"), value: value);
}
- match = new RegExp("^\.(nan|NaN|NAN)\$").firstMatch(content);
+ match = new RegExp(r"^\.(nan|NaN|NAN)$").firstMatch(content);
if (match != null) {
return new _ScalarNode(_Tag.yaml("float"), value: double.NAN);
}