Skip to content

turns a list of file names into a directory tree-like structure

Notifications You must be signed in to change notification settings

springyboy/treeify-paths

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

treeify-paths

Build Status NPM version npm npm

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

Use Cases

Useful when converting a list of file names into a nested UL/LI tree. Nice for site maps, etc.

Installation:

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;

Usage:

This module provides a function treeifyPaths that takes a list of file names and returns a directory-like tree.

the following script:

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);

produces the following output:

{
   "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": []
                  }
               ]
            }
         ]
      }
   ]
}

Testing

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)

About

turns a list of file names into a directory tree-like structure

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 89.9%
  • TypeScript 10.1%