mado 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|