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

Side by Side Diff: test/codegen/expect/path/path.js

Issue 1956513004: Switch to actual unittest, stack trace, and path packages. Tag tests as failing that were ignored d… (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@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:
View unified diff | Download patch
OLDNEW
(Empty)
1 dart_library.library('path', null, /* Imports */[
Jennifer Messerly 2016/05/06 18:53:07 feel free to .gitignore these if you don't want th
Jacob 2016/05/06 19:17:33 Added these to the .gitignore
2 'dart_sdk'
3 ], function(exports, dart_sdk) {
4 'use strict';
5 const core = dart_sdk.core;
6 const dart = dart_sdk.dart;
7 const dartx = dart_sdk.dartx;
8 const path$ = Object.create(null);
9 const src__context = Object.create(null);
10 const src__style = Object.create(null);
11 const src__style__posix = Object.create(null);
12 const src__style__url = Object.create(null);
13 const src__style__windows = Object.create(null);
14 const src__utils = Object.create(null);
15 const src__characters = Object.create(null);
16 const src__parsed_path = Object.create(null);
17 const src__path_exception = Object.create(null);
18 const src__internal_style = Object.create(null);
19 dart.defineLazy(path$, {
20 get posix() {
21 return src__context.Context.new({style: src__style.Style.posix});
22 }
23 });
24 dart.defineLazy(path$, {
25 get windows() {
26 return src__context.Context.new({style: src__style.Style.windows});
27 }
28 });
29 dart.defineLazy(path$, {
30 get url() {
31 return src__context.Context.new({style: src__style.Style.url});
32 }
33 });
34 dart.defineLazy(path$, {
35 get context() {
36 return src__context.createInternal();
37 }
38 });
39 dart.copyProperties(path$, {
40 get style() {
41 return path$.context.style;
42 }
43 });
44 dart.copyProperties(path$, {
45 get current() {
46 let uri = core.Uri.base;
47 if (dart.equals(uri, path$._currentUriBase)) return path$._current;
48 path$._currentUriBase = uri;
49 if (dart.equals(src__style.Style.platform, src__style.Style.url)) {
50 path$._current = dart.toString(uri.resolve('.'));
51 return path$._current;
52 } else {
53 let path = uri.toFilePath();
54 let lastIndex = dart.notNull(path[dartx.length]) - 1;
55 dart.assert(path[dartx.get](lastIndex) == '/' || path[dartx.get](lastInd ex) == '\\');
56 path$._current = path[dartx.substring](0, lastIndex);
57 return path$._current;
58 }
59 }
60 });
61 path$._currentUriBase = null;
62 path$._current = null;
63 dart.copyProperties(path$, {
64 get separator() {
65 return path$.context.separator;
66 }
67 });
68 path$.absolute = function(part1, part2, part3, part4, part5, part6, part7) {
69 if (part2 === void 0) part2 = null;
70 if (part3 === void 0) part3 = null;
71 if (part4 === void 0) part4 = null;
72 if (part5 === void 0) part5 = null;
73 if (part6 === void 0) part6 = null;
74 if (part7 === void 0) part7 = null;
75 return path$.context.absolute(part1, part2, part3, part4, part5, part6, part 7);
76 };
77 dart.fn(path$.absolute, core.String, [core.String], [core.String, core.String, core.String, core.String, core.String, core.String]);
78 path$.basename = function(path) {
79 return path$.context.basename(path);
80 };
81 dart.fn(path$.basename, core.String, [core.String]);
82 path$.basenameWithoutExtension = function(path) {
83 return path$.context.basenameWithoutExtension(path);
84 };
85 dart.fn(path$.basenameWithoutExtension, core.String, [core.String]);
86 path$.dirname = function(path) {
87 return path$.context.dirname(path);
88 };
89 dart.fn(path$.dirname, core.String, [core.String]);
90 path$.extension = function(path) {
91 return path$.context.extension(path);
92 };
93 dart.fn(path$.extension, core.String, [core.String]);
94 path$.rootPrefix = function(path) {
95 return path$.context.rootPrefix(path);
96 };
97 dart.fn(path$.rootPrefix, core.String, [core.String]);
98 path$.isAbsolute = function(path) {
99 return path$.context.isAbsolute(path);
100 };
101 dart.fn(path$.isAbsolute, core.bool, [core.String]);
102 path$.isRelative = function(path) {
103 return path$.context.isRelative(path);
104 };
105 dart.fn(path$.isRelative, core.bool, [core.String]);
106 path$.isRootRelative = function(path) {
107 return path$.context.isRootRelative(path);
108 };
109 dart.fn(path$.isRootRelative, core.bool, [core.String]);
110 path$.join = function(part1, part2, part3, part4, part5, part6, part7, part8) {
111 if (part2 === void 0) part2 = null;
112 if (part3 === void 0) part3 = null;
113 if (part4 === void 0) part4 = null;
114 if (part5 === void 0) part5 = null;
115 if (part6 === void 0) part6 = null;
116 if (part7 === void 0) part7 = null;
117 if (part8 === void 0) part8 = null;
118 return path$.context.join(part1, part2, part3, part4, part5, part6, part7, p art8);
119 };
120 dart.fn(path$.join, core.String, [core.String], [core.String, core.String, cor e.String, core.String, core.String, core.String, core.String]);
121 path$.joinAll = function(parts) {
122 return path$.context.joinAll(parts);
123 };
124 dart.fn(path$.joinAll, core.String, [core.Iterable$(core.String)]);
125 path$.split = function(path) {
126 return path$.context.split(path);
127 };
128 dart.fn(path$.split, core.List$(core.String), [core.String]);
129 path$.normalize = function(path) {
130 return path$.context.normalize(path);
131 };
132 dart.fn(path$.normalize, core.String, [core.String]);
133 path$.relative = function(path, opts) {
134 let from = opts && 'from' in opts ? opts.from : null;
135 return path$.context.relative(path, {from: from});
136 };
137 dart.fn(path$.relative, core.String, [core.String], {from: core.String});
138 path$.isWithin = function(parent, child) {
139 return path$.context.isWithin(parent, child);
140 };
141 dart.fn(path$.isWithin, core.bool, [core.String, core.String]);
142 path$.withoutExtension = function(path) {
143 return path$.context.withoutExtension(path);
144 };
145 dart.fn(path$.withoutExtension, core.String, [core.String]);
146 path$.fromUri = function(uri) {
147 return path$.context.fromUri(uri);
148 };
149 dart.fn(path$.fromUri, core.String, [dart.dynamic]);
150 path$.toUri = function(path) {
151 return path$.context.toUri(path);
152 };
153 dart.fn(path$.toUri, core.Uri, [core.String]);
154 path$.prettyUri = function(uri) {
155 return path$.context.prettyUri(uri);
156 };
157 dart.fn(path$.prettyUri, core.String, [dart.dynamic]);
158 const _current = Symbol('_current');
159 const _parse = Symbol('_parse');
160 const _needsNormalization = Symbol('_needsNormalization');
161 const _isWithinFast = Symbol('_isWithinFast');
162 const _pathDirection = Symbol('_pathDirection');
163 src__context.Context = class Context extends core.Object {
164 static new(opts) {
165 let style = opts && 'style' in opts ? opts.style : null;
166 let current = opts && 'current' in opts ? opts.current : null;
167 if (current == null) {
168 if (style == null) {
169 current = path$.current;
170 } else {
171 current = ".";
172 }
173 }
174 if (style == null) {
175 style = src__style.Style.platform;
176 } else if (!dart.is(style, src__internal_style.InternalStyle)) {
177 dart.throw(new core.ArgumentError("Only styles defined by the path packa ge are " + "allowed."));
178 }
179 return new src__context.Context._(dart.as(style, src__internal_style.Inter nalStyle), current);
180 }
181 _internal() {
182 this.style = dart.as(src__style.Style.platform, src__internal_style.Intern alStyle);
183 this[_current] = null;
184 }
185 _(style, current) {
186 this.style = style;
187 this[_current] = current;
188 }
189 get current() {
190 return this[_current] != null ? this[_current] : path$.current;
191 }
192 get separator() {
193 return this.style.separator;
194 }
195 absolute(part1, part2, part3, part4, part5, part6, part7) {
196 if (part2 === void 0) part2 = null;
197 if (part3 === void 0) part3 = null;
198 if (part4 === void 0) part4 = null;
199 if (part5 === void 0) part5 = null;
200 if (part6 === void 0) part6 = null;
201 if (part7 === void 0) part7 = null;
202 src__context._validateArgList("absolute", dart.list([part1, part2, part3, part4, part5, part6, part7], core.String));
203 if (part2 == null && dart.notNull(this.isAbsolute(part1)) && !dart.notNull (this.isRootRelative(part1))) {
204 return part1;
205 }
206 return this.join(this.current, part1, part2, part3, part4, part5, part6, p art7);
207 }
208 basename(path) {
209 return this[_parse](path).basename;
210 }
211 basenameWithoutExtension(path) {
212 return this[_parse](path).basenameWithoutExtension;
213 }
214 dirname(path) {
215 let parsed = this[_parse](path);
216 parsed.removeTrailingSeparators();
217 if (dart.notNull(parsed.parts[dartx.isEmpty])) return parsed.root == null ? '.' : parsed.root;
218 if (parsed.parts[dartx.length] == 1) {
219 return parsed.root == null ? '.' : parsed.root;
220 }
221 parsed.parts[dartx.removeLast]();
222 parsed.separators[dartx.removeLast]();
223 parsed.removeTrailingSeparators();
224 return dart.toString(parsed);
225 }
226 extension(path) {
227 return this[_parse](path).extension;
228 }
229 rootPrefix(path) {
230 return path[dartx.substring](0, this.style.rootLength(path));
231 }
232 isAbsolute(path) {
233 return dart.notNull(this.style.rootLength(path)) > 0;
234 }
235 isRelative(path) {
236 return !dart.notNull(this.isAbsolute(path));
237 }
238 isRootRelative(path) {
239 return this.style.isRootRelative(path);
240 }
241 join(part1, part2, part3, part4, part5, part6, part7, part8) {
242 if (part2 === void 0) part2 = null;
243 if (part3 === void 0) part3 = null;
244 if (part4 === void 0) part4 = null;
245 if (part5 === void 0) part5 = null;
246 if (part6 === void 0) part6 = null;
247 if (part7 === void 0) part7 = null;
248 if (part8 === void 0) part8 = null;
249 let parts = dart.list([part1, part2, part3, part4, part5, part6, part7, pa rt8], core.String);
250 src__context._validateArgList("join", parts);
251 return this.joinAll(parts[dartx.where](dart.fn(part => part != null, core. bool, [core.String])));
252 }
253 joinAll(parts) {
254 let buffer = new core.StringBuffer();
255 let needsSeparator = false;
256 let isAbsoluteAndNotRootRelative = false;
257 for (let part of parts[dartx.where](dart.fn(part => part != '', core.bool, [core.String]))) {
258 if (dart.notNull(this.isRootRelative(part)) && isAbsoluteAndNotRootRelat ive) {
259 let parsed = this[_parse](part);
260 parsed.root = this.rootPrefix(buffer.toString());
261 if (dart.notNull(this.style.needsSeparator(parsed.root))) {
262 parsed.separators[dartx.set](0, this.style.separator);
263 }
264 buffer.clear();
265 buffer.write(dart.toString(parsed));
266 } else if (dart.notNull(this.isAbsolute(part))) {
267 isAbsoluteAndNotRootRelative = !dart.notNull(this.isRootRelative(part) );
268 buffer.clear();
269 buffer.write(part);
270 } else {
271 if (dart.notNull(part[dartx.length]) > 0 && dart.notNull(this.style.co ntainsSeparator(part[dartx.get](0)))) {
272 } else if (dart.notNull(needsSeparator)) {
273 buffer.write(this.separator);
274 }
275 buffer.write(part);
276 }
277 needsSeparator = this.style.needsSeparator(part);
278 }
279 return buffer.toString();
280 }
281 split(path) {
282 let parsed = this[_parse](path);
283 parsed.parts = parsed.parts[dartx.where](dart.fn(part => !dart.notNull(par t[dartx.isEmpty]), core.bool, [core.String]))[dartx.toList]();
284 if (parsed.root != null) parsed.parts[dartx.insert](0, parsed.root);
285 return parsed.parts;
286 }
287 normalize(path) {
288 if (!dart.notNull(this[_needsNormalization](path))) return path;
289 let parsed = this[_parse](path);
290 parsed.normalize();
291 return dart.toString(parsed);
292 }
293 [_needsNormalization](path) {
294 let start = 0;
295 let codeUnits = path[dartx.codeUnits];
296 let previousPrevious = null;
297 let previous = null;
298 let root = this.style.rootLength(path);
299 if (root != 0) {
300 start = root;
301 previous = src__characters.SLASH;
302 if (dart.equals(this.style, src__style.Style.windows)) {
303 for (let i = 0; i < dart.notNull(root); i++) {
304 if (codeUnits[dartx.get](i) == src__characters.SLASH) return true;
305 }
306 }
307 }
308 for (let i = start; dart.notNull(i) < dart.notNull(codeUnits[dartx.length] ); i = dart.notNull(i) + 1) {
309 let codeUnit = codeUnits[dartx.get](i);
310 if (dart.notNull(this.style.isSeparator(codeUnit))) {
311 if (dart.equals(this.style, src__style.Style.windows) && codeUnit == s rc__characters.SLASH) return true;
312 if (previous != null && dart.notNull(this.style.isSeparator(dart.as(pr evious, core.int)))) return true;
313 if (dart.equals(previous, src__characters.PERIOD) && (previousPrevious == null || dart.equals(previousPrevious, src__characters.PERIOD) || dart.notNul l(this.style.isSeparator(dart.as(previousPrevious, core.int))))) {
314 return true;
315 }
316 }
317 previousPrevious = previous;
318 previous = codeUnit;
319 }
320 if (previous == null) return true;
321 if (dart.notNull(this.style.isSeparator(dart.as(previous, core.int)))) ret urn true;
322 if (dart.equals(previous, src__characters.PERIOD) && (previousPrevious == null || dart.equals(previousPrevious, src__characters.SLASH) || dart.equals(prev iousPrevious, src__characters.PERIOD))) {
323 return true;
324 }
325 return false;
326 }
327 relative(path, opts) {
328 let from = opts && 'from' in opts ? opts.from : null;
329 if (from == null && dart.notNull(this.isRelative(path))) return this.norma lize(path);
330 from = from == null ? this.current : this.absolute(from);
331 if (dart.notNull(this.isRelative(from)) && dart.notNull(this.isAbsolute(pa th))) {
332 return this.normalize(path);
333 }
334 if (dart.notNull(this.isRelative(path)) || dart.notNull(this.isRootRelativ e(path))) {
335 path = this.absolute(path);
336 }
337 if (dart.notNull(this.isRelative(path)) && dart.notNull(this.isAbsolute(fr om))) {
338 dart.throw(new src__path_exception.PathException(`Unable to find a path to "${path}" from "${from}".`));
339 }
340 let fromParsed = this[_parse](from);
341 fromParsed.normalize();
342 let pathParsed = this[_parse](path);
343 pathParsed.normalize();
344 if (dart.notNull(fromParsed.parts[dartx.length]) > 0 && fromParsed.parts[d artx.get](0) == '.') {
345 return pathParsed.toString();
346 }
347 if (fromParsed.root != pathParsed.root && (fromParsed.root == null || path Parsed.root == null || fromParsed.root[dartx.toLowerCase]()[dartx.replaceAll]('/ ', '\\') != pathParsed.root[dartx.toLowerCase]()[dartx.replaceAll]('/', '\\'))) {
348 return pathParsed.toString();
349 }
350 while (dart.notNull(fromParsed.parts[dartx.length]) > 0 && dart.notNull(pa thParsed.parts[dartx.length]) > 0 && fromParsed.parts[dartx.get](0) == pathParse d.parts[dartx.get](0)) {
351 fromParsed.parts[dartx.removeAt](0);
352 fromParsed.separators[dartx.removeAt](1);
353 pathParsed.parts[dartx.removeAt](0);
354 pathParsed.separators[dartx.removeAt](1);
355 }
356 if (dart.notNull(fromParsed.parts[dartx.length]) > 0 && fromParsed.parts[d artx.get](0) == '..') {
357 dart.throw(new src__path_exception.PathException(`Unable to find a path to "${path}" from "${from}".`));
358 }
359 pathParsed.parts[dartx.insertAll](0, core.List$(core.String).filled(fromPa rsed.parts[dartx.length], '..'));
360 pathParsed.separators[dartx.set](0, '');
361 pathParsed.separators[dartx.insertAll](1, core.List$(core.String).filled(f romParsed.parts[dartx.length], this.style.separator));
362 if (pathParsed.parts[dartx.length] == 0) return '.';
363 if (dart.notNull(pathParsed.parts[dartx.length]) > 1 && pathParsed.parts[d artx.last] == '.') {
364 pathParsed.parts[dartx.removeLast]();
365 let _ = pathParsed.separators;
366 _[dartx.removeLast]();
367 _[dartx.removeLast]();
368 _[dartx.add]('');
369 }
370 pathParsed.root = '';
371 pathParsed.removeTrailingSeparators();
372 return pathParsed.toString();
373 }
374 isWithin(parent, child) {
375 let parentIsAbsolute = this.isAbsolute(parent);
376 let childIsAbsolute = this.isAbsolute(child);
377 if (dart.notNull(parentIsAbsolute) && !dart.notNull(childIsAbsolute)) {
378 child = this.absolute(child);
379 if (dart.notNull(this.style.isRootRelative(parent))) parent = this.absol ute(parent);
380 } else if (dart.notNull(childIsAbsolute) && !dart.notNull(parentIsAbsolute )) {
381 parent = this.absolute(parent);
382 if (dart.notNull(this.style.isRootRelative(child))) child = this.absolut e(child);
383 } else if (dart.notNull(childIsAbsolute) && dart.notNull(parentIsAbsolute) ) {
384 let childIsRootRelative = this.style.isRootRelative(child);
385 let parentIsRootRelative = this.style.isRootRelative(parent);
386 if (dart.notNull(childIsRootRelative) && !dart.notNull(parentIsRootRelat ive)) {
387 child = this.absolute(child);
388 } else if (dart.notNull(parentIsRootRelative) && !dart.notNull(childIsRo otRelative)) {
389 parent = this.absolute(parent);
390 }
391 }
392 let fastResult = this[_isWithinFast](parent, child);
393 if (fastResult != null) return fastResult;
394 let relative = null;
395 try {
396 relative = this.relative(child, {from: parent});
397 } catch (_) {
398 if (dart.is(_, src__path_exception.PathException)) {
399 return false;
400 } else
401 throw _;
402 }
403
404 let parts = this.split(dart.as(relative, core.String));
405 return dart.notNull(this.isRelative(dart.as(relative, core.String))) && pa rts[dartx.first] != '..' && parts[dartx.first] != '.';
406 }
407 [_isWithinFast](parent, child) {
408 if (parent == '.') parent = '';
409 let parentRootLength = this.style.rootLength(parent);
410 let childRootLength = this.style.rootLength(child);
411 if (parentRootLength != childRootLength) return false;
412 let parentCodeUnits = parent[dartx.codeUnits];
413 let childCodeUnits = child[dartx.codeUnits];
414 for (let i = 0; i < dart.notNull(parentRootLength); i++) {
415 let parentCodeUnit = parentCodeUnits[dartx.get](i);
416 let childCodeUnit = childCodeUnits[dartx.get](i);
417 if (parentCodeUnit == childCodeUnit) continue;
418 if (!dart.notNull(this.style.isSeparator(parentCodeUnit)) || !dart.notNu ll(this.style.isSeparator(childCodeUnit))) {
419 return false;
420 }
421 }
422 let lastCodeUnit = src__characters.SLASH;
423 let parentIndex = parentRootLength;
424 let childIndex = childRootLength;
425 while (dart.notNull(parentIndex) < dart.notNull(parent[dartx.length]) && d art.notNull(childIndex) < dart.notNull(child[dartx.length])) {
426 let parentCodeUnit = parentCodeUnits[dartx.get](parentIndex);
427 let childCodeUnit = childCodeUnits[dartx.get](childIndex);
428 if (parentCodeUnit == childCodeUnit) {
429 lastCodeUnit = parentCodeUnit;
430 parentIndex = dart.notNull(parentIndex) + 1;
431 childIndex = dart.notNull(childIndex) + 1;
432 continue;
433 }
434 let parentIsSeparator = this.style.isSeparator(parentCodeUnit);
435 let childIsSeparator = this.style.isSeparator(childCodeUnit);
436 if (dart.notNull(parentIsSeparator) && dart.notNull(childIsSeparator)) {
437 lastCodeUnit = parentCodeUnit;
438 parentIndex = dart.notNull(parentIndex) + 1;
439 childIndex = dart.notNull(childIndex) + 1;
440 continue;
441 }
442 if (dart.notNull(parentIsSeparator) && dart.notNull(this.style.isSeparat or(lastCodeUnit))) {
443 parentIndex = dart.notNull(parentIndex) + 1;
444 continue;
445 } else if (dart.notNull(childIsSeparator) && dart.notNull(this.style.isS eparator(lastCodeUnit))) {
446 childIndex = dart.notNull(childIndex) + 1;
447 continue;
448 }
449 if (parentCodeUnit == src__characters.PERIOD) {
450 if (dart.notNull(this.style.isSeparator(lastCodeUnit))) {
451 parentIndex = dart.notNull(parentIndex) + 1;
452 if (parentIndex == parent[dartx.length]) break;
453 parentCodeUnit = parentCodeUnits[dartx.get](parentIndex);
454 if (dart.notNull(this.style.isSeparator(parentCodeUnit))) {
455 parentIndex = dart.notNull(parentIndex) + 1;
456 continue;
457 }
458 if (parentCodeUnit == src__characters.PERIOD) {
459 parentIndex = dart.notNull(parentIndex) + 1;
460 if (parentIndex == parent[dartx.length] || dart.notNull(this.style .isSeparator(parentCodeUnits[dartx.get](parentIndex)))) {
461 return null;
462 }
463 }
464 }
465 }
466 if (childCodeUnit == src__characters.PERIOD) {
467 if (dart.notNull(this.style.isSeparator(lastCodeUnit))) {
468 childIndex = dart.notNull(childIndex) + 1;
469 if (childIndex == child[dartx.length]) break;
470 childCodeUnit = childCodeUnits[dartx.get](childIndex);
471 if (dart.notNull(this.style.isSeparator(childCodeUnit))) {
472 childIndex = dart.notNull(childIndex) + 1;
473 continue;
474 }
475 if (childCodeUnit == src__characters.PERIOD) {
476 childIndex = dart.notNull(childIndex) + 1;
477 if (childIndex == child[dartx.length] || dart.notNull(this.style.i sSeparator(childCodeUnits[dartx.get](childIndex)))) {
478 return null;
479 }
480 }
481 }
482 }
483 let childDirection = this[_pathDirection](childCodeUnits, childIndex);
484 if (!dart.equals(childDirection, src__context._PathDirection.belowRoot)) return null;
485 let parentDirection = this[_pathDirection](parentCodeUnits, parentIndex) ;
486 if (!dart.equals(parentDirection, src__context._PathDirection.belowRoot) ) return null;
487 return false;
488 }
489 if (childIndex == child[dartx.length]) {
490 let direction = this[_pathDirection](parentCodeUnits, parentIndex);
491 return dart.equals(direction, src__context._PathDirection.aboveRoot) ? n ull : false;
492 }
493 let direction = this[_pathDirection](childCodeUnits, childIndex);
494 if (dart.equals(direction, src__context._PathDirection.atRoot)) return fal se;
495 if (dart.equals(direction, src__context._PathDirection.aboveRoot)) return null;
496 return dart.notNull(this.style.isSeparator(childCodeUnits[dartx.get](child Index))) || dart.notNull(this.style.isSeparator(lastCodeUnit));
497 }
498 [_pathDirection](codeUnits, index) {
499 let depth = 0;
500 let reachedRoot = false;
501 let i = index;
502 while (dart.notNull(i) < dart.notNull(codeUnits[dartx.length])) {
503 while (dart.notNull(i) < dart.notNull(codeUnits[dartx.length]) && dart.n otNull(this.style.isSeparator(codeUnits[dartx.get](i)))) {
504 i = dart.notNull(i) + 1;
505 }
506 if (i == codeUnits[dartx.length]) break;
507 let start = i;
508 while (dart.notNull(i) < dart.notNull(codeUnits[dartx.length]) && !dart. notNull(this.style.isSeparator(codeUnits[dartx.get](i)))) {
509 i = dart.notNull(i) + 1;
510 }
511 if (dart.notNull(i) - dart.notNull(start) == 1 && codeUnits[dartx.get](s tart) == src__characters.PERIOD) {
512 } else if (dart.notNull(i) - dart.notNull(start) == 2 && codeUnits[dartx .get](start) == src__characters.PERIOD && codeUnits[dartx.get](dart.notNull(star t) + 1) == src__characters.PERIOD) {
513 depth--;
514 if (depth < 0) break;
515 if (depth == 0) reachedRoot = true;
516 } else {
517 depth++;
518 }
519 if (i == codeUnits[dartx.length]) break;
520 i = dart.notNull(i) + 1;
521 }
522 if (depth < 0) return src__context._PathDirection.aboveRoot;
523 if (depth == 0) return src__context._PathDirection.atRoot;
524 if (reachedRoot) return src__context._PathDirection.reachesRoot;
525 return src__context._PathDirection.belowRoot;
526 }
527 withoutExtension(path) {
528 let parsed = this[_parse](path);
529 for (let i = dart.notNull(parsed.parts[dartx.length]) - 1; i >= 0; i--) {
530 if (!dart.notNull(parsed.parts[dartx.get](i)[dartx.isEmpty])) {
531 parsed.parts[dartx.set](i, parsed.basenameWithoutExtension);
532 break;
533 }
534 }
535 return dart.toString(parsed);
536 }
537 fromUri(uri) {
538 if (typeof uri == 'string') uri = core.Uri.parse(dart.as(uri, core.String) );
539 return this.style.pathFromUri(dart.as(uri, core.Uri));
540 }
541 toUri(path) {
542 if (dart.notNull(this.isRelative(path))) {
543 return this.style.relativePathToUri(path);
544 } else {
545 return this.style.absolutePathToUri(this.join(this.current, path));
546 }
547 }
548 prettyUri(uri) {
549 if (typeof uri == 'string') uri = core.Uri.parse(dart.as(uri, core.String) );
550 if (dart.equals(dart.dload(uri, 'scheme'), 'file') && dart.equals(this.sty le, src__style.Style.url)) return dart.toString(uri);
551 if (!dart.equals(dart.dload(uri, 'scheme'), 'file') && !dart.equals(dart.d load(uri, 'scheme'), '') && !dart.equals(this.style, src__style.Style.url)) {
552 return dart.toString(uri);
553 }
554 let path = this.normalize(this.fromUri(uri));
555 let rel = this.relative(path);
556 return dart.notNull(this.split(rel)[dartx.length]) > dart.notNull(this.spl it(path)[dartx.length]) ? path : rel;
557 }
558 [_parse](path) {
559 return src__parsed_path.ParsedPath.parse(path, this.style);
560 }
561 };
562 dart.defineNamedConstructor(src__context.Context, '_internal');
563 dart.defineNamedConstructor(src__context.Context, '_');
564 dart.setSignature(src__context.Context, {
565 constructors: () => ({
566 new: [src__context.Context, [], {style: src__style.Style, current: core.St ring}],
567 _internal: [src__context.Context, []],
568 _: [src__context.Context, [src__internal_style.InternalStyle, core.String] ]
569 }),
570 methods: () => ({
571 absolute: [core.String, [core.String], [core.String, core.String, core.Str ing, core.String, core.String, core.String]],
572 basename: [core.String, [core.String]],
573 basenameWithoutExtension: [core.String, [core.String]],
574 dirname: [core.String, [core.String]],
575 extension: [core.String, [core.String]],
576 rootPrefix: [core.String, [core.String]],
577 isAbsolute: [core.bool, [core.String]],
578 isRelative: [core.bool, [core.String]],
579 isRootRelative: [core.bool, [core.String]],
580 join: [core.String, [core.String], [core.String, core.String, core.String, core.String, core.String, core.String, core.String]],
581 joinAll: [core.String, [core.Iterable$(core.String)]],
582 split: [core.List$(core.String), [core.String]],
583 normalize: [core.String, [core.String]],
584 [_needsNormalization]: [core.bool, [core.String]],
585 relative: [core.String, [core.String], {from: core.String}],
586 isWithin: [core.bool, [core.String, core.String]],
587 [_isWithinFast]: [core.bool, [core.String, core.String]],
588 [_pathDirection]: [src__context._PathDirection, [core.List$(core.int), cor e.int]],
589 withoutExtension: [core.String, [core.String]],
590 fromUri: [core.String, [dart.dynamic]],
591 toUri: [core.Uri, [core.String]],
592 prettyUri: [core.String, [dart.dynamic]],
593 [_parse]: [src__parsed_path.ParsedPath, [core.String]]
594 })
595 });
596 path$.Context = src__context.Context;
597 src__path_exception.PathException = class PathException extends core.Object {
598 PathException(message) {
599 this.message = message;
600 }
601 toString() {
602 return `PathException: ${this.message}`;
603 }
604 };
605 src__path_exception.PathException[dart.implements] = () => [core.Exception];
606 dart.setSignature(src__path_exception.PathException, {
607 constructors: () => ({PathException: [src__path_exception.PathException, [co re.String]]})
608 });
609 path$.PathException = src__path_exception.PathException;
610 src__style.Style = class Style extends core.Object {
611 static _getPlatformStyle() {
612 if (core.Uri.base.scheme != 'file') return src__style.Style.url;
613 if (!dart.notNull(core.Uri.base.path[dartx.endsWith]('/'))) return src__st yle.Style.url;
614 if (core.Uri.new({path: 'a/b'}).toFilePath() == 'a\\b') return src__style. Style.windows;
615 return src__style.Style.posix;
616 }
617 get context() {
618 return src__context.Context.new({style: this});
619 }
620 toString() {
621 return this.name;
622 }
623 };
624 dart.setSignature(src__style.Style, {
625 statics: () => ({_getPlatformStyle: [src__style.Style, []]}),
626 names: ['_getPlatformStyle']
627 });
628 dart.defineLazy(src__style.Style, {
629 get posix() {
630 return new src__style__posix.PosixStyle();
631 },
632 get windows() {
633 return new src__style__windows.WindowsStyle();
634 },
635 get url() {
636 return new src__style__url.UrlStyle();
637 },
638 get platform() {
639 return src__style.Style._getPlatformStyle();
640 }
641 });
642 path$.Style = src__style.Style;
643 src__context.createInternal = function() {
644 return new src__context.Context._internal();
645 };
646 dart.fn(src__context.createInternal, src__context.Context, []);
647 src__context._validateArgList = function(method, args) {
648 for (let i = 1; i < dart.notNull(args[dartx.length]); i++) {
649 if (args[dartx.get](i) == null || args[dartx.get](i - 1) != null) continue ;
650 let numArgs = null;
651 for (numArgs = args[dartx.length]; dart.notNull(dart.as(dart.dsend(numArgs , '>=', 1), core.bool)); numArgs = dart.dsend(numArgs, '-', 1)) {
652 if (args[dartx.get](dart.as(dart.dsend(numArgs, '-', 1), core.int)) != n ull) break;
653 }
654 let message = new core.StringBuffer();
655 message.write(`${method}(`);
656 message.write(args[dartx.take](dart.as(numArgs, core.int))[dartx.map](core .String)(dart.fn(arg => arg == null ? "null" : `"${arg}"`, core.String, [core.St ring]))[dartx.join](", "));
657 message.write(`): part ${i - 1} was null, but part ${i} was not.`);
658 dart.throw(new core.ArgumentError(message.toString()));
659 }
660 };
661 dart.fn(src__context._validateArgList, dart.dynamic, [core.String, core.List$( core.String)]);
662 src__context._PathDirection = class _PathDirection extends core.Object {
663 _PathDirection(name) {
664 this.name = name;
665 }
666 toString() {
667 return this.name;
668 }
669 };
670 dart.setSignature(src__context._PathDirection, {
671 constructors: () => ({_PathDirection: [src__context._PathDirection, [core.St ring]]})
672 });
673 dart.defineLazy(src__context._PathDirection, {
674 get aboveRoot() {
675 return dart.const(new src__context._PathDirection("above root"));
676 },
677 get atRoot() {
678 return dart.const(new src__context._PathDirection("at root"));
679 },
680 get reachesRoot() {
681 return dart.const(new src__context._PathDirection("reaches root"));
682 },
683 get belowRoot() {
684 return dart.const(new src__context._PathDirection("below root"));
685 }
686 });
687 src__internal_style.InternalStyle = class InternalStyle extends src__style.Sty le {
688 getRoot(path) {
689 let length = this.rootLength(path);
690 if (dart.notNull(length) > 0) return path[dartx.substring](0, length);
691 return dart.notNull(this.isRootRelative(path)) ? path[dartx.get](0) : null ;
692 }
693 relativePathToUri(path) {
694 let segments = this.context.split(path);
695 if (dart.notNull(this.isSeparator(path[dartx.codeUnitAt](dart.notNull(path [dartx.length]) - 1)))) segments[dartx.add]('');
696 return core.Uri.new({pathSegments: segments});
697 }
698 };
699 dart.setSignature(src__internal_style.InternalStyle, {
700 methods: () => ({
701 getRoot: [core.String, [core.String]],
702 relativePathToUri: [core.Uri, [core.String]]
703 })
704 });
705 src__style__posix.PosixStyle = class PosixStyle extends src__internal_style.In ternalStyle {
706 PosixStyle() {
707 this.separatorPattern = core.RegExp.new('/');
708 this.needsSeparatorPattern = core.RegExp.new('[^/]$');
709 this.rootPattern = core.RegExp.new('^/');
710 this.name = 'posix';
711 this.separator = '/';
712 this.separators = dart.const(dart.list(['/'], core.String));
713 this.relativeRootPattern = null;
714 }
715 containsSeparator(path) {
716 return path[dartx.contains]('/');
717 }
718 isSeparator(codeUnit) {
719 return codeUnit == src__characters.SLASH;
720 }
721 needsSeparator(path) {
722 return dart.notNull(path[dartx.isNotEmpty]) && !dart.notNull(this.isSepara tor(path[dartx.codeUnitAt](dart.notNull(path[dartx.length]) - 1)));
723 }
724 rootLength(path) {
725 if (dart.notNull(path[dartx.isNotEmpty]) && dart.notNull(this.isSeparator( path[dartx.codeUnitAt](0)))) return 1;
726 return 0;
727 }
728 isRootRelative(path) {
729 return false;
730 }
731 getRelativeRoot(path) {
732 return null;
733 }
734 pathFromUri(uri) {
735 if (uri.scheme == '' || uri.scheme == 'file') {
736 return core.Uri.decodeComponent(uri.path);
737 }
738 dart.throw(new core.ArgumentError(`Uri ${uri} must have scheme 'file:'.`)) ;
739 }
740 absolutePathToUri(path) {
741 let parsed = src__parsed_path.ParsedPath.parse(path, this);
742 if (dart.notNull(parsed.parts[dartx.isEmpty])) {
743 parsed.parts[dartx.addAll](dart.list(["", ""], core.String));
744 } else if (dart.notNull(parsed.hasTrailingSeparator)) {
745 parsed.parts[dartx.add]("");
746 }
747 return core.Uri.new({scheme: 'file', pathSegments: parsed.parts});
748 }
749 };
750 dart.setSignature(src__style__posix.PosixStyle, {
751 constructors: () => ({PosixStyle: [src__style__posix.PosixStyle, []]}),
752 methods: () => ({
753 containsSeparator: [core.bool, [core.String]],
754 isSeparator: [core.bool, [core.int]],
755 needsSeparator: [core.bool, [core.String]],
756 rootLength: [core.int, [core.String]],
757 isRootRelative: [core.bool, [core.String]],
758 getRelativeRoot: [core.String, [core.String]],
759 pathFromUri: [core.String, [core.Uri]],
760 absolutePathToUri: [core.Uri, [core.String]]
761 })
762 });
763 src__style__url.UrlStyle = class UrlStyle extends src__internal_style.Internal Style {
764 UrlStyle() {
765 this.separatorPattern = core.RegExp.new('/');
766 this.needsSeparatorPattern = core.RegExp.new("(^[a-zA-Z][-+.a-zA-Z\\d]*:// |[^/])$");
767 this.rootPattern = core.RegExp.new("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*");
768 this.relativeRootPattern = core.RegExp.new("^/");
769 this.name = 'url';
770 this.separator = '/';
771 this.separators = dart.const(dart.list(['/'], core.String));
772 }
773 containsSeparator(path) {
774 return path[dartx.contains]('/');
775 }
776 isSeparator(codeUnit) {
777 return codeUnit == src__characters.SLASH;
778 }
779 needsSeparator(path) {
780 if (dart.notNull(path[dartx.isEmpty])) return false;
781 if (!dart.notNull(this.isSeparator(path[dartx.codeUnitAt](dart.notNull(pat h[dartx.length]) - 1)))) return true;
782 return dart.notNull(path[dartx.endsWith]("://")) && this.rootLength(path) == path[dartx.length];
783 }
784 rootLength(path) {
785 if (dart.notNull(path[dartx.isEmpty])) return 0;
786 if (dart.notNull(this.isSeparator(path[dartx.codeUnitAt](0)))) return 1;
787 let index = path[dartx.indexOf]("/");
788 if (dart.notNull(index) > 0 && dart.notNull(path[dartx.startsWith]('://', dart.notNull(index) - 1))) {
789 index = path[dartx.indexOf]('/', dart.notNull(index) + 2);
790 if (dart.notNull(index) > 0) return index;
791 return path[dartx.length];
792 }
793 return 0;
794 }
795 isRootRelative(path) {
796 return dart.notNull(path[dartx.isNotEmpty]) && dart.notNull(this.isSeparat or(path[dartx.codeUnitAt](0)));
797 }
798 getRelativeRoot(path) {
799 return dart.notNull(this.isRootRelative(path)) ? '/' : null;
800 }
801 pathFromUri(uri) {
802 return dart.toString(uri);
803 }
804 relativePathToUri(path) {
805 return core.Uri.parse(path);
806 }
807 absolutePathToUri(path) {
808 return core.Uri.parse(path);
809 }
810 };
811 dart.setSignature(src__style__url.UrlStyle, {
812 constructors: () => ({UrlStyle: [src__style__url.UrlStyle, []]}),
813 methods: () => ({
814 containsSeparator: [core.bool, [core.String]],
815 isSeparator: [core.bool, [core.int]],
816 needsSeparator: [core.bool, [core.String]],
817 rootLength: [core.int, [core.String]],
818 isRootRelative: [core.bool, [core.String]],
819 getRelativeRoot: [core.String, [core.String]],
820 pathFromUri: [core.String, [core.Uri]],
821 absolutePathToUri: [core.Uri, [core.String]]
822 })
823 });
824 src__style__windows.WindowsStyle = class WindowsStyle extends src__internal_st yle.InternalStyle {
825 WindowsStyle() {
826 this.separatorPattern = core.RegExp.new('[/\\\\]');
827 this.needsSeparatorPattern = core.RegExp.new('[^/\\\\]$');
828 this.rootPattern = core.RegExp.new('^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA- Z]:[/\\\\])');
829 this.relativeRootPattern = core.RegExp.new("^[/\\\\](?![/\\\\])");
830 this.name = 'windows';
831 this.separator = '\\';
832 this.separators = dart.const(dart.list(['/', '\\'], core.String));
833 }
834 containsSeparator(path) {
835 return path[dartx.contains]('/');
836 }
837 isSeparator(codeUnit) {
838 return codeUnit == src__characters.SLASH || codeUnit == src__characters.BA CKSLASH;
839 }
840 needsSeparator(path) {
841 if (dart.notNull(path[dartx.isEmpty])) return false;
842 return !dart.notNull(this.isSeparator(path[dartx.codeUnitAt](dart.notNull( path[dartx.length]) - 1)));
843 }
844 rootLength(path) {
845 if (dart.notNull(path[dartx.isEmpty])) return 0;
846 if (path[dartx.codeUnitAt](0) == src__characters.SLASH) return 1;
847 if (path[dartx.codeUnitAt](0) == src__characters.BACKSLASH) {
848 if (dart.notNull(path[dartx.length]) < 2 || path[dartx.codeUnitAt](1) != src__characters.BACKSLASH) return 1;
849 let index = path[dartx.indexOf]('\\', 2);
850 if (dart.notNull(index) > 0) {
851 index = path[dartx.indexOf]('\\', dart.notNull(index) + 1);
852 if (dart.notNull(index) > 0) return index;
853 }
854 return path[dartx.length];
855 }
856 if (dart.notNull(path[dartx.length]) < 3) return 0;
857 if (!dart.notNull(src__utils.isAlphabetic(path[dartx.codeUnitAt](0)))) ret urn 0;
858 if (path[dartx.codeUnitAt](1) != src__characters.COLON) return 0;
859 if (!dart.notNull(this.isSeparator(path[dartx.codeUnitAt](2)))) return 0;
860 return 3;
861 }
862 isRootRelative(path) {
863 return this.rootLength(path) == 1;
864 }
865 getRelativeRoot(path) {
866 let length = this.rootLength(path);
867 if (length == 1) return path[dartx.get](0);
868 return null;
869 }
870 pathFromUri(uri) {
871 if (uri.scheme != '' && uri.scheme != 'file') {
872 dart.throw(new core.ArgumentError(`Uri ${uri} must have scheme 'file:'.` ));
873 }
874 let path = uri.path;
875 if (uri.host == '') {
876 if (dart.notNull(path[dartx.startsWith]('/'))) path = path[dartx.replace First]("/", "");
877 } else {
878 path = `\\\\${uri.host}${path}`;
879 }
880 return core.Uri.decodeComponent(path[dartx.replaceAll]("/", "\\"));
881 }
882 absolutePathToUri(path) {
883 let parsed = src__parsed_path.ParsedPath.parse(path, this);
884 if (dart.notNull(parsed.root[dartx.startsWith]('\\\\'))) {
885 let rootParts = parsed.root[dartx.split]('\\')[dartx.where](dart.fn(part => part != '', core.bool, [core.String]));
886 parsed.parts[dartx.insert](0, rootParts[dartx.last]);
887 if (dart.notNull(parsed.hasTrailingSeparator)) {
888 parsed.parts[dartx.add]("");
889 }
890 return core.Uri.new({scheme: 'file', host: rootParts[dartx.first], pathS egments: parsed.parts});
891 } else {
892 if (parsed.parts[dartx.length] == 0 || dart.notNull(parsed.hasTrailingSe parator)) {
893 parsed.parts[dartx.add]("");
894 }
895 parsed.parts[dartx.insert](0, parsed.root[dartx.replaceAll]("/", "")[dar tx.replaceAll]("\\", ""));
896 return core.Uri.new({scheme: 'file', pathSegments: parsed.parts});
897 }
898 }
899 };
900 dart.setSignature(src__style__windows.WindowsStyle, {
901 constructors: () => ({WindowsStyle: [src__style__windows.WindowsStyle, []]}) ,
902 methods: () => ({
903 containsSeparator: [core.bool, [core.String]],
904 isSeparator: [core.bool, [core.int]],
905 needsSeparator: [core.bool, [core.String]],
906 rootLength: [core.int, [core.String]],
907 isRootRelative: [core.bool, [core.String]],
908 getRelativeRoot: [core.String, [core.String]],
909 pathFromUri: [core.String, [core.Uri]],
910 absolutePathToUri: [core.Uri, [core.String]]
911 })
912 });
913 src__utils.isAlphabetic = function(char) {
914 return dart.notNull(char) >= dart.notNull(src__characters.UPPER_A) && dart.n otNull(char) <= dart.notNull(src__characters.UPPER_Z) || dart.notNull(char) >= d art.notNull(src__characters.LOWER_A) && dart.notNull(char) <= dart.notNull(src__ characters.LOWER_Z);
915 };
916 dart.fn(src__utils.isAlphabetic, core.bool, [core.int]);
917 src__utils.isNumeric = function(char) {
918 return dart.notNull(char) >= dart.notNull(src__characters.ZERO) && dart.notN ull(char) <= dart.notNull(src__characters.NINE);
919 };
920 dart.fn(src__utils.isNumeric, core.bool, [core.int]);
921 src__characters.PLUS = 43;
922 src__characters.MINUS = 45;
923 src__characters.PERIOD = 46;
924 src__characters.SLASH = 47;
925 src__characters.ZERO = 48;
926 src__characters.NINE = 57;
927 src__characters.COLON = 58;
928 src__characters.UPPER_A = 65;
929 src__characters.UPPER_Z = 90;
930 src__characters.LOWER_A = 97;
931 src__characters.LOWER_Z = 122;
932 src__characters.BACKSLASH = 92;
933 const _splitExtension = Symbol('_splitExtension');
934 src__parsed_path.ParsedPath = class ParsedPath extends core.Object {
935 get extension() {
936 return this[_splitExtension]()[dartx.get](1);
937 }
938 get isAbsolute() {
939 return this.root != null;
940 }
941 static parse(path, style) {
942 let root = style.getRoot(path);
943 let isRootRelative = style.isRootRelative(path);
944 if (root != null) path = path[dartx.substring](root[dartx.length]);
945 let parts = dart.list([], core.String);
946 let separators = dart.list([], core.String);
947 let start = 0;
948 if (dart.notNull(path[dartx.isNotEmpty]) && dart.notNull(style.isSeparator (path[dartx.codeUnitAt](0)))) {
949 separators[dartx.add](path[dartx.get](0));
950 start = 1;
951 } else {
952 separators[dartx.add]('');
953 }
954 for (let i = start; i < dart.notNull(path[dartx.length]); i++) {
955 if (dart.notNull(style.isSeparator(path[dartx.codeUnitAt](i)))) {
956 parts[dartx.add](path[dartx.substring](start, i));
957 separators[dartx.add](path[dartx.get](i));
958 start = i + 1;
959 }
960 }
961 if (start < dart.notNull(path[dartx.length])) {
962 parts[dartx.add](path[dartx.substring](start));
963 separators[dartx.add]('');
964 }
965 return new src__parsed_path.ParsedPath._(style, root, isRootRelative, part s, separators);
966 }
967 _(style, root, isRootRelative, parts, separators) {
968 this.style = style;
969 this.root = root;
970 this.isRootRelative = isRootRelative;
971 this.parts = parts;
972 this.separators = separators;
973 }
974 get basename() {
975 let copy = this.clone();
976 copy.removeTrailingSeparators();
977 if (dart.notNull(copy.parts[dartx.isEmpty])) return this.root == null ? '' : this.root;
978 return copy.parts[dartx.last];
979 }
980 get basenameWithoutExtension() {
981 return this[_splitExtension]()[dartx.get](0);
982 }
983 get hasTrailingSeparator() {
984 return !dart.notNull(this.parts[dartx.isEmpty]) && (this.parts[dartx.last] == '' || this.separators[dartx.last] != '');
985 }
986 removeTrailingSeparators() {
987 while (!dart.notNull(this.parts[dartx.isEmpty]) && this.parts[dartx.last] == '') {
988 this.parts[dartx.removeLast]();
989 this.separators[dartx.removeLast]();
990 }
991 if (dart.notNull(this.separators[dartx.length]) > 0) this.separators[dartx .set](dart.notNull(this.separators[dartx.length]) - 1, '');
992 }
993 normalize() {
994 let leadingDoubles = 0;
995 let newParts = dart.list([], core.String);
996 for (let part of this.parts) {
997 if (part == '.' || part == '') {
998 } else if (part == '..') {
999 if (dart.notNull(newParts[dartx.length]) > 0) {
1000 newParts[dartx.removeLast]();
1001 } else {
1002 leadingDoubles++;
1003 }
1004 } else {
1005 newParts[dartx.add](part);
1006 }
1007 }
1008 if (!dart.notNull(this.isAbsolute)) {
1009 newParts[dartx.insertAll](0, core.List$(core.String).filled(leadingDoubl es, '..'));
1010 }
1011 if (newParts[dartx.length] == 0 && !dart.notNull(this.isAbsolute)) {
1012 newParts[dartx.add]('.');
1013 }
1014 let newSeparators = core.List$(core.String).generate(newParts[dartx.length ], dart.fn(_ => this.style.separator, core.String, [core.int]), {growable: true} );
1015 newSeparators[dartx.insert](0, dart.notNull(this.isAbsolute) && dart.notNu ll(newParts[dartx.length]) > 0 && dart.notNull(this.style.needsSeparator(this.ro ot)) ? this.style.separator : '');
1016 this.parts = newParts;
1017 this.separators = newSeparators;
1018 if (this.root != null && dart.equals(this.style, src__style.Style.windows) ) {
1019 this.root = this.root[dartx.replaceAll]('/', '\\');
1020 }
1021 this.removeTrailingSeparators();
1022 }
1023 toString() {
1024 let builder = new core.StringBuffer();
1025 if (this.root != null) builder.write(this.root);
1026 for (let i = 0; i < dart.notNull(this.parts[dartx.length]); i++) {
1027 builder.write(this.separators[dartx.get](i));
1028 builder.write(this.parts[dartx.get](i));
1029 }
1030 builder.write(this.separators[dartx.last]);
1031 return builder.toString();
1032 }
1033 [_splitExtension]() {
1034 let file = this.parts[dartx.lastWhere](dart.fn(p => p != '', core.bool, [c ore.String]), {orElse: dart.fn(() => null, core.String, [])});
1035 if (file == null) return dart.list(['', ''], core.String);
1036 if (file == '..') return dart.list(['..', ''], core.String);
1037 let lastDot = file[dartx.lastIndexOf]('.');
1038 if (dart.notNull(lastDot) <= 0) return dart.list([file, ''], core.String);
1039 return dart.list([file[dartx.substring](0, lastDot), file[dartx.substring] (lastDot)], core.String);
1040 }
1041 clone() {
1042 return new src__parsed_path.ParsedPath._(this.style, this.root, this.isRoo tRelative, core.List$(core.String).from(this.parts), core.List$(core.String).fro m(this.separators));
1043 }
1044 };
1045 dart.defineNamedConstructor(src__parsed_path.ParsedPath, '_');
1046 dart.setSignature(src__parsed_path.ParsedPath, {
1047 constructors: () => ({
1048 parse: [src__parsed_path.ParsedPath, [core.String, src__internal_style.Int ernalStyle]],
1049 _: [src__parsed_path.ParsedPath, [src__internal_style.InternalStyle, core. String, core.bool, core.List$(core.String), core.List$(core.String)]]
1050 }),
1051 methods: () => ({
1052 removeTrailingSeparators: [dart.void, []],
1053 normalize: [dart.void, []],
1054 [_splitExtension]: [core.List$(core.String), []],
1055 clone: [src__parsed_path.ParsedPath, []]
1056 })
1057 });
1058 // Exports:
1059 exports.path = path$;
1060 exports.src__context = src__context;
1061 exports.src__style = src__style;
1062 exports.src__style__posix = src__style__posix;
1063 exports.src__style__url = src__style__url;
1064 exports.src__style__windows = src__style__windows;
1065 exports.src__utils = src__utils;
1066 exports.src__characters = src__characters;
1067 exports.src__parsed_path = src__parsed_path;
1068 exports.src__path_exception = src__path_exception;
1069 exports.src__internal_style = src__internal_style;
1070 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698