'use strict';
const http = require('http');
const Highlights = require('highlights');
const highlighter = new Highlights();
highlighter.requireGrammarsSync({
"modulePath": require.resolve('language-perl6/package.json'),
});
highlighter.requireGrammarsSync({
"modulePath": require.resolve('language-emacs-lisp/package.json'),
});
highlighter.requireGrammarsSync({
"modulePath": require.resolve('language-openscad/package.json'),
});
const Selector = require('first-mate-select-grammar');
const selector = Selector();
function addExtensionsToGrammar(knownExtension,extraExtensions) {
let grammar = selector.selectGrammar(
highlighter.registry,
`some_file.${knownExtension}`,
"not much");
if (grammar) {
Array.prototype.push.apply(grammar.fileTypes,extraExtensions);
}
}
addExtensionsToGrammar('cpp',['ino']);
const server = http.createServer((req, res) => {
const filename = req.headers['filename'];
let buffer = '';
res.setHeader('Content-type','text/html; charset=utf-8');
res.statusCode = 200;
req.on('end', () => {
highlighter.highlight({
"scopeName": filename,
"filePath": filename,
"fileContents": buffer,
}, (err,html) => {
res.write(html, '', () => { res.end() });
});
});
req.on('data', (chunk) => {
buffer += chunk;
});
});
server.on('clientError', (err, socket) => {
socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});
server.listen(8000,'127.0.0.1');