5.1.6 • Published 5 years ago

location-info v5.1.6

Weekly downloads
5
License
ISC
Repository
github
Last release
5 years ago

location-info

Sometimes you want to parse a string into a meaningful object. The url-pattern module does a decent job this. But what or how do you combine a bunch of possibilities together? This module enables you to build out a collection of parsing possibilities that a string can be matched against. Typically it's used for routing, but it could be used for anything.

Route possibilities are created with Redux actions and stored in state. A selector is used to build out the index and allow deciding what route a string belongs to. Set and get custom information about a location object or string path.

The library forces creating a unique key/id for each route. The route info index with redux actions.

import { combineReducers, createStore } from 'redux'
import locInfo, { addRoute, addRoutes, findRoute, getInitState, select } from 'location-info'

// If not otherwise saved in a database/persistent store...
const routeActions = [
  addRoutes({
    home: '/',
    about: '/about',
    member: '/home-drawer/:id',
    image: '/image-upload',
  }),
  addRoute('dat', '/feed/me'),
  addRoute({
    id: 'me', // Ignored because `routeId` has priority.
    routeId: 'user',
    routePattern: '/user/:userId',
    userId: 1,  // Ignored.
    name: 'Profile',  // Ignored.
  }),
  // Alternative to above: addRoute('user', '/user/:userId')
  addRoutes(['foo', 'bar']),
  addRoute({
    id: 'detail',
    pattern: '/detail/:id',
  }),
]
export const reducer = combineReducers({ locInfo })
export const initState = { locInfo: getInitState(routeActions) }
export const store = createStore(reducer, initState)

export const locationDetails = findRoute(selectRoutes(state), '/detail/vroom')

Note that no care is taken to enforce match order. Post an issue if you need it.

Actions

  • addRoute(idOrObj, pattern = null, props = {})
  • addRoutes()
  • delRoute()
  • updateRoute()
5.1.6

5 years ago

5.1.5

5 years ago

5.1.4

5 years ago

5.1.3

5 years ago

5.1.2

5 years ago

5.1.1

5 years ago

5.1.0

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.5.0

7 years ago

4.4.0

7 years ago

4.2.0

7 years ago

4.1.2

7 years ago

4.1.1

7 years ago

4.1.0

7 years ago

4.0.3

7 years ago

4.0.2

7 years ago

4.0.1

7 years ago

4.0.0

7 years ago

3.1.1

7 years ago

3.1.0

8 years ago

3.0.0

8 years ago

2.2.0

8 years ago

2.1.0

8 years ago

2.0.0

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago