1.1.7 • Published 7 years ago
pathington v1.1.7
pathington
Create or parse an object path based on dot or bracket syntax.
Table of contents
Usage
import {create, parse} from 'pathington';
const parsedPath = parse('some[0].deeply["nested path"]');
console.log(parsed); // ['some', 0, 'deeply', 'nested path']
const createdPath = create(['some', 0, 'deeply', 'nested path']);
console.log(createdPath); // 'some[0].deeply["nested path"]'Methods
parse
parse(path: (Array<number|string>|string)): string
Parse a path into an array of path values.
console.log(parse('simple')); // ['simple']
console.log(parse('dot.notation')); // ['dot', 'notation']
console.log(parse('array[0]')); // ['array', 0]
console.log(parse('array[0].with["quoted keys"]')); // ['array', 0, 'with', 'quoted keys']
console.log(parse('special["%characters*"]')); // ['special', '%characters*']- If a path string is provided, it will be parsed into an array
- If an array is provided, it will be mapped with the keys normalized
create
create(path: Array<number|string>[, quote="]): string
Create a path string based on the path values passed.
console.log(create(['simple'])); // 'simple'
console.log(create(['array', 0])); // 'array[0]'
console.log(create(['array', 0, 'with', 'quoted keys'])); // 'array[0].with["quoted keys"]'
console.log(create(['special', '%characters*'])); // 'special["%charactres*"]'Optionally, you can pass in the quote string to use instead of ". Valid values are backtick or single-quote.
console.log(create(['quoted keys'], "'")); // ['quoted keys']Browser support
- Chrome (all versions)
- Firefox (all versions)
- Edge (all versions)
- Opera 15+
- IE 9+
- Safari 6+
- iOS 8+
- Android 4+
Development
Standard stuff, clone the repo and npm install dependencies. The npm scripts available:
build=> run webpack to build developmentdistfile with NODE_ENV=developmentbuild:minified=> run webpack to build productiondistfile with NODE_ENV=productiondev=> run webpack dev server to run example app / playgrounddist=> runsbuildandbuild-minifiedlint=> run ESLint against all files in thesrcfolderprepublish=> runscompile-for-publishprepublish:compile=> runlint,test:coverage,transpile:es,transpile:lib,disttest=> run AVA test functions withNODE_ENV=testtest:coverage=> runtestbut withnycfor coverage checkertest:watch=> runtest, but with persistent watchertranspile:lib=> run babel against all files insrcto create files inlibtranspile:es=> run babel against all files insrcto create files ines, preserving ES2015 modules (forpkg.module)