Skip to content

nomilous/in.expander.dir

Repository files navigation

Build Status

in.expander.dir

Directory expander for in.

Using standalone

npm install in.expander.dir --save

var ex = require('in.expander.dir');

It returns a promise.

ex.dir('./*.md')
.then(function(arrayOfNames){})
.catch(function(e){});

It provides extended info

ex.dir('./*.md')
.then(function(arrayOfNames){
  arrayOfNames.info.forEach(function(file) {
    file.value === './README.md'; // the value in arrayOfNames
    file.fullname === '/ect/etc/.../README.md';
    file.dir === '/etc/etc/etc'
    file.uid === 919;
    file.size === 28856;
    file.isSymbolicLink() === false;
    //etc...
  })
});

It can search for only files

.files()

ex.files('./node_modules/**/*')
.then(function(arrayOfFileNames){})

It can search for only dirs

.dirs()

ex.dirs('./node_modules/**/*')
.then(function(arrayOfDirNames){})

Using with in.

This expander comes bundled with in.

npm install in. --save

Basic

require('in.');

$$in(function(
  filenames // in. {{ $$files('./**/*.json') }}
){
  filenames instanceof Array // of filenames
  // filenames.info
});
$$in(function(
  files // in. {{ $$files('./**/*.json').info }}
){
  files instanceof Array // of full file info
});

Advanced

Files in local directory modified in last 10 seconds

$$in(function(
  names /* in. {{ $$files('*').info
                  .filter ({mtime}) -> mtime > Date.now() - 10 * 1000
                  .map ({value}) -> value
                }} */
){
  console.log(names)
});

Combine name and file size

$$in(function(
  details // in. {{ name: f.name, size: f.size for f in $$files('*').info }}
){
  details[0] === { name: 'file_name', size: 919 };
});

And finally

$$in(function(movies) { // in. {{ $$files('~/Desktop/**/*.avi').info }}
  movies[4].m[0] === 'Her';
  movies[4].m[1] === 'untitled folder/stuff/untitled folder/movies/from clive/';
});