45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| 
 | |
| /**
 | |
|  * Module dependencies.
 | |
|  */
 | |
| 
 | |
| var escapeHtml = require('escape-html');
 | |
| var express = require('../..');
 | |
| var fs = require('node:fs');
 | |
| var marked = require('marked');
 | |
| var path = require('node:path');
 | |
| 
 | |
| var app = module.exports = express();
 | |
| 
 | |
| // register .md as an engine in express view system
 | |
| 
 | |
| app.engine('md', function(path, options, fn){
 | |
|   fs.readFile(path, 'utf8', function(err, str){
 | |
|     if (err) return fn(err);
 | |
|     var html = marked.parse(str).replace(/\{([^}]+)\}/g, function(_, name){
 | |
|       return escapeHtml(options[name] || '');
 | |
|     });
 | |
|     fn(null, html);
 | |
|   });
 | |
| });
 | |
| 
 | |
| app.set('views', path.join(__dirname, 'views'));
 | |
| 
 | |
| // make it the default, so we don't need .md
 | |
| app.set('view engine', 'md');
 | |
| 
 | |
| app.get('/', function(req, res){
 | |
|   res.render('index', { title: 'Markdown Example' });
 | |
| });
 | |
| 
 | |
| app.get('/fail', function(req, res){
 | |
|   res.render('missing', { title: 'Markdown Example' });
 | |
| });
 | |
| 
 | |
| /* istanbul ignore next */
 | |
| if (!module.parent) {
 | |
|   app.listen(3000);
 | |
|   console.log('Express started on port 3000');
 | |
| }
 |