bath-es5
TypeScript icon, indicating that this package has built-in type declarations

3.0.3 • Public • Published

bath (ES5, transpiled for the browser)

A simple path template engine. Forked from bouzuya/bath

Twitter hashtag is #bathjs.

This branch is for 2.x users. 1.x users: See 1.x branch.

Installation

$ npm install bath-es5

Usage

import assert from 'assert';
import bath from 'bath';
 
const { names, params, path } = bath('/users/{id}');
assert.deepEqual(names, ['id']);
assert.deepEqual(params('/users/123'), { id: '123' });
assert.deepEqual(path({ id: '123' }), '/users/123');
import assert from 'assert';
import { names, params, path } from 'bath';
 
const template = '/users/{id}';
assert.deepEqual(names(template), ['id']);
assert.deepEqual(params(template)('/users/123'), { id: '123' });
assert.deepEqual(path(template)({ id: '123' }), '/users/123');
import assert from 'assert';
import { names } from 'bath/names'; // import `names()` only
import { params } from 'bath/params'; // import `params()` only
import { path } from 'bath/path';     // import `path()` only
 
const template = '/users/{id}';
assert.deepEqual(names(template), ['id']);
assert.deepEqual(params(template)('/users/123'), { id: '123' });
assert.deepEqual(path(template)({ id: '123' }), '/users/123');

Types

// '/users/{userId}/messages/{messageId}'
export type PathTemplate = string;
 
// 'userId'
export type ParameterName = string;
 
// { 'userId': /^\w+$/, 'messageId': /^\d+$/ }
export type ParameterPatterns = { [parameterName: string]: RegExp; };
 
// { 'userId': 'john', 'messageId': '123' }
export type Parameters = { [parameterName: string]: string; };
 
// '/users/john/messages/123'
export type Path = string;
 
// assert.deepEqual(
//   params('/users/john/messages/123'),
//   { 'userId': 'john', 'messageId': '123' }
// );
export type ParametersFn = (path: Path) => Parameters | null;
 
// assert.deepEqual(
//   path({ 'userId': 'john', 'messageId': '123' }),
//   '/users/john/messages/123'
// );
export type PathFn = (params: Parameters) => Path | null;
 
// const { params, path } = bath('/users/{userId}/messages/{messageId}')
export type Bath = (
  templatePathTemplate,
  patterns?: ParameterPatterns
) => { names: ParameterName[]; path: PathFn; params: ParametersFn; };

Related Project

Badges

npm version Travis CI Coveralls

License

MIT

Author

bouzuya <m@bouzuya.net> (http://bouzuya.net)

Dependents (9)

Package Sidebar

Install

npm i bath-es5

Weekly Downloads

52,076

Version

3.0.3

License

MIT

Unpacked Size

13.9 kB

Total Files

17

Last publish

Collaborators

  • anttiviljami