@hexlet/[email protected] documentation /home/stas/Work/hexlet/hexlet-components/js-immutable-fs-trees documentation "build" "index.js" "-f" "md"
Node
Type: Object
Make file node
name
stringmeta
(optional, default{}
)
mkfile('config.json');
// {
// name: 'config.json',
// meta: {},
// type: 'file',
// }
mkfile('config.json', { size: 1200 });
// {
// name: 'config.json',
// meta: { size: 1200 },
// type: 'file',
// }
Returns any Node
Make directory node
mkdir('etc');
// {
// name: 'etc',
// children: [],
// meta: {},
// type: 'directory',
// }
mkdir('etc', [mkfile('config'), mkfile('hosts')], { owner: 'user' });
// {
// name: 'etc',
// children: [
// { name: 'config', meta: {}, type: 'file' },
// { name: 'hosts', meta: {}, type: 'file' }
// ],
// meta: { owner: 'user' },
// type: 'directory',
// }
Return children
directory
getChildren(mkdir('etc')); // []
getChildren(mkdir('etc', [mkfile('name')])); // [<file>]
Return meta
node
getMeta(mkfile('etc')); // {}
getMeta(mkfile('etc', { owner: 'root' })); // { owner: 'root' }
Return name
node
getName(mkfile('etc')); // etc
getName(mkdir('/')); // /
Check is node a file
node
isFile(mkfile('config')); // true
isFile(mkdir('etc')); // false
Check is node a directory
node
isDirectory(mkdir('etc')); // true
isDirectory(mkfile('config')); // false
Map tree
callbackFn
tree
const tree = mkdir('etc', [mkfile('config'), mkfile('hosts')]);
const callbackFn = (node) => {
const { name } = node;
const newName = name.toUpperCase();
return { ...node, name: newName };
};
map(callbackFn, tree);
// {
// name: 'ETC',
// children: [
// { name: 'CONFIG', meta: {}, type: 'file' },
// { name: 'HOSTS', meta: {}, type: 'file' }
// ],
// meta: {},
// type: 'directory',
// }
Reduce tree
callbackFn
tree
acc
const tree = mkdir('etc', [mkfile('config'), mkfile('hosts')]);
reduce((acc) => acc + 1, tree, 0);
// 3
reduce((acc, node) => [...acc, node.name], tree, []);
// ['etc', 'config', 'hosts']
Filter tree
callbackFn
tree
const tree = mkdir('etc', [mkfile('CONFIG'), mkfile('hosts')]);
const callbackFn = (node) => {
const { name } = node;
return name === name.toLowerCase();
};
filter(callbackFn, tree);
// {
// name: 'etc',
// children: [
// { name: 'hosts', meta: {}, type: 'file' }
// ],
// meta: {},
// type: 'directory',
// }