greenmat 3.2.0.2 → 3.2.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.
@@ -18,37 +18,37 @@ class MarkdownTest < Greenmat::TestCase
18
18
 
19
19
  def test_that_simple_one_liner_goes_to_html
20
20
  assert_respond_to @markdown, :render
21
- assert_equal "<p>Hello World.</p>\n", @markdown.render("Hello World.")
21
+ html_equal "<p>Hello World.</p>\n", @markdown.render("Hello World.")
22
22
  end
23
23
 
24
24
  def test_that_inline_markdown_goes_to_html
25
25
  markdown = @markdown.render('_Hello World_!')
26
- assert_equal "<p><em>Hello World</em>!</p>\n", markdown
26
+ html_equal "<p><em>Hello World</em>!</p>\n", markdown
27
27
  end
28
28
 
29
29
  def test_that_inline_markdown_starts_and_ends_correctly
30
30
  markdown = render_with({:no_intra_emphasis => true}, '_start _ foo_bar bar_baz _ end_ *italic* **bold** <a>_blah_</a>')
31
31
 
32
- assert_equal "<p><em>start _ foo_bar bar_baz _ end</em> <em>italic</em> <strong>bold</strong> <a><em>blah</em></a></p>\n", markdown
32
+ html_equal "<p><em>start _ foo_bar bar_baz _ end</em> <em>italic</em> <strong>bold</strong> <a><em>blah</em></a></p>\n", markdown
33
33
 
34
34
  markdown = @markdown.render("Run 'rake radiant:extensions:rbac_base:migrate'")
35
- assert_equal "<p>Run &#39;rake radiant:extensions:rbac_base:migrate&#39;</p>\n", markdown
35
+ html_equal "<p>Run 'rake radiant:extensions:rbac_base:migrate'</p>\n", markdown
36
36
  end
37
37
 
38
38
  def test_that_urls_are_not_doubly_escaped
39
39
  markdown = @markdown.render('[Page 2](/search?query=Markdown+Test&page=2)')
40
- assert_equal "<p><a href=\"/search?query=Markdown+Test&amp;page=2\">Page 2</a></p>\n", markdown
40
+ html_equal "<p><a href=\"/search?query=Markdown+Test&amp;page=2\">Page 2</a></p>\n", markdown
41
41
  end
42
42
 
43
43
  def test_simple_inline_html
44
44
  #markdown = Markdown.new("before\n\n<div>\n foo\n</div>\nafter")
45
45
  markdown = @markdown.render("before\n\n<div>\n foo\n</div>\n\nafter")
46
- assert_equal "<p>before</p>\n\n<div>\n foo\n</div>\n\n<p>after</p>\n", markdown
46
+ html_equal "<p>before</p>\n\n<div>\n foo\n</div>\n\n<p>after</p>\n", markdown
47
47
  end
48
48
 
49
49
  def test_that_html_blocks_do_not_require_their_own_end_tag_line
50
50
  markdown = @markdown.render("Para 1\n\n<div><pre>HTML block\n</pre></div>\n\nPara 2 [Link](#anchor)")
51
- assert_equal "<p>Para 1</p>\n\n<div><pre>HTML block\n</pre></div>\n\n<p>Para 2 <a href=\"#anchor\">Link</a></p>\n",
51
+ html_equal "<p>Para 1</p>\n\n<div><pre>HTML block\n</pre></div>\n\n<p>Para 2 <a href=\"#anchor\">Link</a></p>\n",
52
52
  markdown
53
53
  end
54
54
 
@@ -58,8 +58,8 @@ class MarkdownTest < Greenmat::TestCase
58
58
  "A wise man once said:\n\n" +
59
59
  " > Isn't it wonderful just to be alive.\n"
60
60
  )
61
- assert_equal "<p>A wise man once said:</p>\n\n" +
62
- "<blockquote>\n<p>Isn&#39;t it wonderful just to be alive.</p>\n</blockquote>\n",
61
+ html_equal "<p>A wise man once said:</p>\n\n" +
62
+ "<blockquote><p>Isn't it wonderful just to be alive.</p>\n</blockquote>\n",
63
63
  markdown
64
64
  end
65
65
 
@@ -68,7 +68,7 @@ class MarkdownTest < Greenmat::TestCase
68
68
  "Things to watch out for\n" +
69
69
  "<ul>\n<li>Blah</li>\n</ul>\n")
70
70
 
71
- assert_equal "<p>Things to watch out for</p>\n\n" +
71
+ html_equal "<p>Things to watch out for</p>\n\n" +
72
72
  "<ul>\n<li>Blah</li>\n</ul>\n", markdown
73
73
  end
74
74
 
@@ -90,7 +90,7 @@ MARKDOWN
90
90
 
91
91
  <p>This paragraph is not part of the list.</p>
92
92
  HTML
93
- assert_equal expected, @markdown.render(text)
93
+ html_equal expected, @markdown.render(text)
94
94
  end
95
95
 
96
96
  # http://github.com/rtomayko/rdiscount/issues/#issue/13
@@ -98,37 +98,37 @@ HTML
98
98
  text = "The Ant-Sugar Tales \n" +
99
99
  "=================== \n\n" +
100
100
  "By Candice Yellowflower \n"
101
- assert_equal "<h1>The Ant-Sugar Tales </h1>\n\n<p>By Candice Yellowflower </p>\n", @markdown.render(text)
101
+ html_equal "<h1>The Ant-Sugar Tales </h1>\n\n<p>By Candice Yellowflower </p>\n", @markdown.render(text)
102
102
  end
103
103
 
104
104
  def test_that_intra_emphasis_works
105
105
  rd = render_with({}, "foo_bar_baz")
106
- assert_equal "<p>foo<em>bar</em>baz</p>\n", rd
106
+ html_equal "<p>foo<em>bar</em>baz</p>\n", rd
107
107
 
108
108
  rd = render_with({:no_intra_emphasis => true},"foo_bar_baz")
109
- assert_equal "<p>foo_bar_baz</p>\n", rd
109
+ html_equal "<p>foo_bar_baz</p>\n", rd
110
110
  end
111
111
 
112
112
  def test_that_autolink_flag_works
113
113
  rd = render_with({:autolink => true}, "http://github.com/rtomayko/rdiscount")
114
- assert_equal "<p><a href=\"http://github.com/rtomayko/rdiscount\">http://github.com/rtomayko/rdiscount</a></p>\n", rd
114
+ html_equal "<p><a href=\"http://github.com/rtomayko/rdiscount\">http://github.com/rtomayko/rdiscount</a></p>\n", rd
115
115
  end
116
116
 
117
117
  def test_that_tags_can_have_dashes_and_underscores
118
118
  rd = @markdown.render("foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b>")
119
- assert_equal "<p>foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b></p>\n", rd
119
+ html_equal "<p>foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b></p>\n", rd
120
120
  end
121
121
 
122
122
  def test_link_syntax_is_not_processed_within_code_blocks
123
123
  markdown = @markdown.render(" This is a code block\n This is a link [[1]] inside\n")
124
- assert_equal "<pre><code>This is a code block\nThis is a link [[1]] inside\n</code></pre>\n",
124
+ html_equal "<pre><code>This is a code block\nThis is a link [[1]] inside\n</code></pre>\n",
125
125
  markdown
126
126
  end
127
127
 
128
128
  def test_whitespace_after_urls
129
129
  rd = render_with({:autolink => true}, "Japan: http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm (yes, japan)")
130
130
  exp = %{<p>Japan: <a href="http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm">http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm</a> (yes, japan)</p>\n}
131
- assert_equal exp, rd
131
+ html_equal exp, rd
132
132
  end
133
133
 
134
134
  def test_memory_leak_when_parsing_char_links
@@ -147,7 +147,7 @@ HTML
147
147
  end
148
148
 
149
149
  def test_infinite_loop_in_header
150
- assert_equal "<h1>Body</h1>\n", @markdown.render(<<-header)
150
+ html_equal "<h1>Body</h1>\n", @markdown.render(<<-header)
151
151
  ######
152
152
  #Body#
153
153
  ######
@@ -155,8 +155,8 @@ HTML
155
155
  end
156
156
 
157
157
  def test_a_hyphen_and_a_equal_should_not_be_converted_to_heading
158
- assert_equal "<p>-</p>\n", @markdown.render("-")
159
- assert_equal "<p>=</p>\n", @markdown.render("=")
158
+ html_equal "<p>-</p>\n", @markdown.render("-")
159
+ html_equal "<p>=</p>\n", @markdown.render("=")
160
160
  end
161
161
 
162
162
  def test_that_tables_flag_works
@@ -243,32 +243,6 @@ fenced
243
243
  assert !out.include?("<pre><code>")
244
244
  end
245
245
 
246
- def test_that_indented_code_preserves_references
247
- text = <<indented
248
- This is normal text
249
-
250
- Link to [Google][1]
251
-
252
- [1]: http://google.com
253
- indented
254
- out = Greenmat::Markdown.new(Greenmat::Render::HTML, :fenced_code_blocks => true).render(text)
255
- assert out.include?("[1]: http://google.com")
256
- end
257
-
258
- def test_that_fenced_flag_preserves_references
259
- text = <<fenced
260
- This is normal text
261
-
262
- ```
263
- Link to [Google][1]
264
-
265
- [1]: http://google.com
266
- ```
267
- fenced
268
- out = Greenmat::Markdown.new(Greenmat::Render::HTML, :fenced_code_blocks => true).render(text)
269
- assert out.include?("[1]: http://google.com")
270
- end
271
-
272
246
  def test_that_indented_flag_works
273
247
  text = <<indented
274
248
  This is a simple text
@@ -285,14 +259,14 @@ indented
285
259
 
286
260
  def test_that_headers_are_linkable
287
261
  markdown = @markdown.render('### Hello [GitHub](http://github.com)')
288
- assert_equal "<h3>Hello <a href=\"http://github.com\">GitHub</a></h3>\n", markdown
262
+ html_equal "<h3>Hello <a href=\"http://github.com\">GitHub</a></h3>\n", markdown
289
263
  end
290
264
 
291
265
  def test_autolinking_with_ent_chars
292
266
  markdown = render_with({:autolink => true}, <<text)
293
267
  This a stupid link: https://github.com/rtomayko/tilt/issues?milestone=1&state=open
294
268
  text
295
- assert_equal "<p>This a stupid link: <a href=\"https://github.com/rtomayko/tilt/issues?milestone=1&amp;state=open\">https://github.com/rtomayko/tilt/issues?milestone=1&amp;state=open</a></p>\n", markdown
269
+ html_equal "<p>This a stupid link: <a href=\"https://github.com/rtomayko/tilt/issues?milestone=1&state=open\">https://github.com/rtomayko/tilt/issues?milestone=1&amp;state=open</a></p>\n", markdown
296
270
  end
297
271
 
298
272
  def test_spaced_headers
@@ -318,13 +292,13 @@ text
318
292
 
319
293
  def test_emphasis_escaping
320
294
  markdown = @markdown.render("**foo\\*** _dd\\_dd_")
321
- assert_equal "<p><strong>foo*</strong> <em>dd_dd</em></p>\n", markdown
295
+ html_equal "<p><strong>foo*</strong> <em>dd_dd</em></p>\n", markdown
322
296
  end
323
297
 
324
298
  def test_char_escaping_when_highlighting
325
299
  markdown = "==attribute\\==="
326
300
  output = render_with({highlight: true}, markdown)
327
- assert_equal "<p><mark>attribute=</mark></p>\n", output
301
+ html_equal "<p><mark>attribute=</mark></p>\n", output
328
302
  end
329
303
 
330
304
  def test_ordered_lists_with_lax_spacing
@@ -337,6 +311,6 @@ text
337
311
 
338
312
  def test_references_with_tabs_after_colon
339
313
  markdown = @markdown.render("[Link][id]\n[id]:\t\t\thttp://google.es")
340
- assert_equal "<p><a href=\"http://google.es\">Link</a></p>\n", markdown
314
+ html_equal "<p><a href=\"http://google.es\">Link</a></p>\n", markdown
341
315
  end
342
316
  end
@@ -1,33 +1,29 @@
1
1
  # coding: UTF-8
2
2
  Encoding.default_internal = 'UTF-8' if defined? Encoding
3
3
 
4
+ gem 'test-unit', '>= 2' # necessary when not using bundle exec
5
+
4
6
  require 'test/unit'
7
+ require 'nokogiri'
5
8
 
6
9
  require 'greenmat'
7
10
  require 'greenmat/render_strip'
8
11
  require 'greenmat/render_man'
12
+ require 'greenmat/compat'
9
13
 
10
14
  class Greenmat::TestCase < Test::Unit::TestCase
11
- def assert_renders(html, markdown)
12
- assert_equal html, render(markdown)
15
+ def html_equal(html_a, html_b)
16
+ assert_equal Nokogiri::HTML::DocumentFragment.parse(html_a).to_html,
17
+ Nokogiri::HTML::DocumentFragment.parse(html_b).to_html
13
18
  end
14
19
 
15
- def render(markdown, options = {})
16
- options = options.fetch(:with, {})
17
-
18
- if options.kind_of?(Array)
19
- options = Hash[options.map {|o| [o, true]}]
20
- end
21
-
22
- render = renderer.new(options)
23
- parser = Greenmat::Markdown.new(render, options)
24
-
25
- parser.render(markdown)
20
+ def assert_renders(html, markdown)
21
+ html_equal html, parser.render(markdown)
26
22
  end
27
23
 
28
24
  private
29
25
 
30
- def renderer
31
- @renderer ||= Greenmat::Render::HTML
26
+ def parser
27
+ @parser ||= Greenmat::Markdown.new(Greenmat::Render::HTML)
32
28
  end
33
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greenmat
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0.2
4
+ version: 3.2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natacha Porté
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-25 00:00:00.000000000 Z
12
+ date: 2015-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.6.0
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 1.6.0
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: rake-compiler
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -59,14 +73,14 @@ dependencies:
59
73
  requirements:
60
74
  - - "~>"
61
75
  - !ruby/object:Gem::Version
62
- version: 3.0.9
76
+ version: 2.5.4
63
77
  type: :development
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
81
  - - "~>"
68
82
  - !ruby/object:Gem::Version
69
- version: 3.0.9
83
+ version: 2.5.4
70
84
  description: A Markdown parser for Qiita, based on Redcarpet.
71
85
  email: nkymyj@gmail.com
72
86
  executables:
@@ -106,7 +120,6 @@ files:
106
120
  - ext/greenmat/stack.h
107
121
  - greenmat.gemspec
108
122
  - lib/greenmat.rb
109
- - lib/greenmat/cli.rb
110
123
  - lib/greenmat/compat.rb
111
124
  - lib/greenmat/render_man.rb
112
125
  - lib/greenmat/render_strip.rb
@@ -203,7 +216,6 @@ files:
203
216
  - test/benchmark.rb
204
217
  - test/custom_render_test.rb
205
218
  - test/fixtures/benchmark.md
206
- - test/greenmat_bin_test.rb
207
219
  - test/greenmat_compat_test.rb
208
220
  - test/html5_test.rb
209
221
  - test/html_render_test.rb
@@ -329,7 +341,6 @@ test_files:
329
341
  - test/benchmark.rb
330
342
  - test/custom_render_test.rb
331
343
  - test/fixtures/benchmark.md
332
- - test/greenmat_bin_test.rb
333
344
  - test/greenmat_compat_test.rb
334
345
  - test/html5_test.rb
335
346
  - test/html_render_test.rb
@@ -1,86 +0,0 @@
1
- require 'greenmat'
2
- require 'optparse'
3
-
4
- module Greenmat
5
- # This class aims at easing the creation of custom
6
- # binary for your needs. For example, you can add new
7
- # options or change the existing ones. The parsing
8
- # is handled by Ruby's OptionParser. For instance:
9
- #
10
- # class Custom::CLI < Greenmat::CLI
11
- # def self.options_parser
12
- # super.tap do |opts|
13
- # opts.on("--rainbow") do
14
- # @@options[:rainbow] = true
15
- # end
16
- # end
17
- # end
18
- #
19
- # def self.render_object
20
- # @@options[:rainbow] ? RainbowRender : super
21
- # end
22
- # end
23
- class CLI
24
- def self.options_parser
25
- @@options = {
26
- render_extensions: {},
27
- parse_extensions: {},
28
- smarty_pants: false
29
- }
30
-
31
- OptionParser.new do |opts|
32
- opts.banner = "Usage: greenmat [--parse <extension>...] " \
33
- "[--render <extension>...] [--smarty] <file>..."
34
-
35
- opts.on("--parse EXTENSION", "Enable a parsing extension") do |ext|
36
- ext = ext.gsub('-', '_').to_sym
37
- @@options[:parse_extensions][ext] = true
38
- end
39
-
40
- opts.on("--render EXTENSION", "Enable a rendering extension") do |ext|
41
- ext = ext.gsub('-', '_').to_sym
42
- @@options[:render_extensions][ext] = true
43
- end
44
-
45
- opts.on("--smarty", "Enable Smarty Pants") do
46
- @@options[:smarty_pants] = true
47
- end
48
-
49
- opts.on_tail("-v", "--version", "Display the current version") do
50
- STDOUT.write "Greenmat #{Greenmat::VERSION}"
51
- exit
52
- end
53
-
54
- opts.on_tail("-h", "--help", "Display this help message") do
55
- puts opts
56
- exit
57
- end
58
- end
59
- end
60
-
61
- def self.process(args)
62
- self.legacy_parse!(args)
63
- self.options_parser.parse!(args)
64
- STDOUT.write parser_object.render(ARGF.read)
65
- end
66
-
67
- def self.render_object
68
- @@options[:smarty_pants] ? Render::SmartyHTML : Render::HTML
69
- end
70
-
71
- def self.parser_object
72
- renderer = render_object.new(@@options[:render_extensions])
73
- Greenmat::Markdown.new(renderer, @@options[:parse_extensions])
74
- end
75
-
76
- def self.legacy_parse!(args) # :nodoc:
77
- # Workaround for backward compatibility as OptionParser
78
- # doesn't support the --flag-OPTION syntax.
79
- args.select {|a| a =~ /--(parse|render)-/ }.each do |arg|
80
- args.delete(arg)
81
- arg = arg.partition(/\b-/)
82
- args.push(arg.first, arg.last)
83
- end
84
- end
85
- end
86
- end
@@ -1,80 +0,0 @@
1
- require 'test_helper'
2
- require 'tempfile'
3
-
4
- class GreenmatBinTest < Greenmat::TestCase
5
- def setup
6
- @fixture_file = Tempfile.new('bin')
7
- @fixture_path = @fixture_file.path
8
-
9
- @fixture_file.write "A ==simple== fixture file -- with " \
10
- "a [link](https://github.com)."
11
- @fixture_file.rewind
12
- end
13
-
14
- def teardown
15
- @fixture_file.unlink
16
- end
17
-
18
- def test_vanilla_bin
19
- run_bin(@fixture_path)
20
-
21
- expected = "<p>A ==simple== fixture file -- with " \
22
- "a <a href=\"https://github.com\">link</a>.</p>\n"
23
-
24
- assert_equal expected, @output
25
- end
26
-
27
- def test_enabling_a_parse_option
28
- run_bin("--parse", "highlight", @fixture_path)
29
-
30
- assert_output "<mark>"
31
- refute_output "=="
32
- end
33
-
34
- def test_enabling_a_render_option
35
- run_bin("--render", "no-links", @fixture_path)
36
-
37
- assert_output "[link]"
38
- refute_output "</a>"
39
- end
40
-
41
- def test_enabling_smarty_pants
42
- run_bin("--smarty", @fixture_path)
43
-
44
- assert_output "&ndash"
45
- refute_output "--"
46
- end
47
-
48
- def test_version_option
49
- run_bin("--version")
50
- assert_output "Greenmat #{Greenmat::VERSION}"
51
- end
52
-
53
- def test_legacy_option_parsing
54
- run_bin("--parse-highlight", "--render-no-links", @fixture_path)
55
-
56
- assert_output "<mark>"
57
- refute_output "=="
58
-
59
- assert_output "[link]"
60
- refute_output "</a>"
61
- end
62
-
63
- private
64
-
65
- def run_bin(*args)
66
- bin_path = File.expand_path('../../bin/greenmat', __FILE__)
67
-
68
- IO.popen("#{bin_path} #{args.join(" ")}") do |stream|
69
- @output = stream.read
70
- end
71
- end
72
-
73
- def assert_output(pattern)
74
- assert_match pattern, @output
75
- end
76
-
77
- def refute_output(pattern)
78
- refute_match Regexp.new(pattern), @output
79
- end
80
- end