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

Side by Side Diff: sdk/lib/io/file_system_entity.dart

Issue 26001002: dart:io | Add FileSystemEntity.parent, make File.directory call it. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix type error on previous CL. Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/file_impl.dart ('k') | sdk/lib/io/http_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.io; 5 part of dart.io;
6 6
7 class FileSystemEntityType { 7 class FileSystemEntityType {
8 static const FILE = const FileSystemEntityType._internal(0); 8 static const FILE = const FileSystemEntityType._internal(0);
9 static const DIRECTORY = const FileSystemEntityType._internal(1); 9 static const DIRECTORY = const FileSystemEntityType._internal(1);
10 static const LINK = const FileSystemEntityType._internal(2); 10 static const LINK = const FileSystemEntityType._internal(2);
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 * Synchronously checks if typeSync(path) returns 523 * Synchronously checks if typeSync(path) returns
524 * FileSystemEntityType.DIRECTORY. 524 * FileSystemEntityType.DIRECTORY.
525 */ 525 */
526 static bool isDirectorySync(String path) => 526 static bool isDirectorySync(String path) =>
527 (_getTypeSync(path, true) == FileSystemEntityType.DIRECTORY._type); 527 (_getTypeSync(path, true) == FileSystemEntityType.DIRECTORY._type);
528 528
529 external static _getType(String path, bool followLinks); 529 external static _getType(String path, bool followLinks);
530 external static _identical(String path1, String path2); 530 external static _identical(String path1, String path2);
531 external static _resolveSymbolicLinks(String path); 531 external static _resolveSymbolicLinks(String path);
532 532
533 /**
534 * The directory containing [this]. If [this] is a root
535 * directory, returns [this].
536 */
537 Directory get parent {
Søren Gjesse 2013/10/04 12:20:16 How about return new Directory(new Uri.file(path)
Bill Hesse 2013/10/04 12:41:06 This will not give the desired result, since it wi
538 if (Platform.isWindows) {
539 int rootEnd = -1;
540 if (path.startsWith(_absoluteWindowsPathPattern)) {
541 // Root ends at first / or \ after the first two characters.
542 rootEnd = path.indexOf(new RegExp(r'[/\\]'), 2);
543 if (rootEnd == -1) return new Directory(path);
544 }
545 // Ignore trailing slashes - find a slash followed by a non-slash.
546 int pos = path.lastIndexOf(new RegExp(r'[/\\][^/\\]'));
547 if (pos <= rootEnd) {
548 if (rootEnd == -1) {
549 return new Directory('.');
550 } else {
551 return new Directory(path.substring(0, rootEnd + 1));
552 }
553 }
554 while (pos > rootEnd + 1 &&
555 (path[pos - 1] == '\\' || path[pos - 1] == '/')) {
556 pos--;
557 }
558 return new Directory(path.substring(0, pos));
559 } else {
560 // Ignore trailing slashes - find a slash followed by a non-slash.
561 int pos = path.lastIndexOf(new RegExp(r'/[^/]'));
562 if (pos < 0) return new Directory('.');
563 while (pos > 0 && path[pos - 1] == '/') --pos;
564 if (pos == 0) return new Directory('/');
565 return new Directory(path.substring(0, pos));
566 }
567 }
568
533 static int _getTypeSync(String path, bool followLinks) { 569 static int _getTypeSync(String path, bool followLinks) {
534 var result = _getType(path, followLinks); 570 var result = _getType(path, followLinks);
535 _throwIfError(result, 'Error getting type of FileSystemEntity'); 571 _throwIfError(result, 'Error getting type of FileSystemEntity');
536 return result; 572 return result;
537 } 573 }
538 574
539 static Future<int> _getTypeAsync(String path, bool followLinks) { 575 static Future<int> _getTypeAsync(String path, bool followLinks) {
540 return _IOService.dispatch(_FILE_TYPE, [path, followLinks]).then((response) { 576 return _IOService.dispatch(_FILE_TYPE, [path, followLinks])
541 if (_isErrorResponse(response)) { 577 .then((response) {
542 throw _exceptionFromResponse(response, "Error getting type", path); 578 if (_isErrorResponse(response)) {
543 } 579 throw _exceptionFromResponse(response, "Error getting type", path);
544 return response; 580 }
545 }); 581 return response;
582 });
546 } 583 }
547 584
548 static _throwIfError(Object result, String msg, [String path]) { 585 static _throwIfError(Object result, String msg, [String path]) {
549 if (result is OSError) { 586 if (result is OSError) {
550 throw new FileException(msg, path, result); 587 throw new FileException(msg, path, result);
551 } else if (result is ArgumentError) { 588 } else if (result is ArgumentError) {
552 throw result; 589 throw result;
553 } 590 }
554 } 591 }
555 592
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 } 698 }
662 } 699 }
663 700
664 701
665 abstract class _FileSystemWatcher { 702 abstract class _FileSystemWatcher {
666 external factory _FileSystemWatcher(String path, int events, bool recursive); 703 external factory _FileSystemWatcher(String path, int events, bool recursive);
667 external static bool get isSupported; 704 external static bool get isSupported;
668 705
669 Stream<FileSystemEvent> get stream; 706 Stream<FileSystemEvent> get stream;
670 } 707 }
OLDNEW
« no previous file with comments | « sdk/lib/io/file_impl.dart ('k') | sdk/lib/io/http_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698