-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMarkdown.cgi
More file actions
executable file
·71 lines (67 loc) · 1.93 KB
/
Markdown.cgi
File metadata and controls
executable file
·71 lines (67 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/ruby
#
# Markdown.cgi
#
# Copyright 2014 Corsis
# http://www.corsis.com/
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'digest/md5'
require 'redcarpet'
require 'memcache'
CACHETIME = 300
CACHE = MemCache.new('127.0.0.1')
private
def data_cache(key)
unless output = CACHE.get(key)
output = yield
CACHE.set(key, output, CACHETIME)
end
return output
end
print "Content-type: text/html\n\n"
renderer = Redcarpet::Render::HTML.new(
:with_toc_data => true,
:xhtml => true,
)
markdown = Redcarpet::Markdown.new(
renderer,
:autolink => true,
:strikethrough => true,
:superscript => true,
:underline => true,
:highlight => true,
:fenced_code_blocks => true,
:tables => true,
)
uri = ENV['PATH_TRANSLATED']
key = Digest::MD5.hexdigest(uri)
puts data_cache(key) {
"<!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
"<link rel='stylesheet' href='//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css'>\n" +
"<style type='text/css'>\n" +
".container { margin: 20 0 20 0; }\n" +
"</style>\n" +
"</head>\n" +
"<body>\n" +
"<div class='container'>\n" +
"<script src='//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js'></script>\n" +
"<script src='//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js'></script>\n" +
markdown.render(File.read(uri)) +
"</div>\n" +
"</body>\n" +
"</html>"
}