Code coverage report for lib/handlers/default-index.js

Statements: 100% (20 / 20)      Branches: 100% (14 / 14)      Functions: 100% (3 / 3)      Lines: 100% (20 / 20)      Ignored: none     

All files » lib/handlers/ » default-index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 442   2       1 10   10 8     10 1     9   1 7 3     4   1 4 1   1     3   3 3              
module.exports = handleDefault
 
var ansicolors = require('ansicolors')
  , path = require('path')
  , fs = require('fs')
 
function handleDefault(opts, io, nextHandler) {
  var generatedIndex = opts.generatedIndex
 
  if(generatedIndex === undefined) {
    generatedIndex = path.join(__dirname, 'default.html')
  }
 
  if(!generatedIndex) {
    return nextHandler
  }
 
  return handle
 
  function handle(server, req, resp, parsed) {
    if(!/html/.test(req.headers.accept || '')) {
      return nextHandler(server, req, resp, parsed)
    }
 
    return fs.readFile(generatedIndex, 'utf8', onfile)
 
    function onfile(err, data) {
      if(err) {
        io.error(err.stack)
 
        return nextHandler(server, req, resp, parsed)
      }
 
      parsed.loggedPathname = ansicolors.blue(parsed.pathname) +
        ' (' + ansicolors.blue('generated') + ')'
      resp.setHeader('content-type', 'text/html')
      resp.end(data.replace(
          /\{\{entry\}\}/g
        , Object.keys(opts.entries || {})[0] || ''
      ))
    }
  }
}