bluecloth 2.0.7-x86-mswin32 → 2.0.11pre158-x86-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.gemtest +0 -0
  3. data/History.md +4 -0
  4. data/LICENSE +1 -1
  5. data/Manifest.txt +103 -0
  6. data/README.md +103 -0
  7. data/Rakefile +95 -301
  8. data/ext/VERSION +1 -1
  9. data/ext/bluecloth.c +69 -23
  10. data/ext/bluecloth.h +13 -2
  11. data/ext/config.h +13 -2
  12. data/ext/css.c +14 -5
  13. data/ext/cstring.h +4 -2
  14. data/ext/docheader.c +13 -7
  15. data/ext/emmatch.c +188 -0
  16. data/ext/extconf.rb +7 -9
  17. data/ext/generate.c +333 -293
  18. data/ext/html5.c +24 -0
  19. data/ext/markdown.c +326 -185
  20. data/ext/markdown.h +52 -29
  21. data/ext/mkdio.c +82 -41
  22. data/ext/mkdio.h +44 -23
  23. data/ext/resource.c +4 -2
  24. data/ext/setup.c +47 -0
  25. data/ext/tags.c +123 -0
  26. data/ext/tags.h +19 -0
  27. data/lib/1.8/bluecloth_ext.so +0 -0
  28. data/lib/1.9/bluecloth_ext.so +0 -0
  29. data/lib/bluecloth.rb +77 -42
  30. data/spec/bluecloth/101_changes_spec.rb +18 -21
  31. data/spec/bluecloth/TEMPLATE +36 -0
  32. data/spec/bluecloth/autolinks_spec.rb +4 -7
  33. data/spec/bluecloth/blockquotes_spec.rb +20 -23
  34. data/spec/bluecloth/code_spans_spec.rb +2 -5
  35. data/spec/bluecloth/emphasis_spec.rb +2 -5
  36. data/spec/bluecloth/entities_spec.rb +2 -5
  37. data/spec/bluecloth/hrules_spec.rb +2 -5
  38. data/spec/bluecloth/images_spec.rb +2 -5
  39. data/spec/bluecloth/inline_html_spec.rb +26 -66
  40. data/spec/bluecloth/links_spec.rb +1 -5
  41. data/spec/bluecloth/lists_spec.rb +2 -5
  42. data/spec/bluecloth/paragraphs_spec.rb +2 -5
  43. data/spec/bluecloth/titles_spec.rb +2 -5
  44. data/spec/bluecloth_spec.rb +36 -22
  45. data/spec/bugfix_spec.rb +90 -10
  46. data/spec/contributions_spec.rb +2 -3
  47. data/spec/discount_spec.rb +50 -10
  48. data/spec/lib/helpers.rb +18 -117
  49. data/spec/lib/matchers.rb +7 -18
  50. data/spec/markdowntest_spec.rb +3 -39
  51. metadata +257 -143
  52. metadata.gz.sig +0 -0
  53. data/ChangeLog +0 -387
  54. data/README +0 -81
  55. data/Rakefile.local +0 -41
  56. data/rake/191_compat.rb +0 -26
  57. data/rake/dependencies.rb +0 -76
  58. data/rake/helpers.rb +0 -435
  59. data/rake/hg.rb +0 -273
  60. data/rake/manual.rb +0 -782
  61. data/rake/packaging.rb +0 -123
  62. data/rake/publishing.rb +0 -274
  63. data/rake/rdoc.rb +0 -30
  64. data/rake/style.rb +0 -62
  65. data/rake/svn.rb +0 -668
  66. data/rake/testing.rb +0 -187
  67. data/rake/verifytask.rb +0 -64
@@ -12,12 +12,10 @@ BEGIN {
12
12
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
13
13
  }
14
14
 
15
- require 'spec'
15
+ require 'rspec'
16
16
  require 'bluecloth'
17
17
 
18
18
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
19
 
22
20
 
23
21
  #####################################################################
@@ -25,8 +23,6 @@ require 'spec/lib/matchers'
25
23
  #####################################################################
26
24
 
27
25
  describe BlueCloth, "links" do
28
- include BlueCloth::TestConstants,
29
- BlueCloth::Matchers
30
26
 
31
27
  it "supports inline links" do
32
28
  the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
@@ -8,16 +8,15 @@ BEGIN {
8
8
  libdir = basedir + 'lib'
9
9
  extdir = basedir + 'ext'
10
10
 
11
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
11
12
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
12
13
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
13
14
  }
14
15
 
15
- require 'spec'
16
+ require 'rspec'
16
17
  require 'bluecloth'
17
18
 
18
19
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
20
 
22
21
 
23
22
  #####################################################################
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
25
24
  #####################################################################
26
25
 
27
26
  describe BlueCloth, "lists" do
28
- include BlueCloth::TestConstants,
29
- BlueCloth::Matchers
30
27
 
31
28
  it "support unordered lists with asterisk bullets" do
32
29
  the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
@@ -8,16 +8,15 @@ BEGIN {
8
8
  libdir = basedir + 'lib'
9
9
  extdir = basedir + 'ext'
10
10
 
11
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
11
12
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
12
13
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
13
14
  }
14
15
 
15
- require 'spec'
16
+ require 'rspec'
16
17
  require 'bluecloth'
17
18
 
18
19
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
20
 
22
21
 
23
22
  #####################################################################
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
25
24
  #####################################################################
26
25
 
27
26
  describe BlueCloth, "document with paragraphs" do
28
- include BlueCloth::TestConstants,
29
- BlueCloth::Matchers
30
27
 
31
28
  it "wraps them in P tags" do
32
29
  the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
@@ -8,16 +8,15 @@ BEGIN {
8
8
  libdir = basedir + 'lib'
9
9
  extdir = basedir + 'ext'
10
10
 
11
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
11
12
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
12
13
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
13
14
  }
14
15
 
15
- require 'spec'
16
+ require 'rspec'
16
17
  require 'bluecloth'
17
18
 
18
19
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
20
 
22
21
 
23
22
  #####################################################################
@@ -25,8 +24,6 @@ require 'spec/lib/matchers'
25
24
  #####################################################################
26
25
 
27
26
  describe BlueCloth, "titles" do
28
- include BlueCloth::TestConstants,
29
- BlueCloth::Matchers
30
27
 
31
28
  # setext-style h1 -- three characters
32
29
  it "transforms Setext-style level-one headers (three equals) into an H1" do
@@ -8,16 +8,15 @@ BEGIN {
8
8
  libdir = basedir + 'lib'
9
9
  extdir = basedir + 'ext'
10
10
 
11
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
11
12
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
12
13
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
13
14
  }
14
15
 
15
- require 'spec'
16
+ require 'rspec'
16
17
  require 'bluecloth'
17
18
 
18
19
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
20
 
22
21
 
23
22
  ### Output some debugging if $DEBUG is true
@@ -118,7 +117,7 @@ describe BlueCloth do
118
117
  you might want to prevent.
119
118
  ---
120
119
  <p>This is an example
121
- [of something](javascript:do_something_bad())
120
+ [of something](javascript:do<em>something</em>bad())
122
121
  you might want to prevent.</p>
123
122
  ---
124
123
  end
@@ -152,7 +151,7 @@ describe BlueCloth do
152
151
 
153
152
  it "correctly expands id: links when :pseudoprotocols are enabled" do
154
153
  input = "It was [just as he said](id:foo) it would be."
155
- expected = %{<p>It was <a id="foo">just as he said</a> it would be.</p>}
154
+ expected = %{<p>It was <span id="foo">just as he said</span> it would be.</p>}
156
155
 
157
156
  the_markdown( input, :pseudoprotocols => true ).should be_transformed_into( expected )
158
157
  end
@@ -173,30 +172,30 @@ describe BlueCloth do
173
172
 
174
173
  it "correctly adds IDs to headers when :header_labels is enabled" do
175
174
  input = %{# A header\n\nSome stuff\n\n## Another header\n\nMore stuff.\n\n}
176
- expected = %{<h1 id=\"A+header\">A header</h1>\n\n<p>Some stuff</p>\n\n} +
177
- %{<h2 id=\"Another+header\">Another header</h2>\n\n<p>More stuff.</p>}
175
+ expected = %{<a name=\"A.header\"></a>\n<h1>A header</h1>\n\n<p>Some stuff</p>\n\n} +
176
+ %{<a name=\"Another.header\"></a>\n<h2>Another header</h2>\n\n<p>More stuff.</p>}
178
177
 
179
178
  the_markdown( input, :header_labels => true ).should be_transformed_into( expected )
180
179
  end
181
180
 
182
- it "expands superscripts when :strict_mode is disabled" do
181
+ it "expands superscripts only when :superscript is enabled" do
183
182
  input = %{It used to be that E = mc^2 used to be the province of physicists.}
184
183
  expected = %{<p>It used to be that E = mc<sup>2</sup> used to be the province} +
185
184
  %{ of physicists.</p>}
186
- strict = %{<p>It used to be that E = mc^2 used to be the province} +
185
+ disabled = %{<p>It used to be that E = mc^2 used to be the province} +
187
186
  %{ of physicists.</p>}
188
187
 
189
- the_markdown( input, :strict_mode => false ).should be_transformed_into( expected )
190
- the_markdown( input, :strict_mode => true ).should be_transformed_into( strict )
188
+ the_markdown( input, :superscript => false ).should be_transformed_into( disabled )
189
+ the_markdown( input, :superscript => true ).should be_transformed_into( expected )
191
190
  end
192
191
 
193
- it "uses relaxed emphasis when :strict_mode is disabled" do
192
+ it "uses relaxed emphasis when :relaxed is enabled" do
194
193
  input = %{If you use size_t instead, you _won't_ have to worry as much about portability.}
195
- expected = %{<p>If you use size_t instead, you <em>won't</em> have to worry as much about portability.</p>}
194
+ relaxed = %{<p>If you use size_t instead, you <em>won't</em> have to worry as much about portability.</p>}
196
195
  strict = %{<p>If you use size<em>t instead, you </em>won't_ have to worry as much about portability.</p>}
197
196
 
198
- the_markdown( input, :strict_mode => false ).should be_transformed_into( expected )
199
- the_markdown( input, :strict_mode => true ).should be_transformed_into( strict )
197
+ the_markdown( input, :relaxed => true ).should be_transformed_into( relaxed )
198
+ the_markdown( input, :relaxed => false ).should be_transformed_into( strict )
200
199
  end
201
200
 
202
201
  end
@@ -260,7 +259,7 @@ describe BlueCloth do
260
259
  end
261
260
 
262
261
 
263
- describe "encoding under Ruby 1.9.x" do
262
+ describe "encoding under Ruby 1.9.x", :ruby_19_only => true do
264
263
 
265
264
  before( :each ) do
266
265
  pending "only valid under a version of Ruby that has the Encoding class" unless
@@ -268,14 +267,29 @@ describe BlueCloth do
268
267
  end
269
268
 
270
269
 
271
- it "outputs HTML in the same encoding as the source string" do
272
- pending "until I can figure out what the right way to do m17n in the C API is" do
273
- utf8 = "a string".encode( "UTF-8" )
274
- out = BlueCloth.new( utf8 ).to_html
270
+ it "outputs HTML in UTF8 if given a UTF8 string" do
271
+ input = "a ∫‡®îñg".encode( Encoding::UTF_8 )
272
+ output = BlueCloth.new( input ).to_html
275
273
 
276
- out.encoding.name.should == 'UTF-8'
277
- end
274
+ output.encoding.should == Encoding::UTF_8
275
+ end
276
+
277
+ it "outputs HTML in KOI8-U if given a KOI8-U string" do
278
+ input = "Почему Молчишь".encode( Encoding::KOI8_U )
279
+ output = BlueCloth.new( input ).to_html
280
+
281
+ output.should == "<p>\xF0\xCF\xDE\xC5\xCD\xD5 \xED\xCF\xCC\xDE\xC9\xDB\xD8</p>".
282
+ force_encoding( Encoding::KOI8_U )
278
283
  end
284
+
285
+ it "outputs HTML in Shift-JIS if given a Shift-JIS string" do
286
+ input = "日本語".encode( Encoding::SHIFT_JIS )
287
+ output = BlueCloth.new( input ).to_html
288
+
289
+ output.should == "<p>\x93\xFA\x96{\x8C\xEA</p>".
290
+ force_encoding( Encoding::SHIFT_JIS )
291
+ end
292
+
279
293
  end
280
294
 
281
295
  end
data/spec/bugfix_spec.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # coding: utf-8
2
3
 
3
4
  BEGIN {
4
5
  require 'pathname'
@@ -7,17 +8,16 @@ BEGIN {
7
8
  libdir = basedir + 'lib'
8
9
  extdir = basedir + 'ext'
9
10
 
11
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
10
12
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
13
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
12
14
  }
13
15
 
14
- require 'rubygems'
15
- require 'spec'
16
- require 'bluecloth'
16
+ require 'timeout'
17
17
 
18
+ require 'rspec'
18
19
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
20
+ require 'bluecloth'
21
21
 
22
22
 
23
23
  #####################################################################
@@ -37,14 +37,14 @@ describe BlueCloth, "bugfixes" do
37
37
 
38
38
  ### Test to be sure the README file can be transformed.
39
39
  it "can transform the included README file" do
40
- readme = @basedir + 'README'
40
+ readme = @basedir + 'README.md'
41
41
  contents = readme.read
42
42
 
43
43
  bcobj = BlueCloth::new( contents )
44
44
 
45
- lambda do
45
+ expect {
46
46
  timeout( 2 ) { bcobj.to_html }
47
- end.should_not raise_error()
47
+ }.to_not raise_error()
48
48
  end
49
49
 
50
50
 
@@ -157,14 +157,94 @@ describe BlueCloth, "bugfixes" do
157
157
  <ul>
158
158
  <li><p>testing</p>
159
159
 
160
- <pre><code>pre
160
+ <pre><code> pre
161
161
  </code></pre>
162
162
 
163
- <p>more li</p></li>
163
+ <p> more li</p></li>
164
164
  </ul>
165
165
  END_HTML
166
166
  end
167
167
 
168
+ it "renders heading with trailing spaces correctly (#67)" do
169
+ the_indented_markdown( <<-"END_MARKDOWN" ).should be_transformed_into(<<-"END_HTML").without_indentation
170
+ The Ant-Sugar Tales
171
+ ===================
172
+
173
+ By Candice Yellowflower
174
+
175
+ Use of Metaphor
176
+ ---------------
177
+
178
+ The author's splendid...
179
+ END_MARKDOWN
180
+ <h1>The Ant-Sugar Tales </h1>
181
+
182
+ <p>By Candice Yellowflower</p>
183
+
184
+ <h2>Use of Metaphor </h2>
185
+
186
+ <p>The author's splendid...</p>
187
+ END_HTML
188
+ end
189
+
190
+ it "renders the example from #68 correctly" do
191
+ the_indented_markdown( <<-"END_MARKDOWN" ).should be_transformed_into(<<-"END_HTML").without_indentation
192
+ START example
193
+
194
+ 1. ö
195
+ 1. ü
196
+ 1. ó
197
+ 1. ő
198
+ 1. ú
199
+ 1. é
200
+ 1. á
201
+ 1. ű
202
+ 1. í
203
+
204
+ - ö
205
+ - ü
206
+ - ó
207
+ - ő
208
+ - ú
209
+ - é
210
+ - á
211
+ - ű
212
+ - í
213
+
214
+ END example
215
+ END_MARKDOWN
216
+ <p>START example</p>
217
+
218
+ <ol>
219
+ <li>ö</li>
220
+ <li>ü</li>
221
+ <li>ó</li>
222
+ <li>ő</li>
223
+ <li>ú</li>
224
+ <li>é</li>
225
+ <li>á</li>
226
+ <li>ű</li>
227
+ <li><p>í</p></li>
228
+ <li><p>ö</p></li>
229
+ <li>ü</li>
230
+ <li>ó</li>
231
+ <li>ő</li>
232
+ <li>ú</li>
233
+ <li>é</li>
234
+ <li>á</li>
235
+ <li>ű</li>
236
+ <li>í</li>
237
+ </ol>
238
+
239
+ <p>END example</p>
240
+ END_HTML
241
+ end
242
+
243
+ it "renders alignments in code blocks without changing indentation (#71)" do
244
+ the_indented_markdown( " Самообучение\n Bugaga\n" ).
245
+ should be_transformed_into( "<pre><code>Самообучение\nBugaga\n</code></pre>" )
246
+ end
247
+
168
248
  end
169
249
 
170
250
 
@@ -7,17 +7,16 @@ BEGIN {
7
7
  libdir = basedir + 'lib'
8
8
  extdir = basedir + 'ext'
9
9
 
10
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
10
11
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
12
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
12
13
  }
13
14
 
14
15
  require 'rubygems'
15
- require 'spec'
16
+ require 'rspec'
16
17
  require 'bluecloth'
17
18
 
18
19
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
20
 
22
21
 
23
22
  #####################################################################
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ #coding: utf-8
2
3
 
3
4
  BEGIN {
4
5
  require 'pathname'
@@ -7,17 +8,16 @@ BEGIN {
7
8
  libdir = basedir + 'lib'
8
9
  extdir = basedir + 'ext'
9
10
 
11
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
10
12
  $LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
11
13
  $LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
12
14
  }
13
15
 
14
16
  require 'rubygems'
15
- require 'spec'
17
+ require 'rspec'
16
18
  require 'bluecloth'
17
19
 
18
20
  require 'spec/lib/helpers'
19
- require 'spec/lib/constants'
20
- require 'spec/lib/matchers'
21
21
 
22
22
 
23
23
  #####################################################################
@@ -25,8 +25,6 @@ require 'spec/lib/matchers'
25
25
  #####################################################################
26
26
 
27
27
  describe BlueCloth, "implementation of Discount-specific features" do
28
- include BlueCloth::TestConstants,
29
- BlueCloth::Matchers
30
28
 
31
29
  before( :all ) do
32
30
  @basedir = Pathname.new( __FILE__ ).dirname.parent
@@ -46,7 +44,7 @@ describe BlueCloth, "implementation of Discount-specific features" do
46
44
 
47
45
  it "renders id: links as anchors with an ID" do
48
46
  the_markdown( "[foo](id:bar)", :pseudoprotocols => true ).
49
- should be_transformed_into( '<p><a id="bar">foo</a></p>' )
47
+ should be_transformed_into( '<p><span id="bar">foo</span></p>' )
50
48
  end
51
49
 
52
50
  it "renders class: links as SPANs with a CLASS" do
@@ -59,13 +57,30 @@ describe BlueCloth, "implementation of Discount-specific features" do
59
57
  should be_transformed_into( '<p>bar</p>' )
60
58
  end
61
59
 
60
+ it "renders lang: links as language-specified blocks" do
61
+ the_markdown( "[gift](lang:de)", :pseudoprotocols => true ).
62
+ should be_transformed_into( '<p><span lang="de">gift</span></p>' )
63
+ end
64
+
62
65
  end
63
66
 
64
67
 
65
68
  describe "Markdown-Extra tables" do
66
69
 
70
+ it "doesn't try to render tables if :tables isn't set" do
71
+ the_indented_markdown( <<-"END_MARKDOWN" ).should be_transformed_into(<<-"END_HTML").without_indentation
72
+ a | b
73
+ -----|-----
74
+ hello|sailor
75
+ END_MARKDOWN
76
+ <p> a | b
77
+ -----|-----
78
+ hello|sailor</p>
79
+ END_HTML
80
+ end
81
+
67
82
  it "renders the example from orc's blog" do
68
- the_indented_markdown( <<-"END_MARKDOWN", :strict => false ).should be_transformed_into(<<-"END_HTML").without_indentation
83
+ the_indented_markdown( <<-"END_MARKDOWN", :tables => true ).should be_transformed_into(<<-"END_HTML").without_indentation
69
84
  a | b
70
85
  -----|-----
71
86
  hello|sailor
@@ -88,7 +103,7 @@ describe BlueCloth, "implementation of Discount-specific features" do
88
103
  end
89
104
 
90
105
  it "renders simple markdown-extra tables" do
91
- the_indented_markdown( <<-"END_MARKDOWN", :strict => false ).should be_transformed_into(<<-"END_HTML").without_indentation
106
+ the_indented_markdown( <<-"END_MARKDOWN", :tables => true ).should be_transformed_into(<<-"END_HTML").without_indentation
92
107
  First Header | Second Header
93
108
  ------------- | -------------
94
109
  Content Cell | Content Cell
@@ -111,7 +126,7 @@ describe BlueCloth, "implementation of Discount-specific features" do
111
126
 
112
127
  end
113
128
 
114
- it "renders tables with leading and trailing pipes" do
129
+ it "renders tables with leading and trailing pipes", :pedantic => true do
115
130
  pending "Discount doesn't support this kind (yet?)" do
116
131
  the_indented_markdown( <<-"END_MARKDOWN", :tables => true ).should be_transformed_into(<<-"END_HTML").without_indentation
117
132
  | First Header | Second Header |
@@ -141,7 +156,7 @@ describe BlueCloth, "implementation of Discount-specific features" do
141
156
  end
142
157
  end
143
158
 
144
- it "renders tables with aligned columns" do
159
+ it "renders tables with aligned columns", :pedantic => true do
145
160
  pending "Discount doesn't support this kind (yet?)" do
146
161
  the_indented_markdown( <<-"END_MARKDOWN", :tables => true ).should be_transformed_into(<<-"END_HTML").without_indentation
147
162
  | Item | Value |
@@ -177,6 +192,31 @@ describe BlueCloth, "implementation of Discount-specific features" do
177
192
  end
178
193
  end
179
194
 
195
+
196
+ describe "tilde strike-through" do
197
+
198
+ it "doesn't render tilde-bracketed test when :strikethrough isn't set" do
199
+ the_markdown( "~~cancelled~~" ).
200
+ should be_transformed_into( '<p>~~cancelled~~</p>' )
201
+ end
202
+
203
+ it "renders double tilde-bracketed text as strikethrough" do
204
+ the_markdown( "~~cancelled~~", :strikethrough => true ).
205
+ should be_transformed_into( '<p><del>cancelled</del></p>' )
206
+ end
207
+
208
+ it "renders tilde-bracketed text for tilde-brackets of more than two tildes" do
209
+ the_markdown( "~~~~cancelled~~~~", :strikethrough => true ).
210
+ should be_transformed_into( '<p><del>cancelled</del></p>' )
211
+ end
212
+
213
+ it "includes extra tildes in tilde-bracketed text" do
214
+ the_markdown( "~~~cancelled~~", :strikethrough => true ).
215
+ should be_transformed_into( '<p><del>~cancelled</del></p>' )
216
+ end
217
+
218
+ end
219
+
180
220
  end
181
221
 
182
222