abstract-file ![npm](https://img.shields.io/npm/v/abstract-file.svg)
![Join the chat at https://gitter.im/snowyu/abstract-file.js](https://badges.gitter.im/Join%20Chat.svg)
![license](https://img.shields.io/npm/l/abstract-file.svg)
It can be used on any virtual file system, and stream supports. Inspired by vinyl.
Try to keep compatibility with vinyl.
- abstract file information class
- abstract file operation ability
- abstract load supports
- load read:true, buffer:true
- load stat
- load content
- abstract folder/directory supports: It's the array of file object and read-dir-stream
- abstract path.js
- abstract fs: It should apply via
AbstractFile.fs = fs
- abstract cwd: It should apply via
fs.cwd = process.cwd
Usage
the File and Folder implementation are in the custom-file package.
API
Properties
path
(File|String): the file path. it will be internally stored as absolute path always.
- It will get path string from the object's
path
attribute if it's an file object.
cwd
(String): the current working directroy.base
(String): the base directory. used to calc the relative path.
the default is cwd
if it's empty.history
(ArrayOf String): the history of the path changes.stat
(Stat): the file stats object. the isDirectory()
method be used.contents
(String|Buffer|ArrayOf(File)|Stream): the contents of the file.
- It's the array of
File
object or a read-dir-stream if the file is a folder.
skipSize
(Integer): the skipped length from beginning of contents. used by getContent()
.
only for buffer.relative
(String): readonly. the relative path from path
to base
.dirname
(String): readonly. the dirname of the path
.basename
(String): readonly. the basename of the path
.extname
(String): readonly. the extname of the path
.
Methods
constructor([aPath, ]aOptions[, done])
aPath
(String): the file path. it will be stored as absolute path always.aOptions
(Object):
path
(String): the same as the aPath
argument.cwd
(String): the current working directroy.base
(String): the base directory. used to calc the relative path.
the default is cwd
if it's empty.load
(Boolean): whether load file data(stat and contents). defaults to falseread
(Boolean): whether load file contents. defaults to false. only for load
is true.buffer
(Boolean): whether load file contents as buffer or stream, defaults to true.
only available for load
and read
both are true.text
(Boolean): whether load file contents as text, defaults to false.
only available for load
, read
and buffer
both are true.
done
(Function): the callback function only available for load
is true.
- the
loadSync
will be used if no done
function.
load(aOptions, done)
: Asynchronous load file stat and content.
read
(Boolean): whether load file contents. defaults to false.buffer
(Boolean): whether load file contents as buffer or stream, defaults to true.
only available for read
is true.text
(Boolean): whether load file contents as text, defaults to false.
only available for read
and buffer
both are true.done
Function(err, content): the callback function. the content
only available when read
is true
loadSync(aOptions)
: Synchronous load file stat and content.
read
(Boolean): whether load file contents. defaults to false.buffer
(Boolean): whether load file contents as buffer or stream, defaults to true.
only available for read
is true.text
(Boolean): whether load file contents as text, defaults to false.
only available for read
and buffer
both are true.- return contents only available when
read
is true
loadContent(aOptions, done)
: Asynchronous load file contents.
buffer
(Boolean): whether load file contents as buffer or stream, defaults to true.text
(Boolean): whether load file contents as text, defaults to false.
only available for buffer
is true.reload
(Boolean): whether force to reload the contents from the file. defaults to false.overwrite
(Boolean): whether assign to this.contents after loading the contents from the file. defaults to true.done
Function(err, content): the callback function.
loadContentSync(aOptions)
: Synchronous load file contents.
buffer
(Boolean): whether load file contents as buffer or stream, defaults to true.text
(Boolean): whether load file contents as text, defaults to false.
only available for buffer
is true.reload
(Boolean): whether force to reload the contents from the file. defaults to false.overwrite
(Boolean): whether assign to this.contents after loading the contents from the file. defaults to true.- return contents
getContent(aOptions, done)
: Asynchronous get the file contents buffer, skipSize used.
only available for File(not for folder)
done
Function(err, content): the callback function.
getContentSync(aOptions)
: Synchronous get the file contents buffer, skipSize used.
only available for File(not for folder)loadStat(aOptions, done)
: Asynchronous load file stats.
done
Function(err, stat): the callback function.
loadStatSync(aOptions)
: Synchronous load file stats.
pipe(stream[, options])
: pipe it to the stream.
stream
(Writable Stream): The destination stream for writing data.options
(Object): Pipe options
end
(Boolean): End the writer when the reader ends. Default = true
validate(aFile, raiseError=true)
: the aFile object whether is valid.isDirectory()
: whether is directory.isBuffer()
: whether contents is buffer.isStream()
: whether contents is stream.toString()
: return the path.replaceExt(extname)
: return the replaced extname's path string.
these methods should be overrides:
- _validate(aFile): the aFile object whether is valid.
- _loadContentSync(aFile)
- _loadStatSync(aFile)
- _loadContent(aFile, done): optional
- _loadStat(aFile, done): optional
- _inspect()
Changes
v0.3
- broken the default value of the
buffer
option is true
now.
- add the
reload
,overwrite
option to loadContent/loadContentSync
- assign the
skipSize
from options after loading.
- add
extName
readonly property - add
replaceExt
method to get the replaced extname's path string.
License
MIT