devcenter-parser 1.3.2 → 1.3.4

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
  !binary "U0hBMQ==":
3
- metadata.gz: c4625d0620bfb6d0da568af275972249776bc60e
4
- data.tar.gz: 12e3576026957882728a1c14b335864cb570592a
3
+ metadata.gz: 00864c53d10600e6cccd5e25c00d06f137f64f7e
4
+ data.tar.gz: 84f810e795e30e8da6f0a9ac870caf3120b20ef7
5
5
  !binary "U0hBNTEy":
6
- metadata.gz: 91498d9bb224e4a1c66ba3fc983e0ad620e33d71b8cfec7a5273e9a1d5ebede093f05d46e40c6e941b72c445c903cf7cd4ea02a59c00f37c765468299c81606a
7
- data.tar.gz: b2899c194bd68b0c556768a97675b6c0c35019bb7875bed2a04e5dac628c9d8ead99ac658f4da18f784b92846bbc385a6ccf85bb0549eee507689f94f82228e4
6
+ metadata.gz: 0b7343fe802c7a3940b47b8c8ab8651dc694d65db9ecb5eeafe47e862c9707a71415c6a35839dff891f39ca80ef60a0ba68bd69337539d69849013cf53d50beb
7
+ data.tar.gz: fffb99dddf5e8cb7102a7129d8ee0022e04d6547e419baf8149fb47af5a73b1145d63fe16585d5e8580117a77a7e1840049d69a21459acae5947a873f69bb205
@@ -6,7 +6,7 @@ require 'sanitize'
6
6
 
7
7
  module DevcenterParser
8
8
 
9
- VERSION = '1.3.2'
9
+ VERSION = '1.3.4'
10
10
 
11
11
  AVAILABLE_FLAVOURS = [:github, :maruku]
12
12
 
@@ -23,7 +23,24 @@ module DevcenterParser
23
23
  sanitize(html)
24
24
  end
25
25
 
26
+ # The current parsers consider something like:
27
+ # > foo
28
+ #
29
+ # > bar
30
+ # as a single blockquote, while we want it to be two different ones.
31
+ # This method adds an empty paragraph between consecutive blocks so parsers process them separately
32
+ def self.separate_consecutive_blockquote_blocks(markdown)
33
+ separator = '<p class="devcenter-parser-special-block-separator" style="display:none">&nbsp;</p>'
34
+ markdown.gsub(/^>(.*)?\s\s>/, '>\1' + "\n\n#{separator}\n\n>")
35
+ end
36
+
37
+ def self.normalize_newlines(markdown)
38
+ markdown.lines.map{ |l| l.chomp }.join("\n")
39
+ end
40
+
26
41
  def self.to_unsanitized_html(markdown, flavour)
42
+ markdown = normalize_newlines(markdown)
43
+ markdown = separate_consecutive_blockquote_blocks(markdown)
27
44
  doc = case flavour.to_sym
28
45
  when :maruku
29
46
  html = Maruku.new(markdown, :on_error => :raise).to_html
@@ -55,7 +72,7 @@ module DevcenterParser
55
72
  private
56
73
 
57
74
  def self.github_parser
58
- @@github_parser ||= Redcarpet::Markdown.new(HTMLWithPantsRenderer, fenced_code_blocks: true)
75
+ @@github_parser ||= Redcarpet::Markdown.new(HTMLWithPantsRenderer, fenced_code_blocks: true, tables: true)
59
76
  end
60
77
 
61
78
  def self.sanitize_config
@@ -193,9 +193,13 @@ And that's it.
193
193
 
194
194
  <div class="callout">
195
195
  <p><strong>strong</strong></p>
196
+ </div>
197
+
198
+ <p class="devcenter-parser-special-block-separator" style="display:none"> </p>
196
199
 
200
+ <blockquote>
197
201
  <p>normal</p>
198
- </div>
202
+ </blockquote>
199
203
 
200
204
  <p>And that’s it.</p>
201
205
  HTML
@@ -206,6 +210,60 @@ And that's it.
206
210
  end
207
211
  end
208
212
 
213
+ it 'github markdown generates separate special blocks from blockquotes separated by empty lines' do
214
+ md = <<-MARKDOWN
215
+ > warning
216
+ > foo
217
+
218
+ > note
219
+ > bar
220
+ MARKDOWN
221
+
222
+ html = <<-HTML
223
+ <div class="warning">
224
+ <p>foo</p>
225
+ </div>
226
+
227
+ <p class="devcenter-parser-special-block-separator" style="display:none"> </p>
228
+
229
+ <div class="note">
230
+ <p>bar</p>
231
+ </div>
232
+ HTML
233
+
234
+ assert_github_result md, html
235
+ end
236
+
237
+ it 'github markdown supports tables' do
238
+ md = <<-MARKDOWN
239
+ | A | B |
240
+ | --- | --- |
241
+ | 1 | 2 |
242
+ | 3 | 4 |
243
+ MARKDOWN
244
+
245
+ html = <<-HTML
246
+ <table>
247
+ <thead><tr>
248
+ <th>A</th>
249
+ <th>B</th>
250
+ </tr></thead>
251
+ <tbody>
252
+ <tr>
253
+ <td>1</td>
254
+ <td>2</td>
255
+ </tr>
256
+ <tr>
257
+ <td>3</td>
258
+ <td>4</td>
259
+ </tr>
260
+ </tbody>
261
+ </table>
262
+ HTML
263
+
264
+ assert_github_result md, html
265
+ end
266
+
209
267
  it "does emdashes both in all flavours" do
210
268
  md = "foo -- bar"
211
269
  html = '<p>foo – bar</p>'
@@ -236,6 +294,41 @@ And that's it.
236
294
  assert_github_result md, "<p>#{md}</p>"
237
295
  end
238
296
 
297
+
298
+ it 'generates separate blockquotes from blockquotes separated by empty lines' do
299
+ md = <<-MARKDOWN
300
+ > foo
301
+
302
+ > bar
303
+ MARKDOWN
304
+
305
+ html_maruku = <<-HTML
306
+ <blockquote>
307
+ <p>foo</p>
308
+ </blockquote>
309
+ <p class="devcenter-parser-special-block-separator" style="display:none"> </p>
310
+ <blockquote>
311
+ <p>bar</p>
312
+ </blockquote>
313
+ HTML
314
+
315
+ assert_maruku_result md, html_maruku
316
+
317
+ html_github = <<-HTML
318
+ <blockquote>
319
+ <p>foo</p>
320
+ </blockquote>
321
+
322
+ <p class="devcenter-parser-special-block-separator" style="display:none"> </p>
323
+
324
+ <blockquote>
325
+ <p>bar</p>
326
+ </blockquote>
327
+ HTML
328
+
329
+ assert_github_result md, html_github
330
+ end
331
+
239
332
  end
240
333
 
241
334
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devcenter-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heroku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-19 00:00:00.000000000 Z
11
+ date: 2013-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maruku
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
- rubygems_version: 2.0.0
115
+ rubygems_version: 2.0.3
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: Parser for Heroku Dev Center's content