Initial commit

James Peret 7 years ago
commit
8040407fdc
4 changed files with 120 additions and 0 deletions
  1. 3 0
      .gitignore
  2. 73 0
      index.js
  3. 19 0
      package.json
  4. 25 0
      readme.md

+ 3 - 0
.gitignore

@@ -0,0 +1,3 @@
1
+
2
+node_modules
3
+test

+ 73 - 0
index.js

@@ -0,0 +1,73 @@
1
+var express = require('express')
2
+var app = express()
3
+
4
+var get_file = function(req, res){
5
+  fs = require('fs')
6
+  var path = ""
7
+  var file_type = ""
8
+  if(req.params['folder'] != undefined){
9
+    path = req.params['folder'] + "/"
10
+  }
11
+  if(req.params['file'] != undefined){
12
+    path = path + req.params['file']
13
+    parts = req.params['file'].split(".")
14
+    extension = parts[parts.length - 1]
15
+    if(extension == "md"){
16
+      file_type = "markdown"
17
+    }
18
+  }
19
+  fs.readFile(path, 'utf8', function (err,data) {
20
+    if (err) {
21
+      return console.log(err);
22
+    }
23
+    process_file(res, data, file_type)
24
+  });
25
+}
26
+
27
+var process_file = function(res, data, file_type){
28
+  if(file_type == "markdown"){
29
+    res.send(markdown_parser(data))
30
+  } else {
31
+    res.send(data)
32
+  }
33
+}
34
+
35
+var markdown_parser = function(data){
36
+  //var markdown = require( "markdown" ).markdown;
37
+  // var marked = require('marked');
38
+  // marked.setOptions({
39
+  //   renderer: new marked.Renderer(),
40
+  //   gfm: true,
41
+  //   tables: true,
42
+  //   breaks: true,
43
+  //   pedantic: true,
44
+  //   sanitize: false,
45
+  //   smartLists: true,
46
+  //   smartypants: true
47
+  // });
48
+  //return markdown.toHTML(data)
49
+  //return marked(data)
50
+  // var md = require('markdown-it')()
51
+  //             .use(require('markdown-it-mathjax')());
52
+
53
+  var md = require('markdown-it')()
54
+        .use(require('markdown-it-math'), {
55
+            inlineOpen: '\(',
56
+            inlineClose: '\\)',
57
+            blockOpen: '\\[',
58
+            blockClose: '\\]'
59
+        })
60
+  return md.render(data)
61
+}
62
+
63
+app.get('/:folder/:file', function (req, res) {
64
+  get_file(req, res);
65
+})
66
+
67
+app.get('/:file', function (req, res) {
68
+  get_file(req, res);
69
+})
70
+
71
+app.listen(3000, function () {
72
+  console.log('Example app listening on port 3000!')
73
+})

+ 19 - 0
package.json

@@ -0,0 +1,19 @@
1
+{
2
+  "name": "codex-server",
3
+  "version": "0.0.1",
4
+  "description": "A node file server with super powers.",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "author": "James Peret",
10
+  "license": "ISC",
11
+  "dependencies": {
12
+    "express": "^4.15.2",
13
+    "markdown": "^0.5.0",
14
+    "markdown-it": "^8.3.1",
15
+    "markdown-it-math": "^4.0.1",
16
+    "markdown-it-mathjax": "^2.0.0",
17
+    "marked": "^0.3.6"
18
+  }
19
+}

+ 25 - 0
readme.md

@@ -0,0 +1,25 @@
1
+# Testing Markdown Parser
2
+
3
+This is a paragraph
4
+
5
+- A list
6
+- Of
7
+- Stuff
8
+
9
+Some Math maybe? \\( 5 + 5 \\)
10
+
11
+$$ 2 + 4^3 $$
12
+
13
+\\(5 + 5\\)
14
+
15
+\[
16
+a^{2} + b^2 = c^2
17
+\]
18
+
19
+Some text with inline math \\(a^{2} + b^2 = c^2\\)
20
+
21
+And block math
22
+
23
+\[
24
+e = sum_(n=0)^oo 1/n!
25
+\]