Provide a list of file names:
- blog/all.html
- blog/2036/overflows.html
And recieve a directory-like tree:
- blog
- all.html
- 2036
- overflows.html
Useful when converting a list of file names into a nested UL/LI tree. Nice for site maps, etc.
Install it with NPM:
npm install --save treeify-paths
import treeifyPaths from 'treeify-paths';
If you are not using NPM, install the library by downloading the source file and including it in your project:
curl -o treeify-paths.js "https://raw.githubusercontent.com/khtdr/treeify-paths/master/treeify-paths.js"
let treeify_paths = require('./treeify-paths').default;
This module provides a function treeifyPaths
that takes a list of file names and returns a directory-like tree.
import treeifyPaths from 'treeify-paths';
console.log(JSON.stringify(treeifyPaths([
'about.html',
'careers',
'careers/job-1.html',
'careers/job-2.html',
'to/some/page.aspx',
]), null, 3);
{
"path": "",
"name": "",
"children": [
{
"path": "about.html",
"name": "about.html",
"children": []
},
{
"path": "careers",
"name": "careers",
"children": [
{
"path": "careers/job-1.html",
"name": "job-1.html",
"children": []
},
{
"path": "careers/job-2.html",
"name": "job-2.html",
"children": []
}
]
},
{
"path": "to",
"name": "",
"children": [
{
"path": "to/some",
"name": "",
"children": [
{
"path": "to/some/page.aspx",
"name": "page.aspx",
"children": []
}
]
}
]
}
]
}
The mocha tests have many examples
> [email protected] pretest khtdr/treeify-paths
> tsc lib.ts && mv lib.js treeify-paths.js
> [email protected] test khtdr/treeify-paths
> mocha tests.js
treeifyPaths([...arguments])
arguments: none
✓ should return an empty object
arguments: empty list
✓ should return an empty object
arguments: list with a single file
✓ should return a single file
✓ should return with nested children
arguments: multiple file names
✓ should return with nested children
✓ should alphabetize
✓ should ignore duplicates
7 passing (8ms)