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 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