cloudcmd/lib/server/markdown.js
coderaiser b71ec29db6 feature(cloudcmd) lib/client -> client
Move lib/client and lib/server one level upper
2016-12-16 09:56:44 +02:00

68 lines
1.7 KiB
JavaScript

'use strict';
var DIR = './',
DIR_ROOT = __dirname + '/../../',
fs = require('fs'),
root = require(DIR + 'root'),
pullout = require('pullout/legacy'),
ponse = require('ponse'),
markdown = require('markdown-it')();
function check(name, request, callback) {
if (typeof name !== 'string')
throw Error('name should be string!');
else if (!request)
throw Error('request could not be empty!');
else if (typeof callback !== 'function')
throw Error('callback should be function!');
}
module.exports = function(name, request, callback) {
var query,
method = request.method;
check(name, request, callback);
switch(method) {
case 'GET':
name = name.replace('/markdown', '');
query = ponse.getQuery(request);
if (query === 'relative')
name = DIR_ROOT + name;
else
name = root(name);
fs.readFile(name, 'utf8', function(error, data) {
if (error)
callback(error);
else
parse(data, callback);
});
break;
case 'PUT':
pullout(request, 'string', function(error, data) {
if (error)
callback(error);
else
parse(data, callback);
});
break;
}
};
function parse(data, callback) {
var md;
process.nextTick(function() {
md = markdown.render(data);
callback(null, md);
});
}