mado 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +8 -0
- data/Guardfile +1 -1
- data/lib/mado.rb +13 -0
- data/lib/mado/app.rb +10 -5
- data/lib/mado/file_handler.rb +0 -2
- data/lib/mado/markdown.rb +31 -20
- data/lib/mado/server.rb +0 -3
- data/lib/mado/version.rb +1 -1
- data/mado.gemspec +4 -1
- data/spec/fixtures/test.md +14 -0
- data/spec/mado/app_spec.rb +20 -0
- data/spec/mado/markdown_spec.rb +33 -0
- metadata +53 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c329e0374481522fcf73e06b26b5a20144583db
|
4
|
+
data.tar.gz: aa212634cdf08ca9c0a1ad249d83368a7a79cbec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c654a8ae96f074800b91f49a2b8f01f0fb261ff2861b0093062968beb85fc46e2af0e1b1f9027fe6e8b62d0ba95b1a3512c0224cf7389729260511171c62880
|
7
|
+
data.tar.gz: 0276d4a49b280d25bd77c043fcde074e9d2263046628c465ebfd50b5e1de908b87fab071ed73cc7d120e5b548253854b9626c13519e44c31f785fcc6ed992093
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Guardfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# A sample Guardfile
|
2
2
|
# More info at https://github.com/guard/guard#readme
|
3
3
|
|
4
|
-
guard :rspec do
|
4
|
+
guard :rspec, cmd: "bundle exec rspec" do
|
5
5
|
watch(%r{^spec/.+_spec\.rb$})
|
6
6
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
7
7
|
watch('spec/spec_helper.rb') { "spec" }
|
data/lib/mado.rb
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
require "coffee-script"
|
2
|
+
require "em-websocket"
|
3
|
+
require "eventmachine"
|
4
|
+
require "gemoji"
|
5
|
+
require "html/pipeline"
|
6
|
+
require "redcarpet"
|
7
|
+
require "rouge"
|
8
|
+
require "rouge/plugins/redcarpet"
|
9
|
+
require "sass"
|
10
|
+
require "sinatra/base"
|
11
|
+
require "slim"
|
12
|
+
require "task_list/filter"
|
13
|
+
|
1
14
|
require "mado/version"
|
2
15
|
require "mado/app"
|
3
16
|
require "mado/file_handler"
|
data/lib/mado/app.rb
CHANGED
@@ -1,8 +1,3 @@
|
|
1
|
-
require "coffee-script"
|
2
|
-
require "sass"
|
3
|
-
require "sinatra/base"
|
4
|
-
require "slim"
|
5
|
-
|
6
1
|
module Mado
|
7
2
|
class App < Sinatra::Base
|
8
3
|
set :root, File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "app"))
|
@@ -31,6 +26,16 @@ module Mado
|
|
31
26
|
coffee :application
|
32
27
|
end
|
33
28
|
|
29
|
+
get "/emoji/*" do
|
30
|
+
emoji_path = Mado::Markdown.emoji_path(params[:splat][0])
|
31
|
+
|
32
|
+
if File.exist?(emoji_path)
|
33
|
+
send_file emoji_path, disposition: "inline"
|
34
|
+
else
|
35
|
+
not_found
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
34
39
|
get "/*" do
|
35
40
|
path = File.expand_path(params[:splat][0], markdown_dir)
|
36
41
|
|
data/lib/mado/file_handler.rb
CHANGED
data/lib/mado/markdown.rb
CHANGED
@@ -1,29 +1,40 @@
|
|
1
|
-
require "redcarpet"
|
2
|
-
require "rouge"
|
3
|
-
require "rouge/plugins/redcarpet"
|
4
|
-
|
5
1
|
module Mado
|
6
2
|
class Markdown
|
7
3
|
class HTML < Redcarpet::Render::HTML
|
8
4
|
include Rouge::Plugins::Redcarpet
|
9
5
|
end
|
10
6
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
7
|
+
class << self
|
8
|
+
def convert_markdown(path)
|
9
|
+
renderer_options = {
|
10
|
+
filter_html: true,
|
11
|
+
with_toc_data: true
|
12
|
+
}
|
13
|
+
convert_options = {
|
14
|
+
autolink: true,
|
15
|
+
fenced_code_blocks: true,
|
16
|
+
lax_spacing: true,
|
17
|
+
no_intra_emphasis: true,
|
18
|
+
strikethrough: true,
|
19
|
+
superscript: true,
|
20
|
+
tables: true
|
21
|
+
}
|
22
|
+
pipeline_context = {
|
23
|
+
asset_root: ""
|
24
|
+
}
|
25
|
+
pipeline = ::HTML::Pipeline.new [
|
26
|
+
::HTML::Pipeline::EmojiFilter,
|
27
|
+
TaskList::Filter
|
28
|
+
]
|
29
|
+
|
30
|
+
renderer = HTML.new(renderer_options)
|
31
|
+
html = Redcarpet::Markdown.new(renderer, convert_options).render(open(path).read)
|
32
|
+
pipeline.call(html, pipeline_context)[:output].to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
def emoji_path(file_path)
|
36
|
+
File.join(Emoji.images_path, "emoji", file_path)
|
37
|
+
end
|
27
38
|
end
|
28
39
|
end
|
29
40
|
end
|
data/lib/mado/server.rb
CHANGED
data/lib/mado/version.rb
CHANGED
data/mado.gemspec
CHANGED
@@ -21,17 +21,20 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency "coffee-script"
|
22
22
|
spec.add_dependency "em-websocket"
|
23
23
|
spec.add_dependency "eventmachine"
|
24
|
+
spec.add_dependency "gemoji"
|
25
|
+
spec.add_dependency "html-pipeline"
|
24
26
|
spec.add_dependency "redcarpet"
|
25
27
|
spec.add_dependency "rouge"
|
26
28
|
spec.add_dependency "sass"
|
27
29
|
spec.add_dependency "sinatra"
|
28
30
|
spec.add_dependency "slim"
|
31
|
+
spec.add_dependency "task_list"
|
29
32
|
spec.add_dependency "thin", "~> 1.6"
|
30
33
|
|
31
34
|
spec.add_development_dependency "bundler", "~> 1.6"
|
32
35
|
spec.add_development_dependency "guard-rspec"
|
33
36
|
spec.add_development_dependency "rake"
|
34
|
-
spec.add_development_dependency "rspec"
|
37
|
+
spec.add_development_dependency "rspec"
|
35
38
|
spec.add_development_dependency "sinatra-reloader"
|
36
39
|
spec.add_development_dependency "terminal-notifier-guard"
|
37
40
|
end
|
data/spec/mado/app_spec.rb
CHANGED
@@ -60,5 +60,25 @@ module Mado
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
63
|
+
|
64
|
+
describe "GET /emoji/*" do
|
65
|
+
let(:emoji_name) do
|
66
|
+
"octocat.png"
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when given emoji exists" do
|
70
|
+
it "should return the image of given emoji" do
|
71
|
+
get "/emoji/#{emoji_name}"
|
72
|
+
expect(last_response).to be_ok
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "when given emoji does not exist" do
|
77
|
+
it "should return 404" do
|
78
|
+
get "/emoji/#{emoji_name}.notfound"
|
79
|
+
expect(last_response).to be_not_found
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
63
83
|
end
|
64
84
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Mado
|
4
|
+
describe Markdown do
|
5
|
+
let(:markdown_path) do
|
6
|
+
fixture_path("test.md")
|
7
|
+
end
|
8
|
+
|
9
|
+
describe ".convert_markdown" do
|
10
|
+
subject { described_class.convert_markdown(markdown_path) }
|
11
|
+
|
12
|
+
it { is_expected.to match(%r(<h1 id="header">header</h1>)) }
|
13
|
+
it { is_expected.to match(%r(<li>item</li>)) }
|
14
|
+
it { is_expected.to match(%r(<pre class="highlight ruby"><code>)) }
|
15
|
+
it { is_expected.to match(%r(<img class="emoji" .+?src="/emoji/.+?">)) }
|
16
|
+
it { is_expected.to match(%r(<input [^<>]*type="checkbox"[^<>]*>)) }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe ".emoji_path" do
|
20
|
+
let(:file_path) do
|
21
|
+
"octocat.png"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return emoji path" do
|
25
|
+
expect(described_class.emoji_path(file_path)).to match(/octocat\.png/)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return existed path" do
|
29
|
+
expect(File.exist?(described_class.emoji_path(file_path))).to be true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mado
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dtan4
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coffee-script
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: gemoji
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: html-pipeline
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: redcarpet
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +150,20 @@ dependencies:
|
|
122
150
|
- - ">="
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: task_list
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
125
167
|
- !ruby/object:Gem::Dependency
|
126
168
|
name: thin
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,16 +224,16 @@ dependencies:
|
|
182
224
|
name: rspec
|
183
225
|
requirement: !ruby/object:Gem::Requirement
|
184
226
|
requirements:
|
185
|
-
- - "
|
227
|
+
- - ">="
|
186
228
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
229
|
+
version: '0'
|
188
230
|
type: :development
|
189
231
|
prerelease: false
|
190
232
|
version_requirements: !ruby/object:Gem::Requirement
|
191
233
|
requirements:
|
192
|
-
- - "
|
234
|
+
- - ">="
|
193
235
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
236
|
+
version: '0'
|
195
237
|
- !ruby/object:Gem::Dependency
|
196
238
|
name: sinatra-reloader
|
197
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -255,7 +297,9 @@ files:
|
|
255
297
|
- mado.gemspec
|
256
298
|
- spec/fixtures/example/example.png
|
257
299
|
- spec/fixtures/other/other.png
|
300
|
+
- spec/fixtures/test.md
|
258
301
|
- spec/mado/app_spec.rb
|
302
|
+
- spec/mado/markdown_spec.rb
|
259
303
|
- spec/spec_helper.rb
|
260
304
|
homepage: https://github.com/dtan4/mado
|
261
305
|
licenses:
|
@@ -277,12 +321,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
277
321
|
version: '0'
|
278
322
|
requirements: []
|
279
323
|
rubyforge_project:
|
280
|
-
rubygems_version: 2.
|
324
|
+
rubygems_version: 2.4.5
|
281
325
|
signing_key:
|
282
326
|
specification_version: 4
|
283
327
|
summary: Realtime Github Flavored Markdown Preview
|
284
328
|
test_files:
|
285
329
|
- spec/fixtures/example/example.png
|
286
330
|
- spec/fixtures/other/other.png
|
331
|
+
- spec/fixtures/test.md
|
287
332
|
- spec/mado/app_spec.rb
|
333
|
+
- spec/mado/markdown_spec.rb
|
288
334
|
- spec/spec_helper.rb
|