UNPKG

cxltx

Version:

CXLTX (CoffeeXeLaTeX) brings CoffeeScript to (Xe)(La)TeX documents. Fully general approach; use your own favorite language.

125 lines (93 loc) 3.36 kB
// Generated by CoffeeScript 1.8.0 (function() { var CXLTX, MULTIMIX, TRM, TYPES, alert, app, badge, debug, express, help, ids_provider, info, log, main, njs_url, provider, rpr, sample_provider, server_options, view, warn, whisper, _echo; njs_url = require('url'); TYPES = require('coffeenode-types'); TRM = require('coffeenode-trm'); rpr = TRM.rpr.bind(TRM); badge = 'CXLTX/server'; log = TRM.get_logger('plain', badge); info = TRM.get_logger('info', badge); whisper = TRM.get_logger('whisper', badge); debug = TRM.get_logger('debug', badge); alert = TRM.get_logger('alert', badge); warn = TRM.get_logger('warn', badge); help = TRM.get_logger('help', badge); _echo = TRM.echo.bind(TRM); express = require('express'); CXLTX = require('./main'); MULTIMIX = require('coffeenode-multimix'); sample_provider = require('./sample-provider'); ids_provider = require('./ids-provider'); provider = MULTIMIX.compose(sample_provider, ids_provider); server_options = { 'host': '127.0.0.1', 'port': 8910 }; this.request_count = 0; this.main = function() { var process_request; process_request = (function(_this) { return function(request, handler) { var RC, command, parameter, splitter, texroute, _ref; _this.request_count += 1; RC = _this.request_count; _ref = request.params, texroute = _ref.texroute, splitter = _ref.splitter, command = _ref.command, parameter = _ref.parameter; /* TAINT rewrite as middleware */ if (!((texroute != null) && (command != null))) { return handler("need 2 or 3 parts in URL route"); } CXLTX.dispatch(provider, texroute, splitter, command, parameter, handler); return null; }; })(this); return (function(_this) { return function(request, response) { process_request(request, function(error, result) { var headers, status; if (error != null) { if ((TYPES.type_of(error)) !== 'text') { error = rpr(error); } warn("©23 " + _this.request_count + " error:", error); status = 500; headers = { 'Content-Type': 'text/plain' }; response.writeHeader(status, headers); response.write(CXLTX.escape_error(error)); return response.end(); } if (!TYPES.isa_text(result)) { result = rpr(result); } whisper("©23 " + _this.request_count + " result:", rpr(result)); status = 200; headers = { 'Content-Type': 'text/plain' }; response.writeHeader(status, headers); if (result != null) { response.write(result); } return response.end(); }); return null; }; })(this); }; app = express(); view = this.main(); app.use(express.logger({ 'format': 'dev' })); main = this.main(); app.get('/:texroute/:splitter/:command/:parameter', main); app.get('/:texroute/:splitter/:command', main); app.listen(server_options['port'], function(error) { if (error != null) { throw error; } return log(TRM.green("listening to " + server_options['host'] + ":" + server_options['port'])); }); }).call(this);