diff --git a/src/bootstrap.js b/src/bootstrap.js index f09938b8..cab69551 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -88,7 +88,16 @@ window.WebPage = function() { return page; }; -// Make "fs.open" throw an exception in case it fails +// window.fs +// JavaScript "shim" to throw exceptions in case a critical operation fails. + +/** Open and return a "file" object. + * It will throw exception if it fails. + * + * @param path Path of the file to open + * @param mode Open Mode. A string made of 'r', 'w', 'a/+' characters. + * @return "file" object + */ window.fs.open = function(path, mode) { var file = window.fs._open(path, mode); if (file) { @@ -96,3 +105,31 @@ window.fs.open = function(path, mode) { } throw "Unable to open file '"+ path +"'"; }; + +/** Open, read and return content of a file. + * It will throw an exception if it fails. + * + * @param path Path of the file to read from + * @return file content + */ +window.fs.read = function(path) { + var f = fs.open(path, 'r'), + content = f.read(); + + f.close(); + return content; +}; + +/** Open and write content to a file + * It will throw an exception if it fails. + * + * @param path Path of the file to read from + * @param content Content to write to the file + * @param mode Open Mode. A string made of 'w' or 'a / +' characters. + */ +window.fs.write = function(path, content, mode) { + var f = fs.open(path, mode); + + f.write(content); + f.close(); +}; diff --git a/src/filesystem.h b/src/filesystem.h index 80fd60ec..c2eee3f8 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -70,25 +70,53 @@ public: FileSystem(QObject *parent = 0); public slots: - bool exists(const QString &path) const; - bool isDirectory(const QString &path) const; - bool isFile(const QString &path) const; + // Attributes + // - int size(const QString &path) const; //< TODO - in bytes, or throw excep if doesn't exists + // - QDateTime lastModified(const QString &path) const; //< TODO - returns the time that a file was last modified as a Date object. + // Files / Directories + // - copy() + // - move() + // - touch(path, date) + // - rename() + + // Directory + // - copyTree(source, target) //< copies files from a source path to a target path, + // copying the files of the source tree to the corresponding locations + // relative to the target, copying but not traversing into + // symbolic links to directories. bool makeDirectory(const QString &path) const; bool makeTree(const QString &path) const; - - bool remove(const QString &path) const; bool removeDirectory(const QString &path) const; bool removeTree(const QString &path) const; + // Files + // 'open(path, mode)' implemented in "bootstrap.js" JavaScript shim, using '_open(path, mode)' + QObject *_open(const QString &path, const QString &mode) const; + // 'read(path)' implemented in "bootstrap.js" JavaScript shim + // 'write(path, mode)' implemented in the "bootstrap.js" JavaScript shim + + bool remove(const QString &path) const; + + // Listing QStringList list(const QString &path) const; + // Paths + QString separator() const; QString workingDirectory() const; bool changeWorkingDirectory(const QString &path) const; + // - absolute(relative_path) - QString separator() const; - - QObject *_open(const QString &path, const QString &mode) const; + // Tests + bool exists(const QString &path) const; + bool isDirectory(const QString &path) const; + bool isFile(const QString &path) const; + // - isAbsolute() + // - isExecutable() + // - isLink() + // - isMount() + // - isReadable() + // - isWritable() }; #endif // FILESYSTEM_H