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

Side by Side Diff: utils/pub/yaml/composer.dart

Issue 11312203: "Reverting 14829-14832" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « utils/pub/version.dart ('k') | utils/pub/yaml/model.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 /** 5 /**
6 * Takes a parsed YAML document (what the spec calls the "serialization tree") 6 * Takes a parsed YAML document (what the spec calls the "serialization tree")
7 * and resolves aliases, resolves tags, and parses scalars to produce the 7 * and resolves aliases, resolves tags, and parses scalars to produce the
8 * "representation graph". 8 * "representation graph".
9 */ 9 */
10 class _Composer extends _Visitor { 10 class _Composer extends _Visitor {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 */ 99 */
100 _Node setAnchor(_Node anchored, _Node result) { 100 _Node setAnchor(_Node anchored, _Node result) {
101 if (anchored.anchor == null) return result; 101 if (anchored.anchor == null) return result;
102 result.anchor = '${idCounter++}'; 102 result.anchor = '${idCounter++}';
103 anchors[anchored.anchor] = result; 103 anchors[anchored.anchor] = result;
104 return result; 104 return result;
105 } 105 }
106 106
107 /** Parses a null scalar. */ 107 /** Parses a null scalar. */
108 _ScalarNode parseNull(String content) { 108 _ScalarNode parseNull(String content) {
109 if (!new RegExp("^(null|Null|NULL|~|)\$").hasMatch(content)) return null; 109 if (!const RegExp("^(null|Null|NULL|~|)\$").hasMatch(content)) return null;
110 return new _ScalarNode(_Tag.yaml("null"), value: null); 110 return new _ScalarNode(_Tag.yaml("null"), value: null);
111 } 111 }
112 112
113 /** Parses a boolean scalar. */ 113 /** Parses a boolean scalar. */
114 _ScalarNode parseBool(String content) { 114 _ScalarNode parseBool(String content) {
115 var match = new RegExp("^(?:(true|True|TRUE)|(false|False|FALSE))\$"). 115 var match = const RegExp("^(?:(true|True|TRUE)|(false|False|FALSE))\$").
116 firstMatch(content); 116 firstMatch(content);
117 if (match == null) return null; 117 if (match == null) return null;
118 return new _ScalarNode(_Tag.yaml("bool"), value: match.group(1) != null); 118 return new _ScalarNode(_Tag.yaml("bool"), value: match.group(1) != null);
119 } 119 }
120 120
121 /** Parses an integer scalar. */ 121 /** Parses an integer scalar. */
122 _ScalarNode parseInt(String content) { 122 _ScalarNode parseInt(String content) {
123 var match = new RegExp("^[-+]?[0-9]+\$").firstMatch(content); 123 var match = const RegExp("^[-+]?[0-9]+\$").firstMatch(content);
124 if (match != null) { 124 if (match != null) {
125 return new _ScalarNode(_Tag.yaml("int"), 125 return new _ScalarNode(_Tag.yaml("int"),
126 value: Math.parseInt(match.group(0))); 126 value: Math.parseInt(match.group(0)));
127 } 127 }
128 128
129 match = new RegExp("^0o([0-7]+)\$").firstMatch(content); 129 match = const RegExp("^0o([0-7]+)\$").firstMatch(content);
130 if (match != null) { 130 if (match != null) {
131 // TODO(nweiz): clean this up when Dart can parse an octal string 131 // TODO(nweiz): clean this up when Dart can parse an octal string
132 var n = 0; 132 var n = 0;
133 for (var c in match.group(1).charCodes) { 133 for (var c in match.group(1).charCodes) {
134 n *= 8; 134 n *= 8;
135 n += c - 48; 135 n += c - 48;
136 } 136 }
137 return new _ScalarNode(_Tag.yaml("int"), value: n); 137 return new _ScalarNode(_Tag.yaml("int"), value: n);
138 } 138 }
139 139
140 match = new RegExp("^0x[0-9a-fA-F]+\$").firstMatch(content); 140 match = const RegExp("^0x[0-9a-fA-F]+\$").firstMatch(content);
141 if (match != null) { 141 if (match != null) {
142 return new _ScalarNode(_Tag.yaml("int"), 142 return new _ScalarNode(_Tag.yaml("int"),
143 value: Math.parseInt(match.group(0))); 143 value: Math.parseInt(match.group(0)));
144 } 144 }
145 145
146 return null; 146 return null;
147 } 147 }
148 148
149 /** Parses a floating-point scalar. */ 149 /** Parses a floating-point scalar. */
150 _ScalarNode parseFloat(String content) { 150 _ScalarNode parseFloat(String content) {
151 var match = new RegExp( 151 var match = const RegExp(
152 "^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?\$"). 152 "^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?\$").
153 firstMatch(content); 153 firstMatch(content);
154 if (match != null) { 154 if (match != null) {
155 // YAML allows floats of the form "0.", but Dart does not. Fix up those 155 // YAML allows floats of the form "0.", but Dart does not. Fix up those
156 // floats by removing the trailing dot. 156 // floats by removing the trailing dot.
157 var matchStr = match.group(0).replaceAll(new RegExp(r"\.$"), ""); 157 var matchStr = match.group(0).replaceAll(new RegExp(r"\.$"), "");
158 return new _ScalarNode(_Tag.yaml("float"), 158 return new _ScalarNode(_Tag.yaml("float"),
159 value: Math.parseDouble(matchStr)); 159 value: Math.parseDouble(matchStr));
160 } 160 }
161 161
162 match = new RegExp("^([+-]?)\.(inf|Inf|INF)\$").firstMatch(content); 162 match = const RegExp("^([+-]?)\.(inf|Inf|INF)\$").firstMatch(content);
163 if (match != null) { 163 if (match != null) {
164 var infinityStr = match.group(1) == "-" ? "-Infinity" : "Infinity"; 164 var infinityStr = match.group(1) == "-" ? "-Infinity" : "Infinity";
165 return new _ScalarNode(_Tag.yaml("float"), 165 return new _ScalarNode(_Tag.yaml("float"),
166 value: Math.parseDouble(infinityStr)); 166 value: Math.parseDouble(infinityStr));
167 } 167 }
168 168
169 match = new RegExp("^\.(nan|NaN|NAN)\$").firstMatch(content); 169 match = const RegExp("^\.(nan|NaN|NAN)\$").firstMatch(content);
170 if (match != null) { 170 if (match != null) {
171 return new _ScalarNode(_Tag.yaml("float"), 171 return new _ScalarNode(_Tag.yaml("float"),
172 value: Math.parseDouble("NaN")); 172 value: Math.parseDouble("NaN"));
173 } 173 }
174 174
175 return null; 175 return null;
176 } 176 }
177 177
178 /** Parses a string scalar. */ 178 /** Parses a string scalar. */
179 _ScalarNode parseString(String content) => 179 _ScalarNode parseString(String content) =>
180 new _ScalarNode(_Tag.yaml("str"), value: content); 180 new _ScalarNode(_Tag.yaml("str"), value: content);
181 } 181 }
OLDNEW
« no previous file with comments | « utils/pub/version.dart ('k') | utils/pub/yaml/model.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698