tight-redcarpet 3.1.1

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.
@@ -0,0 +1,34 @@
1
+ # coding: UTF-8
2
+ require 'test_helper'
3
+
4
+ # Disabled by default
5
+ # (these are the easy ones -- the evil ones are not disclosed)
6
+ class PathologicalInputsTest # < Redcarpet::TestCase
7
+ def setup
8
+ @markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
9
+ end
10
+
11
+ def test_pathological_1
12
+ star = '*' * 250000
13
+ @markdown.render("#{star}#{star} hi #{star}#{star}")
14
+ end
15
+
16
+ def test_pathological_2
17
+ crt = '^' * 255
18
+ str = "#{crt}(\\)"
19
+ @markdown.render("#{str*300}")
20
+ end
21
+
22
+ def test_pathological_3
23
+ c = "`t`t`t`t`t`t" * 20000000
24
+ @markdown.render(c)
25
+ end
26
+
27
+ def test_pathological_4
28
+ @markdown.render(" [^a]: #{ "A" * 10000 }\n#{ "[^a][]" * 1000000 }\n")
29
+ end
30
+
31
+ def test_unbound_recursion
32
+ @markdown.render(("[" * 10000) + "foo" + ("](bar)" * 10000))
33
+ end
34
+ end
@@ -0,0 +1,38 @@
1
+ # coding: UTF-8
2
+ require 'test_helper'
3
+
4
+ class RedcarpetCompatTest < Redcarpet::TestCase
5
+ def test_simple_compat_api
6
+ html = RedcarpetCompat.new("This is_just_a test").to_html
7
+ html_equal "<p>This is<em>just</em>a test</p>\n", html
8
+ end
9
+
10
+ def test_compat_api_enables_extensions
11
+ html = RedcarpetCompat.new("This is_just_a test", :no_intra_emphasis).to_html
12
+ html_equal "<p>This is_just_a test</p>\n", html
13
+ end
14
+
15
+ def test_compat_api_knows_fenced_code_extension
16
+ text = "```ruby\nx = 'foo'\n```"
17
+ html = RedcarpetCompat.new(text, :fenced_code).to_html
18
+ html_equal "<pre><code class=\"ruby\">x = 'foo'\n</code></pre>\n", html
19
+ end
20
+
21
+ def test_compat_api_ignores_gh_blockcode_extension
22
+ text = "```ruby\nx = 'foo'\n```"
23
+ html = RedcarpetCompat.new(text, :fenced_code, :gh_blockcode).to_html
24
+ html_equal "<pre><code class=\"ruby\">x = 'foo'\n</code></pre>\n", html
25
+ end
26
+
27
+ def test_compat_api_knows_no_intraemphasis_extension
28
+ html = RedcarpetCompat.new("This is_just_a test", :no_intraemphasis).to_html
29
+ html_equal "<p>This is_just_a test</p>\n", html
30
+ end
31
+
32
+ def test_translate_outdated_extensions
33
+ # these extensions are no longer used
34
+ exts = [:gh_blockcode, :no_tables, :smart, :strict]
35
+ html = RedcarpetCompat.new('"TEST"', *exts).to_html
36
+ html_equal "<p>&quot;TEST&quot;</p>\n", html
37
+ end
38
+ end
@@ -0,0 +1,45 @@
1
+ # coding: UTF-8
2
+ require 'test_helper'
3
+
4
+ class SmartyHTMLTest < Redcarpet::TestCase
5
+ def setup
6
+ @smarty_markdown = Redcarpet::Markdown.new(Redcarpet::Render::SmartyHTML)
7
+ end
8
+
9
+ def test_that_smartyhtml_converts_single_quotes
10
+ markdown = @smarty_markdown.render("They're not for sale.")
11
+ assert_equal "<p>They&rsquo;re not for sale.</p>\n", markdown
12
+ end
13
+
14
+ def test_that_smartyhtml_converts_double_quotes
15
+ rd = @smarty_markdown.render(%("Quoted text"))
16
+ assert_equal %(<p>&ldquo;Quoted text&rdquo;</p>\n), rd
17
+ end
18
+
19
+ def test_that_smartyhtml_converts_double_hyphen
20
+ rd = @smarty_markdown.render("double hyphen -- ndash")
21
+ assert_equal "<p>double hyphen &ndash; ndash</p>\n", rd
22
+ end
23
+
24
+ def test_that_smartyhtml_converts_triple_hyphen
25
+ rd = @smarty_markdown.render("triple hyphen --- mdash")
26
+ assert_equal "<p>triple hyphen &mdash; mdash</p>\n", rd
27
+ end
28
+
29
+ def test_that_smartyhtml_ignores_double_hyphen_in_code
30
+ rd = @smarty_markdown.render("double hyphen in `--option`")
31
+ assert_equal "<p>double hyphen in <code>--option</code></p>\n", rd
32
+ end
33
+
34
+ def test_that_smartyhtml_ignores_pre
35
+ rd = @smarty_markdown.render(" It's a test of \"pre\"\n")
36
+ expected = "It's a test of \"pre\""
37
+ assert rd.include?(expected), "\"#{rd}\" should contain \"#{expected}\""
38
+ end
39
+
40
+ def test_that_smartyhtml_ignores_code
41
+ rd = @smarty_markdown.render("`It's a test of \"code\"`\n")
42
+ expected = "It's a test of \"code\""
43
+ assert rd.include?(expected), "\"#{rd}\" should contain \"#{expected}\""
44
+ end
45
+ end
@@ -0,0 +1,48 @@
1
+ # coding: UTF-8
2
+ require 'test_helper'
3
+
4
+ class SmartyPantsTest < Redcarpet::TestCase
5
+ def setup
6
+ @pants = Redcarpet::Render::SmartyPants
7
+ end
8
+
9
+ def test_that_smart_converts_single_quotes_in_words_that_end_in_re
10
+ markdown = @pants.render("<p>They're not for sale.</p>")
11
+ assert_equal "<p>They&rsquo;re not for sale.</p>", markdown
12
+ end
13
+
14
+ def test_that_smart_converts_single_quotes_in_words_that_end_in_ll
15
+ markdown = @pants.render("<p>Well that'll be the day</p>")
16
+ assert_equal "<p>Well that&rsquo;ll be the day</p>", markdown
17
+ end
18
+
19
+ def test_that_smart_converts_double_quotes_to_curly_quotes
20
+ rd = @pants.render(%(<p>"Quoted text"</p>))
21
+ assert_equal %(<p>&ldquo;Quoted text&rdquo;</p>), rd
22
+ end
23
+
24
+ def test_that_smart_gives_ve_suffix_a_rsquo
25
+ rd = @pants.render("<p>I've been meaning to tell you ..</p>")
26
+ assert_equal "<p>I&rsquo;ve been meaning to tell you ..</p>", rd
27
+ end
28
+
29
+ def test_that_smart_gives_m_suffix_a_rsquo
30
+ rd = @pants.render("<p>I'm not kidding</p>")
31
+ assert_equal "<p>I&rsquo;m not kidding</p>", rd
32
+ end
33
+
34
+ def test_that_smart_gives_d_suffix_a_rsquo
35
+ rd = @pants.render("<p>what'd you say?</p>")
36
+ assert_equal "<p>what&rsquo;d you say?</p>", rd
37
+ end
38
+
39
+ def test_that_backticks_are_preserved
40
+ rd = @pants.render("<p>single `backticks` in HTML should be preserved</p>")
41
+ assert_equal "<p>single `backticks` in HTML should be preserved</p>", rd
42
+ end
43
+
44
+ def test_that_smart_converts_trailing_single_quotes_to_curly_quotes
45
+ rd = @pants.render("<p>Hopin' that this bug gets some fixin'.</p>")
46
+ assert_equal "<p>Hopin&rsquo; that this bug gets some fixin&rsquo;.</p>", rd
47
+ end
48
+ end
@@ -0,0 +1,42 @@
1
+ # coding: UTF-8
2
+ require 'test_helper'
3
+
4
+ class StripDownRender < Redcarpet::TestCase
5
+
6
+ def setup
7
+ @markdown = Redcarpet::Markdown.new(Redcarpet::Render::StripDown)
8
+ end
9
+
10
+ def test_basics
11
+ markdown = <<-Markdown
12
+ # [Foo bar](https://github.com)
13
+ Markdown
14
+ html = @markdown.render(markdown)
15
+ html_equal "Foo bar\n", html
16
+ end
17
+
18
+ def test_insert_new_lines_char
19
+ markdown = <<-Markdown
20
+ # Foo bar
21
+
22
+ Hello world! Please visit [this site](https://github.com/).
23
+
24
+ class Foo
25
+ end
26
+
27
+ Look at this ![picture](http://example.org/picture.png)
28
+ And this: ![](http://example.org/image.jpg)
29
+ Markdown
30
+ plaintext = <<-Plaintext
31
+ Foo bar
32
+ Hello world! Please visit this site.
33
+ class Foo
34
+ end
35
+ Look at this picture http://example.org/picture.png
36
+ And this: http://example.org/image.jpg
37
+ Plaintext
38
+
39
+ html = @markdown.render(markdown)
40
+ html_equal plaintext, html
41
+ end
42
+ end
@@ -0,0 +1,18 @@
1
+ # coding: UTF-8
2
+ Encoding.default_internal = 'UTF-8' if defined? Encoding
3
+
4
+ gem 'test-unit', '>= 2' # necessary when not using bundle exec
5
+
6
+ require 'test/unit'
7
+ require 'nokogiri'
8
+
9
+ require 'redcarpet'
10
+ require 'redcarpet/render_strip'
11
+ require 'redcarpet/render_man'
12
+
13
+ class Redcarpet::TestCase < Test::Unit::TestCase
14
+ def html_equal(html_a, html_b)
15
+ assert_equal Nokogiri::HTML::DocumentFragment.parse(html_a).to_html,
16
+ Nokogiri::HTML::DocumentFragment.parse(html_b).to_html
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tight-redcarpet
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Natacha Porté
8
+ - Vicent Martí
9
+ - Igor Bochkariov
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-07-04 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: 1.6.0
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: 1.6.0
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake-compiler
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 0.8.3
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 0.8.3
43
+ - !ruby/object:Gem::Dependency
44
+ name: test-unit
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 2.5.4
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: 2.5.4
57
+ description: A fast, safe and extensible Markdown to (X)HTML parser patched to have
58
+ smaller headings and no quote-escaping
59
+ email: ujifgc@github.com
60
+ executables:
61
+ - redcarpet
62
+ extensions:
63
+ - ext/redcarpet/extconf.rb
64
+ extra_rdoc_files:
65
+ - COPYING
66
+ files:
67
+ - COPYING
68
+ - Gemfile
69
+ - README.markdown
70
+ - Rakefile
71
+ - bin/redcarpet
72
+ - ext/redcarpet/autolink.c
73
+ - ext/redcarpet/autolink.h
74
+ - ext/redcarpet/buffer.c
75
+ - ext/redcarpet/buffer.h
76
+ - ext/redcarpet/extconf.rb
77
+ - ext/redcarpet/houdini.h
78
+ - ext/redcarpet/houdini_href_e.c
79
+ - ext/redcarpet/houdini_html_e.c
80
+ - ext/redcarpet/html.c
81
+ - ext/redcarpet/html.h
82
+ - ext/redcarpet/html_blocks.h
83
+ - ext/redcarpet/html_smartypants.c
84
+ - ext/redcarpet/markdown.c
85
+ - ext/redcarpet/markdown.h
86
+ - ext/redcarpet/rc_markdown.c
87
+ - ext/redcarpet/rc_render.c
88
+ - ext/redcarpet/redcarpet.h
89
+ - ext/redcarpet/stack.c
90
+ - ext/redcarpet/stack.h
91
+ - lib/redcarpet.rb
92
+ - lib/redcarpet/compat.rb
93
+ - lib/redcarpet/render_man.rb
94
+ - lib/redcarpet/render_strip.rb
95
+ - redcarpet.gemspec
96
+ - test/custom_render_test.rb
97
+ - test/html_render_test.rb
98
+ - test/html_toc_render_test.rb
99
+ - test/markdown_test.rb
100
+ - test/pathological_inputs_test.rb
101
+ - test/redcarpet_compat_test.rb
102
+ - test/smarty_html_test.rb
103
+ - test/smarty_pants_test.rb
104
+ - test/stripdown_render_test.rb
105
+ - test/test_helper.rb
106
+ homepage: http://github.com/ujifgc/redcarpet
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 1.9.2
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.2.2
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: Markdown that smells nice (patch level 'tight')
130
+ test_files:
131
+ - test/custom_render_test.rb
132
+ - test/html_render_test.rb
133
+ - test/html_toc_render_test.rb
134
+ - test/markdown_test.rb
135
+ - test/pathological_inputs_test.rb
136
+ - test/redcarpet_compat_test.rb
137
+ - test/smarty_html_test.rb
138
+ - test/smarty_pants_test.rb
139
+ - test/stripdown_render_test.rb
140
+ - test/test_helper.rb
141
+ has_rdoc: