No Description

index.js 3.3KB

    #!/usr/bin/env node 'use strict'; var express = require('express') var app = express() var path = require('path'); var fs = require('fs'); app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); //app.use('/public', express.static(path.join(__dirname + '/node_modules'))); app.use(express.static('public')) var getPath = function(req){ var path = ""; if(req.params['folder_10'] != undefined){ path = path + req.params['folder_10'] + "/" } if(req.params['folder_9'] != undefined){ path = path + req.params['folder_9'] + "/" } if(req.params['folder_8'] != undefined){ path = path + req.params['folder_8'] + "/" } if(req.params['folder_7'] != undefined){ path = path + req.params['folder_7'] + "/" } if(req.params['folder_6'] != undefined){ path = path + req.params['folder_6'] + "/" } if(req.params['folder_5'] != undefined){ path = path + req.params['folder_5'] + "/" } if(req.params['folder_4'] != undefined){ path = path + req.params['folder_4'] + "/" } if(req.params['folder_3'] != undefined){ path = path + req.params['folder_3'] + "/" } if(req.params['folder_2'] != undefined){ path = path + req.params['folder_2'] + "/" } if(req.params['folder_1'] != undefined){ path = path + req.params['folder_1'] + "/" } return path; } var get_file = function(req, res){ var path = getPath(req); var file_type = ""; var parts; var extension; // Load file or look for index? if(req.params['file'] != undefined){ // Set filetype path = path + req.params['file']; parts = req.params['file'].split("."); extension = parts[parts.length - 1] if(extension == "md"){ file_type = "markdown" } } else { // return index file if it exists } // Action for each filetype if(file_type == "markdown"){ fs.readFile(path, 'utf8', function (err,data) { if (err) { return console.log(err); } res.render('index', { body: markdown_parser(data) }); }); } else { res.sendFile( process.cwd() + "/" + path) } } var markdown_parser = function(data){ var md = require('markdown-it')({ html: true, linkify: true, typographer: true }).use(require('markdown-it-math'), { inlineOpen: '\\(', inlineClose: '\\)', blockOpen: '\\[', blockClose: '\\]' }).use(require('markdown-it-highlightjs'), {auto: true, code: false}) return md.render(data) } var url_paths = [ '/:file', '/:folder_1/:file', '/:folder_2/:folder_1/:file', '/:folder_3/:folder_2/:folder_1/:file', '/:folder_4/:folder_3/:folder_2/:folder_1/:file', '/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', '/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', '/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', '/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', '/:folder_9/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', '/:folder_10/:folder_9/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file' ] for (var i = 0; i < url_paths.length; i++) { app.get(url_paths[i], function (req, res) { get_file(req, res); }) } app.listen(3000, function () { console.log('Codex Server – listening on port 3000') })