Skip to content

jonschlinkert/memoize-path

Repository files navigation

memoize-path NPM version NPM downloads Build Status

Easily create reusable, stackable file paths from memoized path segments.

Install

Install with npm:

$ npm install memoize-path --save

Usage

A function is returned when a string is passed, otherwise the memoized value is returned (the memoized value is also exposed on the function's .path property);

Example

var memo = require('memoize-path');

/**
 * When a string is passed, a function is returned
 */

var cwd = memo(process.cwd()); 

// use `cwd`
var foo = cwd('foo');
var bar = cwd('bar');
var baz = cwd('baz');

// use `foo`
var qux = foo('a/b/c');
// use `qux`
var fez = qux('x/y/z');

/**
 * Returns the memoized path when no value is passed
 */

console.log(cwd());
//=> /User/dev/memo-path
console.log(foo());
//=> /User/dev/memo-path/foo
console.log(bar());
//=> /User/dev/memo-path/bar
console.log(baz());
//=> /User/dev/memo-path/baz
console.log(qux());
//=> /User/dev/memo-path/foo/a/b/c
console.log(fez());
//=> /User/dev/memo-path/foo/a/b/c/x/y/z

/**
 * The memoized path is also exposed on the function's `.path` property
 */

console.log(cwd.path);
//=> /User/dev/memo-path
console.log(foo.path);
//=> /User/dev/memo-path/foo
console.log(bar.path);
//=> /User/dev/memo-path/bar
console.log(baz.path);
//=> /User/dev/memo-path/baz
console.log(qux.path);
//=> /User/dev/memo-path/foo/a/b/c
console.log(fez.path);
//=> /User/dev/memo-path/foo/a/b/c/x/y/z

Related projects

You might also be interested in these projects:

  • is-absolute: Returns true if a file path is absolute. | homepage
  • is-relative: Returns true if the path appears to be relative. | homepage
  • micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. Just… more | homepage
  • parse-filepath: Parse a filepath into an object. Falls back on the native node.js path.parse method if… more | homepage
  • relative: Get the relative filepath from path A to path B. Calculates from file-to-directory, file-to-file, directory-to-file,… more | homepage

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Building docs

Generate readme and API documentation with verb:

$ npm install verb && npm run docs

Or, if verb is installed globally:

$ verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v, on March 28, 2016.

About

Easily create reusable, stackable file paths from memoized path segments.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published