Home

Awesome

site-tree-router

URL router for SiteTree view engine

var SiteTreeRouter = require('site-tree-router');
var SiteTree = require('site-tree');

// Initialize site tree
var siteTree = new SiteTree(document);

// Configure router
var router = new SiteTreeRouter({
	// Map view nodes to urls
  '/': require('./homepage'),
  'subpage': require('./subpage')
}, siteTree);

// Route between pages with url router:
// Present homepage
router.route('/');

// Present subpage
router.route('/subpage/');

// Present homepage again
router.route('/');

Installation

$ npm install site-tree-router

API

SiteTreeRouter constructor properties

SiteTreeRouter.ensureRoutes(routes[, options])

Validates provided routes configuration, for views to be validated siteTree needs to be passed with options (as options.siteTree). It's also used internally on router initialization.

SiteTreeRouter.normalizeRoutes(routes, options)

Normalizes routes map up into basic ControllerRouter format. So out of provided view, a controller function is generated.
siteTree instance needs to be passed with options (as options.siteTree).
Input object is left intact, new one is returned. It is assumed that input routes are valid (as assured by ensureRoutes function). This function is used internally at router initialization.

SiteTreeRouter initialization

new SiteTreeRouter(routes, siteTree[, options])
var router = new SiteTreeRouter({
  '/': homepageView,
  'subpage': subpageView
}, siteTree);

// Present homepage
router.route('/');

Initializes router, for provided routes map, and siteTree instance.

Supported options:

Additionally all options as described in controller-router documentation, are supported.

Routes map configuration

Routes map is a configuration of key value, pairs, where key is a path, and value is a view configuration.

Routes map: path keys

Please refer to controller-router documentation.

Routes map: view values

For static path keys, views maybe provided directlye.g.:

'foo/bar': viewConfiguration

They can also be configured via objects which provide a view property:

'foo/bar': {
  view: viewConfiguration
};

Two of above configurations are equal in meaning.

For dynamic paths, same way, view needs to be provied via view property.

For more details refer to controller-router documentation.

Tests Build Status

$ npm test