diff options
Diffstat (limited to 'lib/fs/index.js')
-rw-r--r-- | lib/fs/index.js | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/lib/fs/index.js b/lib/fs/index.js deleted file mode 100644 index 8a3ca1e..0000000 --- a/lib/fs/index.js +++ /dev/null @@ -1,106 +0,0 @@ -var _ = require('lodash'); -var path = require('path'); - -var Promise = require('../utils/promise'); - -/* -A filesystem is an interface to read files -GitBook can works with a virtual filesystem, for example in the browser. -*/ - -// .readdir return files/folder as a list of string, folder ending with '/' -function pathIsFolder(filename) { - return _.last(filename) == '/' || _.last(filename) == '\\'; -} - - -function FS() { - -} - -// Check if a file exists, run a Promise(true) if that's the case, Promise(false) otherwise -FS.prototype.exists = function(filename) { - // To implement for each fs -}; - -// Read a file and returns a promise with the content as a buffer -FS.prototype.read = function(filename) { - // To implement for each fs -}; - -// Read stat infos about a file -FS.prototype.stat = function(filename) { - // To implement for each fs -}; - -// List files/directories in a directory -FS.prototype.readdir = function(folder) { - // To implement for each fs -}; - -// These methods don't require to be redefined, by default it uses .exists, .read, .write, .list -// For optmization, it can be redefined: - -// List files in a directory -FS.prototype.listFiles = function(folder) { - return this.readdir(folder) - .then(function(files) { - return _.reject(files, pathIsFolder); - }); -}; - -// List all files in the fs -FS.prototype.listAllFiles = function(folder) { - var that = this; - - return this.readdir(folder) - .then(function(files) { - return _.reduce(files, function(prev, file) { - return prev.then(function(output) { - var isDirectory = pathIsFolder(file); - - if (!isDirectory) { - output.push(file); - return output; - } else { - return that.listAllFiles(path.join(folder, file)) - .then(function(files) { - return output.concat(_.map(files, function(_file) { - return path.join(file, _file); - })); - }); - } - }); - }, Promise([])); - }); -}; - -// Read a file as a string (utf-8) -FS.prototype.readAsString = function(filename) { - return this.read(filename) - .then(function(buf) { - return buf.toString('utf-8'); - }); -}; - -// Find a file in a folder (case incensitive) -// Return the real filename -FS.prototype.findFile = function findFile(root, filename) { - return this.listFiles(root) - .then(function(files) { - return _.find(files, function(file) { - return (file.toLowerCase() == filename.toLowerCase()); - }); - }); -}; - -// Load a JSON file -// By default, fs only supports JSON -FS.prototype.loadAsObject = function(filename) { - return this.readAsString(filename) - .then(function(str) { - return JSON.parse(str); - }); -}; - -module.exports = FS; |