mamemose 0.4.0.2 → 0.4.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +5 -6
- data/lib/mamemose/html.rb +221 -0
- data/lib/mamemose/version.rb +1 -1
- data/lib/mamemose.rb +2 -220
- metadata +15 -24
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 545fbe99d10fb35061bbfec50f5aefd514599e70
|
4
|
+
data.tar.gz: a25605115077b430b9edbad9ed152f054abea889
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5c7416e49f4fe27d1675e227092003fa9af7de3bd3545518de4bb32c747d5fd0634a548ba74d85a998e5e44b481765862690e48395d5c6ddeb71fe6507ed8cd5
|
7
|
+
data.tar.gz: 4f41615561ed6da7426a403bbc400e0bad18e4851c18208a0e65e40fa7a3377d84176592b214f66f3d26340d1cee86cae67af37e29b9517ea45a4492673a2b72
|
data/README.md
CHANGED
@@ -182,18 +182,17 @@ RECENT_NUM = 0
|
|
182
182
|
|
183
183
|
# すべてのページで MathJax が使えるように
|
184
184
|
CUSTOM_HEADER = <<HEADER
|
185
|
-
<script
|
186
|
-
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
|
185
|
+
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
|
187
186
|
</script>
|
188
187
|
HEADER
|
189
188
|
|
190
189
|
# すべてのページで SyntaxHighlighter が使えるように
|
191
190
|
host = "http://alexgorbatchev.com/pub/sh/current" # 変数も使えます
|
192
191
|
CUSTOM_FOOTER = <<FOOTER
|
193
|
-
<link href="#{host}/styles/shCoreDefault.css" rel="stylesheet"
|
194
|
-
<script src="#{host}/scripts/shCore.js"
|
195
|
-
<script src="#{host}/scripts/shAutoloader.js"
|
196
|
-
<script
|
192
|
+
<link href="#{host}/styles/shCoreDefault.css" rel="stylesheet" />
|
193
|
+
<script src="#{host}/scripts/shCore.js"></script>
|
194
|
+
<script src="#{host}/scripts/shAutoloader.js"></script>
|
195
|
+
<script>
|
197
196
|
SyntaxHighlighter.autoloader(
|
198
197
|
'AS3 as3 #{host}/scripts/shBrushAS3.js',
|
199
198
|
'AppleScript applescript #{host}/scripts/shBrushAppleScript.js',
|
@@ -0,0 +1,221 @@
|
|
1
|
+
module Mamemose::HTML
|
2
|
+
def header_html(title, fullpath)
|
3
|
+
html = <<HTML
|
4
|
+
<!DOCTYPE HTML>
|
5
|
+
<html>
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="Content-Type" content="#{CONTENT_TYPE}" />
|
8
|
+
<title>#{title}</title>
|
9
|
+
<style><!--
|
10
|
+
body {
|
11
|
+
margin: auto;
|
12
|
+
padding: 0 2em;
|
13
|
+
max-width: 80%;
|
14
|
+
border-left: 1px solid black;
|
15
|
+
border-right: 1px solid black;
|
16
|
+
font-size: 100%;
|
17
|
+
line-height: 140%;
|
18
|
+
}
|
19
|
+
pre {
|
20
|
+
border: 1px solid #090909;
|
21
|
+
background-color: #f8f8f8;
|
22
|
+
padding: 0.5em;
|
23
|
+
margin: 0.5em 1em;
|
24
|
+
}
|
25
|
+
code {
|
26
|
+
border: 1px solid #cccccc;
|
27
|
+
background-color: #f8f8f8;
|
28
|
+
padding: 2px 0.5em;
|
29
|
+
margin: 0 0.5em;
|
30
|
+
}
|
31
|
+
a {
|
32
|
+
text-decoration: none;
|
33
|
+
}
|
34
|
+
a:link, a:visited, a:hover {
|
35
|
+
color: #4444cc;
|
36
|
+
}
|
37
|
+
a:hover {
|
38
|
+
text-decoration: underline;
|
39
|
+
}
|
40
|
+
h1, h2, h3 {
|
41
|
+
font-weight: bold;
|
42
|
+
color: #2f4f4f;
|
43
|
+
}
|
44
|
+
h1 {
|
45
|
+
font-size: 200%;
|
46
|
+
line-height: 100%;
|
47
|
+
margin: 1em 0;
|
48
|
+
border-bottom: 1px solid #2f4f4f;
|
49
|
+
}
|
50
|
+
h2 {
|
51
|
+
font-size: 175%;
|
52
|
+
line-height: 100%;
|
53
|
+
margin: 1em 0;
|
54
|
+
padding-left: 0.5em;
|
55
|
+
border-left: 0.5em solid #2f4f4f;
|
56
|
+
}
|
57
|
+
h3 {
|
58
|
+
font-size: 150%;
|
59
|
+
line-height: 100%;
|
60
|
+
margin: 1em 0;
|
61
|
+
}
|
62
|
+
h4, h5 {
|
63
|
+
font-weight: bold;
|
64
|
+
color: #000000;
|
65
|
+
margin: 1em 0 0.5em;
|
66
|
+
}
|
67
|
+
h4 { font-size: 125% }
|
68
|
+
h5 { font-size: 100% }
|
69
|
+
p {
|
70
|
+
margin: 0.7em 1em;
|
71
|
+
text-indent: 1em;
|
72
|
+
}
|
73
|
+
div.footnotes {
|
74
|
+
padding-top: 1em;
|
75
|
+
color: #090909;
|
76
|
+
}
|
77
|
+
div#header {
|
78
|
+
margin-top: 1em;
|
79
|
+
padding-bottom: 1em;
|
80
|
+
border-bottom: 1px dotted black;
|
81
|
+
}
|
82
|
+
div#header > form {
|
83
|
+
display: float;
|
84
|
+
float: right;
|
85
|
+
text-align: right;
|
86
|
+
}
|
87
|
+
a.filename {
|
88
|
+
color: #666666;
|
89
|
+
}
|
90
|
+
footer {
|
91
|
+
border-top: 1px dotted black;
|
92
|
+
padding: 0.5em;
|
93
|
+
font-size: 80%;
|
94
|
+
text-align: right;
|
95
|
+
margin: 5em 0 1em;
|
96
|
+
}
|
97
|
+
blockquote {
|
98
|
+
margin: 1em 3em;
|
99
|
+
border: 2px solid #999;
|
100
|
+
padding: 0.3em 0;
|
101
|
+
background-color: #f3fff3;
|
102
|
+
}
|
103
|
+
hr {
|
104
|
+
height: 1px;
|
105
|
+
border: none;
|
106
|
+
border-top: 1px solid black;
|
107
|
+
}
|
108
|
+
table {
|
109
|
+
padding: 0;
|
110
|
+
margin: 1em 2em;
|
111
|
+
border-spacing: 0;
|
112
|
+
border-collapse: collapse;
|
113
|
+
}
|
114
|
+
table tr {
|
115
|
+
border-top: 1px solid #cccccc;
|
116
|
+
background-color: white;
|
117
|
+
margin: 0;
|
118
|
+
padding: 0;
|
119
|
+
}
|
120
|
+
table tr:nth-child(2n) {
|
121
|
+
background-color: #f8f8f8;
|
122
|
+
}
|
123
|
+
table tr th {
|
124
|
+
font-weight: bold;
|
125
|
+
border: 1px solid #cccccc;
|
126
|
+
text-align: left;
|
127
|
+
margin: 0;
|
128
|
+
padding: 6px 13px;
|
129
|
+
}
|
130
|
+
table tr td {
|
131
|
+
border: 1px solid #cccccc;
|
132
|
+
text-align: left;
|
133
|
+
margin: 0;
|
134
|
+
padding: 6px 13px;
|
135
|
+
}
|
136
|
+
table tr th :first-child, table tr td :first-child {
|
137
|
+
margin-top: 0;
|
138
|
+
}
|
139
|
+
table tr th :last-child, table tr td :last-child {
|
140
|
+
margin-bottom: 0;
|
141
|
+
}
|
142
|
+
--></style>
|
143
|
+
<script>
|
144
|
+
function copy(text) {
|
145
|
+
prompt("Copy filepath below:", text);
|
146
|
+
}
|
147
|
+
</script>
|
148
|
+
<script>
|
149
|
+
(function(){
|
150
|
+
var fullpath = "#{fullpath}";
|
151
|
+
ws = new WebSocket("ws://#{HOST}:#{WS_PORT}");
|
152
|
+
ws.onopen = function() {
|
153
|
+
console.log("WebSocket (port=#{WS_PORT}) connected: " + fullpath);
|
154
|
+
ws.send(fullpath);
|
155
|
+
};
|
156
|
+
ws.onmessage = function(evt) {
|
157
|
+
console.log("received: " + evt.data);
|
158
|
+
if (evt.data == "updated") {
|
159
|
+
console.log("update detected. reloading...");
|
160
|
+
location.reload();
|
161
|
+
}
|
162
|
+
};
|
163
|
+
})();
|
164
|
+
</script>
|
165
|
+
#{CUSTOM_HEADER}
|
166
|
+
</head>
|
167
|
+
<body id="body">
|
168
|
+
#{CUSTOM_BODY}
|
169
|
+
HTML
|
170
|
+
return html
|
171
|
+
end
|
172
|
+
|
173
|
+
def search_form(path, q="")
|
174
|
+
link_str = ""
|
175
|
+
uri = ""
|
176
|
+
path.split('/').each do |s|
|
177
|
+
next if s == ''
|
178
|
+
uri += "/" + s
|
179
|
+
link_str += File::SEPARATOR + "<a href='#{uri}'>#{s}</a>"
|
180
|
+
end
|
181
|
+
link_str += " <a class='filename' href=\"javascript:copy('#{docpath(uri)}');\">[copy]</a>"
|
182
|
+
uri.gsub!('/'+File::basename(uri), "") if File.file?(fullpath(uri))
|
183
|
+
link_str = "<a href='/'>#{DOCUMENT_ROOT}</a>" + link_str
|
184
|
+
search_form = <<HTML
|
185
|
+
<form action="/search" method="get">
|
186
|
+
<input name="path" type="hidden" value="#{uri}" />
|
187
|
+
<input name="q" type="text" value="#{q}" size="24" />
|
188
|
+
<input type="submit" value="search" />
|
189
|
+
</form>
|
190
|
+
HTML
|
191
|
+
return "<div id=\"header\">#{link_str}#{search_form}</div>"
|
192
|
+
end
|
193
|
+
|
194
|
+
def footer_html(filepath=nil)
|
195
|
+
if filepath
|
196
|
+
updated = File.basename(filepath)\
|
197
|
+
+ " [#{filesize(filepath)}]"\
|
198
|
+
+ " / Last Updated: "\
|
199
|
+
+ File.mtime(filepath).strftime("%Y-%m-%d %H:%M:%S")\
|
200
|
+
+ " / "
|
201
|
+
else
|
202
|
+
updated = ""
|
203
|
+
end
|
204
|
+
html = <<HTML
|
205
|
+
#{CUSTOM_FOOTER}
|
206
|
+
<footer id="footer">
|
207
|
+
#{updated}
|
208
|
+
<a href="https://github.com/daimatz/mamemose">mamemose: Markdown memo server</a>
|
209
|
+
</footer>
|
210
|
+
</body>
|
211
|
+
</html>
|
212
|
+
HTML
|
213
|
+
return html
|
214
|
+
end
|
215
|
+
|
216
|
+
def link_list(title, link)
|
217
|
+
file = fullpath(link)
|
218
|
+
str = filesize(file)
|
219
|
+
return "- [#{title}](#{link}) <a class='filename' href=\"javascript:copy('#{docpath(link)}');\">[#{escaped_basename(link)}, #{str}]</a>\n"
|
220
|
+
end
|
221
|
+
end
|
data/lib/mamemose/version.rb
CHANGED
data/lib/mamemose.rb
CHANGED
@@ -7,6 +7,7 @@ require 'htmlentities'
|
|
7
7
|
|
8
8
|
require 'mamemose/version'
|
9
9
|
|
10
|
+
require 'mamemose/html'
|
10
11
|
require 'mamemose/path'
|
11
12
|
|
12
13
|
require 'mamemose/env'
|
@@ -21,6 +22,7 @@ end
|
|
21
22
|
|
22
23
|
class Mamemose::Server
|
23
24
|
include Mamemose::Path
|
25
|
+
include Mamemose::HTML
|
24
26
|
|
25
27
|
def initialize(port)
|
26
28
|
@mamemose = WEBrick::HTTPServer.new({ :Port => port ? port.to_i : PORT })
|
@@ -70,220 +72,6 @@ private
|
|
70
72
|
@mamemose.shutdown
|
71
73
|
end
|
72
74
|
|
73
|
-
def header_html(title, fullpath)
|
74
|
-
html = <<HTML
|
75
|
-
<!DOCTYPE HTML>
|
76
|
-
<html>
|
77
|
-
<head>
|
78
|
-
<meta http-equiv="Content-Type" content="#{CONTENT_TYPE}" />
|
79
|
-
<title>#{title}</title>
|
80
|
-
<style type="text/css"><!--
|
81
|
-
body {
|
82
|
-
margin: auto;
|
83
|
-
padding: 0 2em;
|
84
|
-
max-width: 80%;
|
85
|
-
border-left: 1px solid black;
|
86
|
-
border-right: 1px solid black;
|
87
|
-
font-size: 100%;
|
88
|
-
line-height: 140%;
|
89
|
-
}
|
90
|
-
pre {
|
91
|
-
border: 1px solid #090909;
|
92
|
-
background-color: #f8f8f8;
|
93
|
-
padding: 0.5em;
|
94
|
-
margin: 0.5em 1em;
|
95
|
-
}
|
96
|
-
code {
|
97
|
-
border: 1px solid #cccccc;
|
98
|
-
background-color: #f8f8f8;
|
99
|
-
padding: 2px 0.5em;
|
100
|
-
margin: 0 0.5em;
|
101
|
-
}
|
102
|
-
a {
|
103
|
-
text-decoration: none;
|
104
|
-
}
|
105
|
-
a:link, a:visited, a:hover {
|
106
|
-
color: #4444cc;
|
107
|
-
}
|
108
|
-
a:hover {
|
109
|
-
text-decoration: underline;
|
110
|
-
}
|
111
|
-
h1, h2, h3 {
|
112
|
-
font-weight: bold;
|
113
|
-
color: #2f4f4f;
|
114
|
-
}
|
115
|
-
h1 {
|
116
|
-
font-size: 200%;
|
117
|
-
line-height: 100%;
|
118
|
-
margin: 1em 0;
|
119
|
-
border-bottom: 1px solid #2f4f4f;
|
120
|
-
}
|
121
|
-
h2 {
|
122
|
-
font-size: 175%;
|
123
|
-
line-height: 100%;
|
124
|
-
margin: 1em 0;
|
125
|
-
padding-left: 0.5em;
|
126
|
-
border-left: 0.5em solid #2f4f4f;
|
127
|
-
}
|
128
|
-
h3 {
|
129
|
-
font-size: 150%;
|
130
|
-
line-height: 100%;
|
131
|
-
margin: 1em 0;
|
132
|
-
}
|
133
|
-
h4, h5 {
|
134
|
-
font-weight: bold;
|
135
|
-
color: #000000;
|
136
|
-
margin: 1em 0 0.5em;
|
137
|
-
}
|
138
|
-
h4 { font-size: 125% }
|
139
|
-
h5 { font-size: 100% }
|
140
|
-
p {
|
141
|
-
margin: 0.7em 1em;
|
142
|
-
text-indent: 1em;
|
143
|
-
}
|
144
|
-
div.footnotes {
|
145
|
-
padding-top: 1em;
|
146
|
-
color: #090909;
|
147
|
-
}
|
148
|
-
div#header {
|
149
|
-
margin-top: 1em;
|
150
|
-
padding-bottom: 1em;
|
151
|
-
border-bottom: 1px dotted black;
|
152
|
-
}
|
153
|
-
div#header > form {
|
154
|
-
display: float;
|
155
|
-
float: right;
|
156
|
-
text-align: right;
|
157
|
-
}
|
158
|
-
a.filename {
|
159
|
-
color: #666666;
|
160
|
-
}
|
161
|
-
footer {
|
162
|
-
border-top: 1px dotted black;
|
163
|
-
padding: 0.5em;
|
164
|
-
font-size: 80%;
|
165
|
-
text-align: right;
|
166
|
-
margin: 5em 0 1em;
|
167
|
-
}
|
168
|
-
blockquote {
|
169
|
-
margin: 1em 3em;
|
170
|
-
border: 2px solid #999;
|
171
|
-
padding: 0.3em 0;
|
172
|
-
background-color: #f3fff3;
|
173
|
-
}
|
174
|
-
hr {
|
175
|
-
height: 1px;
|
176
|
-
border: none;
|
177
|
-
border-top: 1px solid black;
|
178
|
-
}
|
179
|
-
table {
|
180
|
-
padding: 0;
|
181
|
-
margin: 1em 2em;
|
182
|
-
border-spacing: 0;
|
183
|
-
border-collapse: collapse;
|
184
|
-
}
|
185
|
-
table tr {
|
186
|
-
border-top: 1px solid #cccccc;
|
187
|
-
background-color: white;
|
188
|
-
margin: 0;
|
189
|
-
padding: 0;
|
190
|
-
}
|
191
|
-
table tr:nth-child(2n) {
|
192
|
-
background-color: #f8f8f8;
|
193
|
-
}
|
194
|
-
table tr th {
|
195
|
-
font-weight: bold;
|
196
|
-
border: 1px solid #cccccc;
|
197
|
-
text-align: left;
|
198
|
-
margin: 0;
|
199
|
-
padding: 6px 13px;
|
200
|
-
}
|
201
|
-
table tr td {
|
202
|
-
border: 1px solid #cccccc;
|
203
|
-
text-align: left;
|
204
|
-
margin: 0;
|
205
|
-
padding: 6px 13px;
|
206
|
-
}
|
207
|
-
table tr th :first-child, table tr td :first-child {
|
208
|
-
margin-top: 0;
|
209
|
-
}
|
210
|
-
table tr th :last-child, table tr td :last-child {
|
211
|
-
margin-bottom: 0;
|
212
|
-
}
|
213
|
-
--></style>
|
214
|
-
<script>
|
215
|
-
function copy(text) {
|
216
|
-
prompt("Copy filepath below:", text);
|
217
|
-
}
|
218
|
-
</script>
|
219
|
-
<script>
|
220
|
-
(function(){
|
221
|
-
var fullpath = "#{fullpath}";
|
222
|
-
ws = new WebSocket("ws://#{HOST}:#{WS_PORT}");
|
223
|
-
ws.onopen = function() {
|
224
|
-
console.log("WebSocket (port=#{WS_PORT}) connected: " + fullpath);
|
225
|
-
ws.send(fullpath);
|
226
|
-
};
|
227
|
-
ws.onmessage = function(evt) {
|
228
|
-
console.log("received: " + evt.data);
|
229
|
-
if (evt.data == "updated") {
|
230
|
-
console.log("update detected. reloading...");
|
231
|
-
location.reload();
|
232
|
-
}
|
233
|
-
};
|
234
|
-
})();
|
235
|
-
</script>
|
236
|
-
#{CUSTOM_HEADER}
|
237
|
-
</head>
|
238
|
-
<body>
|
239
|
-
#{CUSTOM_BODY}
|
240
|
-
HTML
|
241
|
-
return html
|
242
|
-
end
|
243
|
-
|
244
|
-
def search_form(path, q="")
|
245
|
-
link_str = ""
|
246
|
-
uri = ""
|
247
|
-
path.split('/').each do |s|
|
248
|
-
next if s == ''
|
249
|
-
uri += "/" + s
|
250
|
-
link_str += File::SEPARATOR + "<a href='#{uri}'>#{s}</a>"
|
251
|
-
end
|
252
|
-
link_str += " <a class='filename' href=\"javascript:copy('#{docpath(uri)}');\">[copy]</a>"
|
253
|
-
uri.gsub!('/'+File::basename(uri), "") if File.file?(fullpath(uri))
|
254
|
-
link_str = "<a href='/'>#{DOCUMENT_ROOT}</a>" + link_str
|
255
|
-
search_form = <<HTML
|
256
|
-
<form action="/search" method="get">
|
257
|
-
<input name="path" type="hidden" value="#{uri}" />
|
258
|
-
<input name="q" type="text" value="#{q}" size="24" />
|
259
|
-
<input type="submit" value="search" />
|
260
|
-
</form>
|
261
|
-
HTML
|
262
|
-
return "<div id=\"header\">#{link_str}#{search_form}</div>"
|
263
|
-
end
|
264
|
-
|
265
|
-
def footer_html(filepath=nil)
|
266
|
-
if filepath
|
267
|
-
updated = File.basename(filepath)\
|
268
|
-
+ " [#{filesize(filepath)}]"\
|
269
|
-
+ " / Last Updated: "\
|
270
|
-
+ File.mtime(filepath).strftime("%Y-%m-%d %H:%M:%S")\
|
271
|
-
+ " / "
|
272
|
-
else
|
273
|
-
updated = ""
|
274
|
-
end
|
275
|
-
html = <<HTML
|
276
|
-
#{CUSTOM_FOOTER}
|
277
|
-
<footer>
|
278
|
-
#{updated}
|
279
|
-
<a href="https://github.com/daimatz/mamemose">mamemose: Markdown memo server</a>
|
280
|
-
</footer>
|
281
|
-
</body>
|
282
|
-
</html>
|
283
|
-
HTML
|
284
|
-
return html
|
285
|
-
end
|
286
|
-
|
287
75
|
def req_search(req, res)
|
288
76
|
query = req.query
|
289
77
|
path = fullpath(query["path"])
|
@@ -419,12 +207,6 @@ HTML
|
|
419
207
|
return {:dirs=>dirs, :markdowns=>markdowns, :others=>others}
|
420
208
|
end
|
421
209
|
|
422
|
-
def link_list(title, link)
|
423
|
-
file = fullpath(link)
|
424
|
-
str = filesize(file)
|
425
|
-
return "- [#{title}](#{link}) <a class='filename' href=\"javascript:copy('#{docpath(link)}');\">[#{escaped_basename(link)}, #{str}]</a>\n"
|
426
|
-
end
|
427
|
-
|
428
210
|
def filesize(file)
|
429
211
|
File.file?(file) ? sprintf("%.1fKB", File.size(file) / 1024.0) : "dir"
|
430
212
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mamemose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- daimatz
|
@@ -14,65 +13,57 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: redcarpet
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 2.2.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 2.2.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: htmlentities
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 4.3.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 4.3.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: thor
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 0.17.0
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 0.17.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: em-websocket
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 0.5.0
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 0.5.0
|
78
69
|
description: Markdown memo server
|
@@ -94,6 +85,7 @@ files:
|
|
94
85
|
- index.png
|
95
86
|
- lib/mamemose.rb
|
96
87
|
- lib/mamemose/env.rb
|
88
|
+
- lib/mamemose/html.rb
|
97
89
|
- lib/mamemose/path.rb
|
98
90
|
- lib/mamemose/util.rb
|
99
91
|
- lib/mamemose/version.rb
|
@@ -102,26 +94,25 @@ files:
|
|
102
94
|
- sample.png
|
103
95
|
homepage: https://github.com/daimatz/mamemose
|
104
96
|
licenses: []
|
97
|
+
metadata: {}
|
105
98
|
post_install_message:
|
106
99
|
rdoc_options: []
|
107
100
|
require_paths:
|
108
101
|
- lib
|
109
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
103
|
requirements:
|
112
|
-
- -
|
104
|
+
- - '>='
|
113
105
|
- !ruby/object:Gem::Version
|
114
106
|
version: '0'
|
115
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
108
|
requirements:
|
118
|
-
- -
|
109
|
+
- - '>='
|
119
110
|
- !ruby/object:Gem::Version
|
120
111
|
version: '0'
|
121
112
|
requirements: []
|
122
113
|
rubyforge_project:
|
123
|
-
rubygems_version:
|
114
|
+
rubygems_version: 2.0.0
|
124
115
|
signing_key:
|
125
|
-
specification_version:
|
116
|
+
specification_version: 4
|
126
117
|
summary: Markdown memo server
|
127
118
|
test_files: []
|