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

Side by Side Diff: lib/dartdoc/frog/file_system_dom.dart

Issue 10696191: Frog removed from dartdoc. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 5 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
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
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.
4
5 #library('file_system_dom');
6
7 #import('dart:dom_deprecated');
8 #import('file_system.dart');
9
10 /**
11 * [FileSystem] implementation using XHRs for reading files and an in memory
12 * cache for writing them.
13 */
14 class DomFileSystem implements FileSystem {
15 Map<String, String> _fileCache;
16 String _path;
17
18 DomFileSystem([this._path = null]) : _fileCache = {};
19
20 // TODO(vsm): Move this to FileSystem.
21 String absPath(String filename) {
22 if (_path != null && !filename.startsWith('/')
23 && !filename.startsWith('file:///') && !filename.startsWith('http://')
24 && !filename.startsWith('dart:')) {
25 filename = joinPaths(_path, filename);
26 }
27 return filename;
28 }
29
30 String readAll(String filename) {
31 filename = absPath(filename);
32 var result = _fileCache[filename];
33 if (result == null) {
34 final xhr = new XMLHttpRequest();
35 // TODO(jimhug): Fix API so we can get multiple files at once.
36 // Use a sychronous XHR to match the current API.
37 xhr.open('GET', filename, false);
38 try {
39 xhr.send(null);
40 } catch (var e) {
41 // TODO(vsm): This XHR appears to fail if the URL is a
42 // directory. Return something to make fileExists work.
43 // Handle this better.
44 return "_directory($filename)_";
45 }
46
47 if (xhr.status == 0 || xhr.status == 200) {
48 result = xhr.responseText;
49 if (result.isEmpty()) {
50 // TODO(vsm): Figure out why a non-existent file is not giving
51 // an error code.
52 print('Error: $filename is not found or empty');
53 return null;
54 }
55 } else {
56 // TODO(jimhug): Better error handling.
57 print("Error: ${xhr.statusText}");
58 }
59 _fileCache[filename] = result;
60 }
61 return result;
62 }
63
64 void writeString(String outfile, String text) {
65 outfile = absPath(outfile);
66 _fileCache[outfile] = text;
67 }
68
69 // Note: this is not a perf nightmare only because of caching.
70 bool fileExists(String filename) => readAll(filename) != null;
71
72 void createDirectory(String path, [bool recursive = false]) {
73 // TODO(rnystrom): Implement.
74 throw 'createDirectory() is not implemented by DomFileSystem yet.';
75 }
76
77 void removeDirectory(String path, [bool recursive = false]) {
78 // TODO(rnystrom): Implement.
79 throw 'removeDirectory() is not implemented by DomFileSystem yet.';
80 }
81 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698