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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbe4f23725dba3638d08c82cb9fcf1f667b653eb
4
- data.tar.gz: d34989f288c0b71e2dfd0d64786577ece18900a0
3
+ metadata.gz: 4c329e0374481522fcf73e06b26b5a20144583db
4
+ data.tar.gz: aa212634cdf08ca9c0a1ad249d83368a7a79cbec
5
5
  SHA512:
6
- metadata.gz: 11e88821e283d1f1c6db26a3c8576240171e61bea505838c278d8385b996b7f1efe1da44c39e9c47e1cbd9fa59d7245ed5d5ed032a23166f3f0334b695546b40
7
- data.tar.gz: 43e5fb7cd39bb3a91da726d55a4fb7323676fe052940b7bdecc9b883994364234025eaa9efe4eed2fc8bcf2a850989510e1e004698fbb3b7579752e99fe05c6e
6
+ metadata.gz: 2c654a8ae96f074800b91f49a2b8f01f0fb261ff2861b0093062968beb85fc46e2af0e1b1f9027fe6e8b62d0ba95b1a3512c0224cf7389729260511171c62880
7
+ data.tar.gz: 0276d4a49b280d25bd77c043fcde074e9d2263046628c465ebfd50b5e1de908b87fab071ed73cc7d120e5b548253854b9626c13519e44c31f785fcc6ed992093
@@ -3,3 +3,4 @@ rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
5
  - 2.1
6
+ - 2.2
@@ -1,3 +1,11 @@
1
+ ## 0.2.0
2
+ * Render Emoji :octocat:
3
+ * Render GitHub-like tasklist
4
+
5
+ ## 0.1.1
6
+ * Update CSS to be more similar to GitHub
7
+ * Run Sinatra application in production environment to avoid loading sinatra-reloader
8
+
1
9
  ## 0.1.0
2
10
  * Show local image
3
11
 
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" }
@@ -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"
@@ -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
 
@@ -1,5 +1,3 @@
1
- require "eventmachine"
2
-
3
1
  module Mado
4
2
  class FileHandler < EventMachine::FileWatch
5
3
  def initialize(sockets)
@@ -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
- def self.convert_markdown(path)
12
- renderer_options = {
13
- filter_html: true,
14
- with_toc_data: true
15
- }
16
- convert_options = {
17
- autolink: true,
18
- fenced_code_blocks: true,
19
- lax_spacing: true,
20
- no_intra_emphasis: true,
21
- strikethrough: true,
22
- superscript: true,
23
- tables: true
24
- }
25
- renderer = HTML.new(renderer_options)
26
- Redcarpet::Markdown.new(renderer, convert_options).render(open(path).read)
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
@@ -1,6 +1,3 @@
1
- require "em-websocket"
2
- require "eventmachine"
3
-
4
1
  module Mado
5
2
  class Server
6
3
  def self.run(options)
@@ -1,3 +1,3 @@
1
1
  module Mado
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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", "~> 3.0.0"
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
@@ -0,0 +1,14 @@
1
+ # header
2
+
3
+ hoge
4
+
5
+ - item
6
+ - item
7
+ - :octocat:
8
+ - [ ] todo
9
+
10
+ ```ruby
11
+ def hello
12
+ puts "hello"
13
+ end
14
+ ```
@@ -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.1.1
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: 2014-11-14 00:00:00.000000000 Z
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: 3.0.0
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: 3.0.0
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.2.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