Skip to content

Telichkin/AstuteDict

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AstuteDict

AstuteDict is a tiny library (~300B minified and gzipped) with minimal API and zero dependencies which can help you to build your router for frontend or backend application.

Installation

npm install --save astute-dict

API by Examples

AstuteDict is not bound to URL structure or window object. The main aim of this library is to provide minimal API for mapping templates with variables to values.

Creation

const Dict = require('astute-dict');

const routes = Dict({
  'just-word': 'just-word-value',
  'library-{name}': 'library-value',
  'catch-*-all': 'catch-all-value',
  'ending-slash': 'without',
  'ending-slash/': 'with',
});

Getting a value

const justWord = routes.get('just-word');
console.log(justWord); // { value: 'just-word-value', variables: {} }

const library = routes.get('library-astute-dict');
console.log(library); // { value: 'library-value', variables: { name: 'astute-dict' } }

const catchAll = routes.get('catch-this-all');
console.log(catchAll); // { value: 'catch-all-value', variables: {} }

const withoutEndingSlash = routes.get('ending-slash');
console.log(withoutEndingSlash); // { value: 'without', variables: {} }

const withEndingSlash = routes.get('ending-slash/');
console.log(withEndingSlash); // { value: 'with', variables: {}

Notes

More specific keys should be above general rules:

const rightRoutes = Dict({
  'user-admin': 'admin',
  'user-{role}': 'role',
});

const admin = rightRoutes.get('user-admin');
console.log(admin); // { value: 'admin', variables: {} } }

const anon = rightRoutes.get('user-anon');
console.log(anon); // { value: 'role', variables: { role: 'anon' } }


const wrongRoutes = Dict({
  'user-{role}': 'role',
  'user-admin': 'admin', // not available
});

const notAdmin = wrongRoutes.get('user-admin');
console.log(notAdmin); // { value: 'role', variables: { role: 'admin' } }

const stillAnon = wrongRoutes.get('user-anon');
console.log(stillAnon); // { value: 'role', variables: { role: 'anon' } }

About

Small and simple basis for your own js router

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published