custom-file

0.5.8 • Public • Published

custom-file npm

Build Status Code Climate Test Coverage downloads license

the custom-file can be used on any virtual file system with stream supports.

Usage

you must call setFileSystem() the fs to CustomFile Before use it:

through2    = require 'through2'
Stream      = require('stream').Stream
fs          = require 'graceful-fs' #or require 'fs' 
CustomFile  = require 'custom-file'
 
fs.cwd      = process.cwd    # what's the get current working directory function. 
fs.path     = require 'path.js' # what's the path package. (>=abstract-file@0.5.4 supports) 
CustomFile.setFileSystem(fs) # and should set your filesystem first. 
 
File = CustomFile.File
Folder = CustomFile.Folder
 
file = File './readme.md'load:trueread:true
console.log file.contents #<Buffer 23...> 
file = File './readme.md'load:trueread:truebuffer:false
console.log file.contents instanceof Stream #true 
file.pipe process.stdoutend:false #pipe to stdout(the stdout should be never closed.) 
 
file = Folder './'load:trueread:true
console.log file.contents #[<File "README.md">, <Folder "src">,...] 
file = Folder './'load:trueread:truebuffer:false
console.log file.contents instanceof Stream #true 
file.pipe through2.obj (aFile, enc, next)->next nullaFile.inspect()+'\n'
.pipe process.stdoutend:false
 
file = CustomFile './readme.md' # the CustomFile can create the file or folder object base on the file path 
file.should.be.instanceof File
file = CustomFile './'          # Or use the AdvanceFile with same object. 
file.should.be.instanceof Folder
 
AdvanceFile = require 'custom-file/lib/advance'
file = AdvanceFile './readme.md'
file.should.be.instanceof AdvanceFile
file = AdvanceFile './'
file.should.be.instanceof AdvanceFile
 
file.loadSync read:true # here can load manually. 
file.load read:true(err, content)->
  console.log content

the following is javascript:

var through2 = require('through2');
var Stream = require('stream').Stream;
var fs = require('graceful-fs');
var CustomFile = require('custom-file');
 
fs.cwd = process.cwd;
CustomFile.setFileSystem(fs);
 
var File = CustomFile.File;
 
var Folder = CustomFile.Folder;
 
var file = File('./readme.md', {
  load: true,
  read: true
});
 
console.log(file.contents);
 
file = File('./readme.md', {
  load: true,
  read: true,
  buffer: false
});
 
console.log(file.contents instanceof Stream);
 
file.pipe(process.stdout, {
  end: false
});
 
file = Folder('./', {
  load: true,
  read: true
});
 
console.log(file.contents);
 
file = Folder('./', {
  load: true,
  read: true,
  buffer: false
});
 
console.log(file.contents instanceof Stream);
 
file.pipe(through2.obj(function(aFile, enc, next) {
  return next(null, aFile.inspect() + '\n');
})).pipe(process.stdout, {
  end: false
});
 
file = CustomFile('./readme.md'); // create a file object.
file.should.be.instanceof(File)
file = CustomFile('./'); // create a folder object.
file.should.be.instanceof(Folder)
 
var AdvanceFile = require('custom-file/lib/advance')
file = AdvanceFile('./readme.md')
file.should.be.instanceof(AdvanceFile)
file = AdvanceFile('./')
file.should.be.instanceof(AdvanceFile)
 
file.loadSync({read: true});
file.load({read: true}, function(err, content) {
  console.log(content);
});

API

See the abstract-file.

Changes

v0.5

  • [AbstractFolder] add the filter property to filter the files.

v0.4

  • abstract-folder class.

TODOs

  • LRUCache-able supports(not yet)
  • abstract file information class
  • abstract file operation ability
    • abstract save supports: I have no idea about this. I need more thinking. how to pass it to stream?
    • rename
    • create
    • append
    • delete

License

MIT

Package Sidebar

Install

npm i custom-file

Weekly Downloads

4

Version

0.5.8

License

MIT

Last publish

Collaborators

  • riceball