-
-
Notifications
You must be signed in to change notification settings - Fork 195
Expand file tree
/
Copy pathInMemoryFile.js
More file actions
105 lines (89 loc) · 3.73 KB
/
InMemoryFile.js
File metadata and controls
105 lines (89 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* GNU AGPL-3.0 License
*
* Copyright (c) 2021 - present core.ai . All rights reserved.
* Original work Copyright (c) 2013 - 2021 Adobe Systems Incorporated. All rights reserved.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
* for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://opensource.org/licenses/AGPL-3.0.
*
*/
/**
* Represents a file that will never exist on disk - a placeholder backing file for untitled Documents. NO ONE
* other than DocumentManager should create instances of InMemoryFile. It is valid to test for one (`instanceof
* InMemoryFile`), but it's better to check `doc.isUntitled` where possible.
*
* Attempts to read/write an InMemoryFile will always fail, and exists() always yields false. InMemoryFile.fullPath
* is just a placeholder, and should not be displayed anywhere in the UI; fullPath IS guaranteed to be unique, however.
*
* An InMemoryFile is not added to the filesystem index, so if you ask the filesystem anything about this
* object, it won't know what you're talking about (`filesystem.getFileForPath(someInMemFile.fullPath)` will not
* return someInMemFile).
*/
define(function (require, exports, module) {
var File = require("filesystem/File"),
FileSystemError = require("filesystem/FileSystemError");
function InMemoryFile(fullPath, fileSystem) {
File.call(this, fullPath, fileSystem);
}
InMemoryFile.prototype = Object.create(File.prototype);
InMemoryFile.prototype.constructor = InMemoryFile;
InMemoryFile.prototype.parentClass = File.prototype;
// Stub out invalid calls inherited from File
/**
* Reject any attempts to read the file.
*
* Read a file as text.
*
* @param {Object=} options Currently unused.
* @param {function (number, string, object)} callback
*/
InMemoryFile.prototype.read = function (options, callback) {
if (typeof (options) === "function") {
callback = options;
}
callback(FileSystemError.NOT_FOUND);
};
/**
* Rejects any attempts to write the file.
*
* @param {string} data Data to write.
* @param {string=} encoding Encoding for data. Defaults to UTF-8.
* @param {!function (err, object)} callback Callback that is passed the
* error code and the file's new stats if the write is successful.
*/
InMemoryFile.prototype.write = function (data, encoding, callback) {
if (typeof (encoding) === "function") {
callback = encoding;
}
callback(FileSystemError.NOT_FOUND);
};
// Stub out invalid calls inherited from FileSystemEntry
InMemoryFile.prototype.exists = function (callback) {
callback(null, false);
};
InMemoryFile.prototype.stat = function (callback) {
callback(FileSystemError.NOT_FOUND);
};
InMemoryFile.prototype.unlink = function (callback) {
callback(FileSystemError.NOT_FOUND);
};
InMemoryFile.prototype.rename = function (newName, callback) {
callback(FileSystemError.NOT_FOUND);
};
InMemoryFile.prototype.moveToTrash = function (callback) {
callback(FileSystemError.NOT_FOUND);
};
// Export this class
module.exports = InMemoryFile;
});