Skip to content

Files

Latest commit

763e36b · Sep 2, 2020

History

History

docs

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Sep 2, 2020

@hexlet/[email protected] documentation /home/stas/Work/hexlet/hexlet-components/js-immutable-fs-trees documentation "build" "index.js" "-f" "md"

Table of Contents

Node

Node

Type: Object

Properties

  • name string
  • type (directory | file)
  • meta Object – custom information

mkfile

Make file node

Parameters

  • name string
  • meta (optional, default {})

Examples

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

mkdir

Make directory node

Parameters

  • name string
  • children Array<Object> (optional, default [])
  • meta (optional, default {})

Examples

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',
// }

getChildren

Return children

Parameters

  • directory

Examples

getChildren(mkdir('etc')); // []
getChildren(mkdir('etc', [mkfile('name')])); // [<file>]

getMeta

Return meta

Parameters

  • node

Examples

getMeta(mkfile('etc')); // {}
getMeta(mkfile('etc', { owner: 'root' })); // { owner: 'root' }

getName

Return name

Parameters

  • node

Examples

getName(mkfile('etc')); // etc
getName(mkdir('/')); // /

isFile

Check is node a file

Parameters

  • node

Examples

isFile(mkfile('config')); // true
isFile(mkdir('etc')); // false

isDirectory

Check is node a directory

Parameters

  • node

Examples

isDirectory(mkdir('etc')); // true
isDirectory(mkfile('config')); // false

map

Map tree

Parameters

  • callbackFn
  • tree

Examples

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

Reduce tree

Parameters

  • callbackFn
  • tree
  • acc

Examples

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

Filter tree

Parameters

  • callbackFn
  • tree

Examples

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',
// }