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