UNPKG

super-fs

Version:

Virtual file system

47 lines (28 loc) 1.41 kB
const _ = require('lodash'); const addPrefix = function(name, options){ var result = options.prefix ? options.prefix + name : name; return result; }; const listAll = function(path, virtual_fs, config){ var result = []; var options = config || {}; var shouldFilterByType = ['directories', 'files'].indexOf(options.filter) > -1; var directory = path ? _.find(virtual_fs.contents, {name: path}) : virtual_fs; var contents = directory && directory.contents ? directory.contents : []; contents.forEach(function(element){ var shouldDisplayFiles = element.type === 'file' && (!shouldFilterByType || options.filter !== 'directories'); var shouldDisplayDirectories = !shouldFilterByType || options.filter !== 'files'; var prefixed = addPrefix(element.name, options); if(shouldDisplayFiles) { result.push(prefixed); } else if(element.type === 'directory') { var new_config = _.merge({}, options, {prefix: addPrefix(element.name + '/', options)}); var directory_result = listAll(null, element, new_config); var filteredName = shouldDisplayDirectories ? [prefixed] : []; var nested_result = directory_result.length ? directory_result : filteredName; result = result.concat(nested_result); } }); return result; }; module.exports = listAll;