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

Side by Side Diff: pkg/front_end/lib/physical_file_system.dart

Issue 2614063007: Use URIs rather than paths in front end API. (Closed)
Patch Set: Minor fixes Created 3 years, 11 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
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 library front_end.physical_file_system; 5 library front_end.physical_file_system;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io' as io; 8 import 'dart:io' as io;
9 9
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
11 11
12 import 'file_system.dart'; 12 import 'file_system.dart';
13 13
14 /// Concrete implementation of [FileSystem] which performs its operations using 14 /// Concrete implementation of [FileSystem] which performs its operations using
15 /// I/O. 15 /// I/O.
16 /// 16 ///
17 /// Not intended to be implemented or extended by clients. 17 /// Not intended to be implemented or extended by clients.
18 class PhysicalFileSystem implements FileSystem { 18 class PhysicalFileSystem implements FileSystem {
19 static final PhysicalFileSystem instance = new PhysicalFileSystem._(); 19 static final PhysicalFileSystem instance = new PhysicalFileSystem._();
20 20
21 PhysicalFileSystem._(); 21 PhysicalFileSystem._();
22 22
23 @override 23 @override
24 p.Context get context => p.context; 24 p.Context get context => p.context;
25 25
26 @override 26 @override
27 FileSystemEntity entityForPath(String path) =>
28 new _PhysicalFileSystemEntity(context.normalize(context.absolute(path)));
29
30 @override
31 FileSystemEntity entityForUri(Uri uri) { 27 FileSystemEntity entityForUri(Uri uri) {
32 if (uri.scheme != 'file') throw new ArgumentError('File URI expected'); 28 if (uri.scheme != 'file' && uri.scheme != '') {
29 throw new ArgumentError('File URI expected');
30 }
33 // Note: we don't have to verify that the URI's path is absolute, because 31 // Note: we don't have to verify that the URI's path is absolute, because
34 // URIs with non-empty schemes always have absolute paths. 32 // URIs with non-empty schemes always have absolute paths.
35 return entityForPath(context.fromUri(uri)); 33 var path = context.fromUri(uri);
34 return new _PhysicalFileSystemEntity(
35 context.normalize(context.absolute(path)));
36 } 36 }
37 } 37 }
38 38
39 /// Concrete implementation of [FileSystemEntity] for use by 39 /// Concrete implementation of [FileSystemEntity] for use by
40 /// [PhysicalFileSystem]. 40 /// [PhysicalFileSystem].
41 class _PhysicalFileSystemEntity implements FileSystemEntity { 41 class _PhysicalFileSystemEntity implements FileSystemEntity {
42 @override 42 final String _path;
43 final String path;
44 43
45 _PhysicalFileSystemEntity(this.path); 44 _PhysicalFileSystemEntity(this._path);
46 45
47 @override 46 @override
48 int get hashCode => path.hashCode; 47 int get hashCode => _path.hashCode;
48
49 @override
50 Uri get uri => p.toUri(_path);
49 51
50 @override 52 @override
51 bool operator ==(Object other) => 53 bool operator ==(Object other) =>
52 other is _PhysicalFileSystemEntity && other.path == path; 54 other is _PhysicalFileSystemEntity && other._path == _path;
53 55
54 @override 56 @override
55 Future<List<int>> readAsBytes() => new io.File(path).readAsBytes(); 57 Future<List<int>> readAsBytes() => new io.File(_path).readAsBytes();
56 58
57 @override 59 @override
58 Future<String> readAsString() => new io.File(path).readAsString(); 60 Future<String> readAsString() => new io.File(_path).readAsString();
59 } 61 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698