npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

path-builder

v1.0.3

Published

Take an indented tree decription and generate paths for each item.

Downloads

11

Readme

Path-Builder


Take an indented tree decription and generate paths for each item. For example, a path description file with the following layout:

basedir1
    dir1
    dir2
        *filescanbecreated.txt
        *README.md
           *oktoforwardindentforfiles.txt
basedir2
    dir1
    dir2
*fileatbaselevel.txt

generates

./basedir1/
./basedir1/dir1/
./basedir1/dir2/
./basedir1/dir2/filescanbecreated.txt
./basedir1/dir2/README.md
./basedir1/dir2/filescanbecreated.txt
./basedir1/dir2/oktoforwardindentforfiles.txt
./basedir2/
./basedir2/di1/
./basedir2/dir2/
./fileatbaselevel.txt

The default generator produces POSIX pathnames but options are available to define a prefix and separator for each line.

>echo pathBuilder.generateLines(inputString,{prefix:'c:\\', separator:'\\'})
...
...
c:\windows\style\dir\output\
...
...

The algorithm does not use recursion.
A Jasmine spec file is available under the ./spec directory

Usage:

Path-Builder has no dependencies. Install it using npm

npm install path-builder [--save|--dev-save]

add to code:

var pathBuilder = require('./path-builder');
var string = 'directory structure data using indents';
var pathArray = pathBuilder(string);
console.dir(pathArray);  

API

var pathArray = pathBuilder(stringToParse [,options]);

Parameters:

stringToParse: A newline separated string describing a directory tree using indents. Indenting may be all spaces or all tabs. A mixture of tabs and spaces is undefined.

  • text prepended with the * symbol is treated as a file name rather than a path.
  • space-indent layout makes a best-guess approximation of the indenting style by counting the number of spaces in the first indented line encountered. All indents going deeper use this spacing to determine nesting level.
  • Nesting levels for directories can never be more than one level deeper relative to the current depth, regardless of the number of indents assigned. Indenting a line by 24 spaces on a 4-space indent size will only act as if it was indented by 4 spaces (1 level deeper).
  • Nesting for files is similar to directories. A file indented the same as a directory places the file at the same level as the directory.

options: An optional object may be passed that alters certain aspects of the formatted output.

  • prefix: string - precedes the first part of the derived path. The default is {prefix: './'}
  • separator: string - the separator between each sub-path. The default is {separator: '/'}. A separator always trails the last directory. Files never add a training separator.

Return:

an array of tree items expressed as paths. Each line uses the defined prefix and spearator items to generate the line.

Assumptions:

  • a line with a mixture of tabs and spaces produces an undefined output.
  • the default options parameter is {prefix: './', separator: '/'}

License

MIT