diff --git a/app.js b/app.js index 1726d53..c7b1fb1 100644 --- a/app.js +++ b/app.js @@ -1,28 +1,48 @@ -const express = require('express') -const siteMap = require('./siteMap') +const express = require('express'); +// A genareted db with all the pages +const siteMap = require('./siteMap'); +// All compilers for all page source types const compile = require('./compile'); const settings = require('./settings'); -const { render } = require('ejs'); -console.log(siteMap) +console.log("siteMap:", siteMap) //DEBUG +// create webserver const app = express() app.set('view engine', 'ejs'); app.set('views', __dirname + '/views') +//TODO: make the uri routing more universal. Probebly ad the siteMap creation +// routing app.use('/:vak/static', renderStatic) app.use('/:vak/:page', renderPage) app.use('/:vak', renderVak) app.use('/', renderIndex) app.use(render404) - +/** This function can be used for as callback for errors + * + * @param {Req} req Request object from Express. + * @param {Res} res Responce object from Express. + * @param {Function} next The next function from Espress. + * + * @returns {Function(err)} a function that renders the 404 page if err is true. + */ function onError404(req, res, next){ return function(err){ - render404(req, res, next) + if(err) + render404(req, res, next) } } +/** Render static content + * + * looks for the content in the folder static + * + * @param {Req} req Request object from Express. + * @param {Res} res Responce object from Express. + * @param {Function} next The next function from Espress. + */ function renderStatic(req, res, next){ if(typeof siteMap[req.params.vak] == 'undefined') return next(); vak = siteMap[req.params.vak] @@ -33,6 +53,14 @@ function renderStatic(req, res, next){ res.sendFile(dir, onError404(req, res, next)) } +/** Render a normal page + * + * lookup the page in siteMap db and renders the page + * + * @param {Req} req Request object from Express. + * @param {Res} res Responce object from Express. + * @param {Function} next The next function from Espress. + */ function renderPage(req, res, next){ if(typeof siteMap[req.params.vak] == 'undefined') return next(); vak = siteMap[req.params.vak] @@ -55,17 +83,26 @@ function renderPage(req, res, next){ }) } +/** Render the index of a topic + * + * lookup the topic in siteMap db and renders the index. + * if the index is not set it set the topic name as headers on the page. + * + * @param {Req} req Request object from Express. + * @param {Res} res Responce object from Express. + * @param {Function} next The next function from Espress. + */ function renderVak(req, res, next){ if(typeof siteMap[req.params.vak] == 'undefined') return next(); vak = siteMap[req.params.vak] - if(vak.index == null){ + if(vak.index == null){ // no index page for this topic res.render('main', { siteMap, title: "notes", topNav: vak.pages, vak: req.params.vak, - main: `