oofile

An object oriented, synchronous file system library, great for command line scripts

File

This class represents a file or directory in the file system. The file may or may not exist (try using exists to find out!). At it's core, each File is a path, and a collection of methods that operate on that path. In addition, each instance of a File is also a function that can be called; when called, it will return a new instance of a File with argument appended to the path of the original File. In other words:

var File = require('oofile').File
var docs = new File('~/Documents');
var work = docs('Work');   // '/Work' is valid as well - File will normalize the path

Files included in this array will be excluded from file listings (i.e. findAllFiles)

Create a new instance of a File it's already a File, so just return the File constructor returns an object that acts as a function and object simultaneously (technically, all functions are already Function objects, but you get the point). To do this, we create a function in the constructor, and return that function. But before we return it, we make it inherit from the File "class" via prototype inheritance this is the default function - if you invoke an instance of File as a function, you're calling this assign that function the prototype - now, it walks, talks and acts like a File, but can be invoked as method (on itself!) do some setup work

This is a private method - do not invoke this yourself!

Returns an array of files found within this directory and all sub-directories (recursively). If this instance's path is not a directory, it returns an array containing a single entry, itself.

Returns an array of files or directories found within this directory and all sub-directories (recursively).If this instance's path is not a directory, it returns an empty array.

Returns an array of files found within this directory and all sub-directories (recursively) that match the given pattern (itself included). The pattern can either be a regular expression (must be an instance of RegExp) or a globbing pattern.

Maps the supplied function over the result of this.findAllFiles() get all the files when you finish with a file ... invoke map on the next one kickoff

If a File is asked to represent itself as a String via the toString method, it simply returns the absolute path it represents.

Does the file or directory exist?

Returns a new instance of File with the current path and the given extension. If the current File has an extension, it will be replaced. If it has no extension, the supplied one will be appended.

Returns true if the current path is an actual file on the file system. If the path resolves to a directory, or doesn't exist, returns false.

Returns true if the current path is an actual directory on the file system. If the path resolves to a file, or doesn't exist, returns false.

Renames the actual file in the file system. The optional second argument will change the extension as well; if none is supplied, the extension won't change. ext isnt "" then ext = ".#{ext}"

Reads the contents of the file. If the file doesn't exist, or is a directory, returns false. To return a buffer, rather than the content itself, pass in { buffer: true } in the options hash. If buffer is false or not set, then the contents will be parsed as JSON. If the contents are not valid JSON, the function returns the contents as a raw string.

Returns true if the supplied filename exists in this directory or and sub-directory (recursively). Returns false if the current path is a file.

Inserts the supplied content before the first occurence of the given marker, and writes the result to the file.

Inserts the supplied content after the first occurence of the given marker, and writes the result to the file.

Writes the supplied contents to the current path. If the parent directories of the current path do not exist, they will be created (mkdir -p style). If a string or buffer is provided as the contents, it will be written directly. If an object is provided, it will be stringified with JSON.stringify and the result will be written.

Returns a new File instance representing the parent directory of the current path.

Private method for generating containing directories recursively.

Returns a string representing the relative path to go from the current path to the supplied file.

Checks to see if the current path is a child of the supplied path. The supplied path can be a string or an instance of File

Returns a new File instance representing the current path, minus any extension. If the current path contains multiple extensions (i.e. application.layout.html) the only the final extension will be removed.

Mimics the command line ls - returns an array of files in the current directory (not including sub-directories). If the current path is a file or doesn't exist, returns false.

Deletes this file or directory from the file system. If the current path is a directory, it's contents will be deleted recursively.

Copies this file or directory to the given destination. The destination can be a string path or another File instance. If the current path is a directory, its contents will be recursively copied to the destination.

Copies from the given path (a string or instance of File) to the current path, recursively.

edit accepts a worker function as an argument. It reads in the contents of the current path, calls the worker function with the contents of the file, and then writes the return value of that function back to the file.