kramdown-prismic 0.2.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +23 -2
- data/CHANGELOG.md +45 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +5 -3
- data/README.md +20 -3
- data/Rakefile +3 -2
- data/bin/html2prismic +6 -0
- data/bin/markdown2prismic +6 -0
- data/bin/prismic2markdown +8 -0
- data/kramdown-prismic.gemspec +12 -8
- data/kramdown1.gemfile +6 -0
- data/kramdown2.gemfile +6 -0
- data/lib/kramdown-prismic.rb +2 -0
- data/lib/kramdown-prismic/version.rb +3 -1
- data/lib/kramdown/converter/prismic.rb +68 -44
- data/lib/kramdown/parser/prismic.rb +60 -29
- data/test/converter_test.rb +159 -112
- data/test/parser_test.rb +173 -52
- metadata +26 -11
- data/.travis.yml +0 -6
- data/Changelog.md +0 -26
@@ -1,54 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Kramdown
|
2
4
|
module Parser
|
3
5
|
class Prismic < Base
|
4
6
|
def parse
|
5
7
|
@root.options[:encoding] = 'UTF-8'
|
6
|
-
@root.children = @source.
|
7
|
-
|
8
|
-
if type.match(/heading/)
|
9
|
-
type = 'heading'
|
10
|
-
end
|
11
|
-
element = send("parse_#{type}", block)
|
12
|
-
parse_spans(element, block)
|
13
|
-
element
|
8
|
+
@root.children = @source.reduce([]) do |memo, block|
|
9
|
+
parse_element(block, memo)
|
14
10
|
end
|
15
11
|
end
|
16
12
|
|
17
13
|
private
|
18
14
|
|
15
|
+
def parse_element(block, memo)
|
16
|
+
type = block[:type].gsub('-', '_')
|
17
|
+
type = 'heading' if type.match(/heading/)
|
18
|
+
if type == 'list_item'
|
19
|
+
parse_list(:ul, block, memo)
|
20
|
+
memo
|
21
|
+
elsif type == 'o_list_item'
|
22
|
+
parse_list(:ol, block, memo)
|
23
|
+
memo
|
24
|
+
else
|
25
|
+
element = send("parse_#{type}", block)
|
26
|
+
parse_spans(element, block)
|
27
|
+
memo << element
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
19
31
|
def parse_heading(block)
|
20
32
|
level = block[:type].match(/heading([1-6])/)[1].to_i
|
21
|
-
|
33
|
+
Element.new(:header, nil, nil, { level: level, raw_text: '' })
|
22
34
|
end
|
23
35
|
|
24
|
-
def parse_paragraph(
|
25
|
-
|
36
|
+
def parse_paragraph(_block)
|
37
|
+
Element.new(:p)
|
26
38
|
end
|
27
39
|
|
28
40
|
def parse_image(block)
|
29
|
-
p =
|
30
|
-
img =
|
31
|
-
|
41
|
+
p = Element.new(:p)
|
42
|
+
img = Element.new(:img, nil, { 'src' => block[:data][:origin][:url], 'alt' => block[:data][:alt] })
|
43
|
+
if block[:data][:linkTo]
|
44
|
+
a = Element.new(:a, nil, { 'href' => block[:data][:linkTo][:url] })
|
45
|
+
a.children << img
|
46
|
+
p.children << a
|
47
|
+
else
|
48
|
+
p.children << img
|
49
|
+
end
|
32
50
|
p
|
33
51
|
end
|
34
52
|
|
35
|
-
def parse_preformatted(
|
36
|
-
|
53
|
+
def parse_preformatted(_block)
|
54
|
+
Element.new(:blockquote)
|
55
|
+
end
|
56
|
+
|
57
|
+
def parse_list(type, block, memo)
|
58
|
+
list = memo.last
|
59
|
+
unless list && list.type == type
|
60
|
+
list = Element.new(type)
|
61
|
+
memo << list
|
62
|
+
end
|
63
|
+
li = Element.new(:li, nil, nil)
|
64
|
+
list.children << li
|
65
|
+
p = Element.new(:p, nil, nil, transparent: true)
|
66
|
+
li.children << p
|
67
|
+
parse_spans(p, block)
|
37
68
|
end
|
38
69
|
|
39
70
|
def parse_embed(block)
|
40
|
-
|
71
|
+
Element.new(:html_element, 'iframe', { src: block[:data][:embed_url] })
|
41
72
|
end
|
42
73
|
|
43
74
|
def parse_spans(element, block)
|
44
75
|
stack = []
|
45
76
|
|
46
77
|
(block[:content][:text].size + 1).times do |index|
|
47
|
-
|
48
78
|
starting_spans = find_starting_spans_for(block, index)
|
49
79
|
ending_spans = find_ending_spans_for(block, index)
|
50
80
|
|
51
|
-
ending_spans.each do |
|
81
|
+
ending_spans.each do |_ending_span|
|
52
82
|
el = stack.pop
|
53
83
|
if stack.empty?
|
54
84
|
element.children << el
|
@@ -57,22 +87,23 @@ module Kramdown
|
|
57
87
|
end
|
58
88
|
end
|
59
89
|
starting_spans.each do |starting_span|
|
60
|
-
stack << if starting_span[:type] ==
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
90
|
+
stack << if starting_span[:type] == 'hyperlink'
|
91
|
+
Element.new(:a, nil, { 'href' => starting_span[:data][:url] })
|
92
|
+
else
|
93
|
+
Element.new(starting_span[:type].to_sym)
|
94
|
+
end
|
65
95
|
end
|
66
96
|
|
67
97
|
char = block[:content][:text][index]
|
68
98
|
next if char.nil?
|
99
|
+
|
69
100
|
current_text = if stack.empty?
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
101
|
+
element.children.last
|
102
|
+
else
|
103
|
+
stack[-1].children.last
|
104
|
+
end
|
74
105
|
if current_text.nil? || current_text.type != :text
|
75
|
-
current_text = Element.new(:text,
|
106
|
+
current_text = Element.new(:text, '')
|
76
107
|
if stack.empty?
|
77
108
|
element.children << current_text
|
78
109
|
else
|
data/test/converter_test.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
require 'minitest/autorun'
|
3
5
|
require 'kramdown-prismic'
|
4
6
|
|
@@ -9,12 +11,12 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
9
11
|
{
|
10
12
|
type: "heading#{heading + 1}",
|
11
13
|
content: {
|
12
|
-
text:
|
14
|
+
text: 'This is the document title',
|
13
15
|
spans: []
|
14
16
|
}
|
15
17
|
}
|
16
18
|
]
|
17
|
-
markdown = "#{
|
19
|
+
markdown = "#{'#' * (heading + 1)} This is the document title"
|
18
20
|
assert_equal expected, Kramdown::Document.new(markdown, input: :kramdown).to_prismic
|
19
21
|
end
|
20
22
|
end
|
@@ -22,26 +24,26 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
22
24
|
def test_convert_heading7
|
23
25
|
expected = [
|
24
26
|
{
|
25
|
-
type:
|
27
|
+
type: 'heading6',
|
26
28
|
content: {
|
27
|
-
text:
|
29
|
+
text: '# This is the document title',
|
28
30
|
spans: []
|
29
31
|
}
|
30
32
|
}
|
31
33
|
]
|
32
|
-
markdown =
|
34
|
+
markdown = '####### This is the document title'
|
33
35
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
34
36
|
end
|
35
37
|
|
36
38
|
def test_convert_heading_with_spans
|
37
39
|
expected = [
|
38
40
|
{
|
39
|
-
type:
|
41
|
+
type: 'heading2',
|
40
42
|
content: {
|
41
|
-
text:
|
43
|
+
text: 'This is a document title',
|
42
44
|
spans: [
|
43
45
|
{
|
44
|
-
type:
|
46
|
+
type: 'em',
|
45
47
|
start: 0,
|
46
48
|
end: 4
|
47
49
|
}
|
@@ -49,56 +51,56 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
49
51
|
}
|
50
52
|
}
|
51
53
|
]
|
52
|
-
markdown =
|
54
|
+
markdown = '## *This* is a document title'
|
53
55
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
54
56
|
end
|
55
57
|
|
56
58
|
def test_convert_paragraph
|
57
59
|
expected = [
|
58
60
|
{
|
59
|
-
type:
|
61
|
+
type: 'paragraph',
|
60
62
|
content: {
|
61
|
-
text:
|
63
|
+
text: 'This is a paragraph',
|
62
64
|
spans: []
|
63
65
|
}
|
64
66
|
}
|
65
67
|
]
|
66
|
-
markdown =
|
68
|
+
markdown = 'This is a paragraph'
|
67
69
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
68
70
|
end
|
69
71
|
|
70
72
|
def test_convert_paragraph_with_spans
|
71
73
|
expected = [
|
72
74
|
{
|
73
|
-
type:
|
75
|
+
type: 'paragraph',
|
74
76
|
content: {
|
75
|
-
text:
|
77
|
+
text: 'This is a paragraph',
|
76
78
|
spans: [
|
77
79
|
{
|
78
|
-
type:
|
80
|
+
type: 'hyperlink',
|
79
81
|
start: 0,
|
80
82
|
end: 19,
|
81
83
|
data: {
|
82
|
-
url:
|
84
|
+
url: 'https://prismic.io'
|
83
85
|
}
|
84
86
|
}
|
85
87
|
]
|
86
88
|
}
|
87
89
|
}
|
88
90
|
]
|
89
|
-
markdown =
|
91
|
+
markdown = '[This is a paragraph](https://prismic.io)'
|
90
92
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
91
93
|
end
|
92
94
|
|
93
95
|
def test_convert_paragraph_with_strong
|
94
96
|
expected = [
|
95
97
|
{
|
96
|
-
type:
|
98
|
+
type: 'paragraph',
|
97
99
|
content: {
|
98
|
-
text:
|
100
|
+
text: 'This is a paragraph',
|
99
101
|
spans: [
|
100
102
|
{
|
101
|
-
type:
|
103
|
+
type: 'strong',
|
102
104
|
start: 0,
|
103
105
|
end: 19
|
104
106
|
}
|
@@ -106,19 +108,19 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
106
108
|
}
|
107
109
|
}
|
108
110
|
]
|
109
|
-
markdown =
|
111
|
+
markdown = '**This is a paragraph**'
|
110
112
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
111
113
|
end
|
112
114
|
|
113
115
|
def test_convert_paragraph_with_strong2
|
114
116
|
expected = [
|
115
117
|
{
|
116
|
-
type:
|
118
|
+
type: 'paragraph',
|
117
119
|
content: {
|
118
|
-
text:
|
120
|
+
text: 'This is a paragraph',
|
119
121
|
spans: [
|
120
122
|
{
|
121
|
-
type:
|
123
|
+
type: 'strong',
|
122
124
|
start: 0,
|
123
125
|
end: 4
|
124
126
|
}
|
@@ -126,19 +128,19 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
126
128
|
}
|
127
129
|
}
|
128
130
|
]
|
129
|
-
markdown =
|
131
|
+
markdown = '**This** is a paragraph'
|
130
132
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
131
133
|
end
|
132
134
|
|
133
135
|
def test_convert_paragraph_with_em
|
134
136
|
expected = [
|
135
137
|
{
|
136
|
-
type:
|
138
|
+
type: 'paragraph',
|
137
139
|
content: {
|
138
|
-
text:
|
140
|
+
text: 'This is a paragraph',
|
139
141
|
spans: [
|
140
142
|
{
|
141
|
-
type:
|
143
|
+
type: 'em',
|
142
144
|
start: 0,
|
143
145
|
end: 4
|
144
146
|
}
|
@@ -146,19 +148,19 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
146
148
|
}
|
147
149
|
}
|
148
150
|
]
|
149
|
-
markdown =
|
151
|
+
markdown = '*This* is a paragraph'
|
150
152
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
151
153
|
end
|
152
154
|
|
153
155
|
def test_convert_list_o
|
154
156
|
expected = [
|
155
157
|
{
|
156
|
-
type:
|
158
|
+
type: 'o-list-item',
|
157
159
|
content: {
|
158
|
-
text:
|
160
|
+
text: 'This is a list item',
|
159
161
|
spans: [
|
160
162
|
{
|
161
|
-
type:
|
163
|
+
type: 'em',
|
162
164
|
start: 0,
|
163
165
|
end: 4
|
164
166
|
}
|
@@ -166,9 +168,9 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
166
168
|
}
|
167
169
|
},
|
168
170
|
{
|
169
|
-
type:
|
171
|
+
type: 'o-list-item',
|
170
172
|
content: {
|
171
|
-
text:
|
173
|
+
text: 'This is a second list item',
|
172
174
|
spans: []
|
173
175
|
}
|
174
176
|
}
|
@@ -180,12 +182,12 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
180
182
|
def test_convert_list_u
|
181
183
|
expected = [
|
182
184
|
{
|
183
|
-
type:
|
185
|
+
type: 'list-item',
|
184
186
|
content: {
|
185
|
-
text:
|
187
|
+
text: 'This is a list item',
|
186
188
|
spans: [
|
187
189
|
{
|
188
|
-
type:
|
190
|
+
type: 'em',
|
189
191
|
start: 0,
|
190
192
|
end: 4
|
191
193
|
}
|
@@ -193,9 +195,9 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
193
195
|
}
|
194
196
|
},
|
195
197
|
{
|
196
|
-
type:
|
198
|
+
type: 'list-item',
|
197
199
|
content: {
|
198
|
-
text:
|
200
|
+
text: 'This is a second list item',
|
199
201
|
spans: []
|
200
202
|
}
|
201
203
|
}
|
@@ -207,16 +209,16 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
207
209
|
def test_convert_nested_ul
|
208
210
|
expected = [
|
209
211
|
{
|
210
|
-
type:
|
212
|
+
type: 'list-item',
|
211
213
|
content: {
|
212
214
|
text: "item1\n",
|
213
215
|
spans: []
|
214
216
|
}
|
215
217
|
},
|
216
218
|
{
|
217
|
-
type:
|
219
|
+
type: 'list-item',
|
218
220
|
content: {
|
219
|
-
text:
|
221
|
+
text: 'item2',
|
220
222
|
spans: []
|
221
223
|
}
|
222
224
|
}
|
@@ -230,23 +232,23 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
230
232
|
def test_convert_nested_nested_ul
|
231
233
|
expected = [
|
232
234
|
{
|
233
|
-
type:
|
235
|
+
type: 'list-item',
|
234
236
|
content: {
|
235
237
|
text: "item1\n",
|
236
238
|
spans: []
|
237
239
|
}
|
238
240
|
},
|
239
241
|
{
|
240
|
-
type:
|
242
|
+
type: 'list-item',
|
241
243
|
content: {
|
242
244
|
text: "item2\n",
|
243
245
|
spans: []
|
244
246
|
}
|
245
247
|
},
|
246
248
|
{
|
247
|
-
type:
|
249
|
+
type: 'list-item',
|
248
250
|
content: {
|
249
|
-
text:
|
251
|
+
text: 'item3',
|
250
252
|
spans: []
|
251
253
|
}
|
252
254
|
}
|
@@ -260,7 +262,7 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
260
262
|
def test_convert_preformatted
|
261
263
|
expected = [
|
262
264
|
{
|
263
|
-
type:
|
265
|
+
type: 'preformatted',
|
264
266
|
content: {
|
265
267
|
text: "This is a pre block\n",
|
266
268
|
spans: []
|
@@ -274,9 +276,9 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
274
276
|
def test_convert_blockquote
|
275
277
|
expected = [
|
276
278
|
{
|
277
|
-
type:
|
279
|
+
type: 'preformatted',
|
278
280
|
content: {
|
279
|
-
text:
|
281
|
+
text: 'This is a blockquote',
|
280
282
|
spans: []
|
281
283
|
}
|
282
284
|
}
|
@@ -287,17 +289,18 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
287
289
|
|
288
290
|
def test_convert_empty
|
289
291
|
expected = []
|
290
|
-
markdown =
|
292
|
+
markdown = ''
|
291
293
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
292
294
|
end
|
293
295
|
|
294
296
|
def test_convert_span_blank
|
295
297
|
expected = [
|
296
|
-
{
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
298
|
+
{
|
299
|
+
type: 'o-list-item',
|
300
|
+
content: {
|
301
|
+
text: 'Testtest',
|
302
|
+
spans: []
|
303
|
+
}
|
301
304
|
}
|
302
305
|
]
|
303
306
|
markdown = "\n1. Test\n\n test\n"
|
@@ -306,16 +309,16 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
306
309
|
|
307
310
|
def test_convert_hr
|
308
311
|
expected = []
|
309
|
-
markdown =
|
312
|
+
markdown = '---'
|
310
313
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
311
314
|
end
|
312
315
|
|
313
316
|
def test_convert_img
|
314
317
|
expected = [
|
315
318
|
{
|
316
|
-
type:
|
319
|
+
type: 'image',
|
317
320
|
content: {
|
318
|
-
text:
|
321
|
+
text: '',
|
319
322
|
spans: []
|
320
323
|
},
|
321
324
|
data: {
|
@@ -326,7 +329,7 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
326
329
|
}
|
327
330
|
}
|
328
331
|
]
|
329
|
-
markdown =
|
332
|
+
markdown = '![alt text](/img.png)'
|
330
333
|
doc = Kramdown::Document.new(markdown)
|
331
334
|
assert_equal expected, doc.to_prismic
|
332
335
|
assert_equal 0, doc.warnings.size
|
@@ -335,9 +338,9 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
335
338
|
def test_convert_double_img
|
336
339
|
expected = [
|
337
340
|
{
|
338
|
-
type:
|
341
|
+
type: 'image',
|
339
342
|
content: {
|
340
|
-
text:
|
343
|
+
text: '',
|
341
344
|
spans: []
|
342
345
|
},
|
343
346
|
data: {
|
@@ -348,9 +351,9 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
348
351
|
}
|
349
352
|
},
|
350
353
|
{
|
351
|
-
type:
|
354
|
+
type: 'image',
|
352
355
|
content: {
|
353
|
-
text:
|
356
|
+
text: '',
|
354
357
|
spans: []
|
355
358
|
},
|
356
359
|
data: {
|
@@ -361,7 +364,7 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
361
364
|
}
|
362
365
|
}
|
363
366
|
]
|
364
|
-
markdown =
|
367
|
+
markdown = '![](/img.png)![](/img2.png)'
|
365
368
|
doc = Kramdown::Document.new(markdown)
|
366
369
|
assert_equal expected, doc.to_prismic
|
367
370
|
assert_equal 2, doc.warnings.size
|
@@ -370,9 +373,9 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
370
373
|
def test_convert_img_with_link
|
371
374
|
expected = [
|
372
375
|
{
|
373
|
-
type:
|
376
|
+
type: 'image',
|
374
377
|
content: {
|
375
|
-
text:
|
378
|
+
text: '',
|
376
379
|
spans: []
|
377
380
|
},
|
378
381
|
data: {
|
@@ -381,12 +384,12 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
381
384
|
},
|
382
385
|
alt: 'alt text',
|
383
386
|
linkTo: {
|
384
|
-
url:
|
387
|
+
url: 'https://example.net/'
|
385
388
|
}
|
386
389
|
}
|
387
390
|
}
|
388
391
|
]
|
389
|
-
markdown =
|
392
|
+
markdown = '[![alt text](/img.png)](https://example.net/)'
|
390
393
|
doc = Kramdown::Document.new(markdown)
|
391
394
|
assert_equal expected, doc.to_prismic
|
392
395
|
assert_equal 0, doc.warnings.size
|
@@ -395,29 +398,28 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
395
398
|
def test_convert_entity
|
396
399
|
expected = [
|
397
400
|
{
|
398
|
-
type:
|
401
|
+
type: 'paragraph',
|
399
402
|
content: {
|
400
403
|
text: "\u00a0",
|
401
404
|
spans: []
|
402
405
|
}
|
403
406
|
}
|
404
407
|
]
|
405
|
-
markdown =
|
408
|
+
markdown = ' '
|
406
409
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
407
410
|
end
|
408
411
|
|
409
|
-
[['mdash'
|
410
|
-
['ndash'
|
411
|
-
['hellip'
|
412
|
-
['laquo'
|
413
|
-
['raquo'
|
414
|
-
['laquo_space'
|
415
|
-
['raquo_space'
|
416
|
-
].each do |symbol|
|
412
|
+
[['mdash', ' ---', ' —'],
|
413
|
+
['ndash', ' --', ' –'],
|
414
|
+
['hellip', ' ...', ' …'],
|
415
|
+
['laquo', ' <<', ' «'],
|
416
|
+
['raquo', '>>', '»'],
|
417
|
+
['laquo_space', ' << T', ' « T'],
|
418
|
+
['raquo_space', ' >>', ' »']].each do |symbol|
|
417
419
|
define_method "test_convert_typographic_symbols_#{symbol[0]}" do
|
418
420
|
expected = [
|
419
421
|
{
|
420
|
-
type:
|
422
|
+
type: 'paragraph',
|
421
423
|
content: {
|
422
424
|
text: "Hello#{symbol[2]}",
|
423
425
|
spans: []
|
@@ -431,11 +433,12 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
431
433
|
|
432
434
|
def test_convert_smart_quote
|
433
435
|
expected = [
|
434
|
-
{
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
436
|
+
{
|
437
|
+
type: 'paragraph',
|
438
|
+
content: {
|
439
|
+
text: "Test\u2019",
|
440
|
+
spans: []
|
441
|
+
}
|
439
442
|
}
|
440
443
|
]
|
441
444
|
markdown = "Test'"
|
@@ -445,14 +448,14 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
445
448
|
def test_convert_inline_code
|
446
449
|
expected = [
|
447
450
|
{
|
448
|
-
type:
|
451
|
+
type: 'paragraph',
|
449
452
|
content: {
|
450
|
-
text:
|
453
|
+
text: 'Hello code',
|
451
454
|
spans: []
|
452
455
|
}
|
453
456
|
}
|
454
457
|
]
|
455
|
-
markdown =
|
458
|
+
markdown = 'Hello `code`'
|
456
459
|
doc = Kramdown::Document.new(markdown)
|
457
460
|
assert_equal expected, doc.to_prismic
|
458
461
|
assert_equal 1, doc.warnings.size
|
@@ -460,20 +463,54 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
460
463
|
|
461
464
|
def test_convert_br
|
462
465
|
expected = [
|
463
|
-
{
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
466
|
+
{
|
467
|
+
type: 'paragraph',
|
468
|
+
content: {
|
469
|
+
text: "Test\n",
|
470
|
+
spans: []
|
471
|
+
}
|
468
472
|
}
|
469
473
|
]
|
470
|
-
html =
|
474
|
+
html = '<p>Test<br></p>'
|
471
475
|
assert_equal expected, Kramdown::Document.new(html, input: :html).to_prismic
|
472
476
|
end
|
473
477
|
|
478
|
+
def test_convert_html_with_no_tags
|
479
|
+
expected = [
|
480
|
+
{
|
481
|
+
type: 'paragraph',
|
482
|
+
content: {
|
483
|
+
text: "Test\n",
|
484
|
+
spans: []
|
485
|
+
}
|
486
|
+
}
|
487
|
+
]
|
488
|
+
html = 'Test'
|
489
|
+
assert_equal expected, Kramdown::Document.new(html, input: :html).to_prismic
|
490
|
+
end
|
491
|
+
|
492
|
+
def test_convert_iframe
|
493
|
+
expected = [
|
494
|
+
{
|
495
|
+
type: 'embed',
|
496
|
+
content: {
|
497
|
+
text: '',
|
498
|
+
spans: []
|
499
|
+
},
|
500
|
+
data: {
|
501
|
+
embed_url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
|
502
|
+
type: 'link'
|
503
|
+
}
|
504
|
+
}
|
505
|
+
]
|
506
|
+
html = '<iframe src="https://www.youtube.com/watch?v=dQw4w9WgXcQ"></iframe>'
|
507
|
+
doc = Kramdown::Document.new(html, input: :markdown)
|
508
|
+
assert_equal expected, doc.to_prismic
|
509
|
+
end
|
510
|
+
|
474
511
|
def test_convert_html
|
475
512
|
expected = []
|
476
|
-
html =
|
513
|
+
html = '<div></div>'
|
477
514
|
doc = Kramdown::Document.new(html, input: :markdown)
|
478
515
|
assert_equal expected, doc.to_prismic
|
479
516
|
assert_equal 1, doc.warnings.size
|
@@ -482,14 +519,14 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
482
519
|
def test_convert_span_html
|
483
520
|
expected = [
|
484
521
|
{
|
485
|
-
type:
|
522
|
+
type: 'paragraph',
|
486
523
|
content: {
|
487
|
-
text:
|
524
|
+
text: '',
|
488
525
|
spans: []
|
489
526
|
}
|
490
527
|
}
|
491
528
|
]
|
492
|
-
html =
|
529
|
+
html = '<br>'
|
493
530
|
doc = Kramdown::Document.new(html, input: :markdown)
|
494
531
|
assert_equal expected, doc.to_prismic
|
495
532
|
assert_equal 1, doc.warnings.size
|
@@ -497,7 +534,7 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
497
534
|
|
498
535
|
def test_convert_table
|
499
536
|
expected = []
|
500
|
-
markdown =
|
537
|
+
markdown = '| First cell|Second cell|Third cell|'
|
501
538
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
502
539
|
assert_equal expected, doc.to_prismic
|
503
540
|
assert_equal 1, doc.warnings.size
|
@@ -513,7 +550,7 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
513
550
|
|
514
551
|
def test_convert_math
|
515
552
|
expected = []
|
516
|
-
markdown =
|
553
|
+
markdown = '$$ 5 + 5 $$'
|
517
554
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
518
555
|
assert_equal expected, doc.to_prismic
|
519
556
|
assert_equal 1, doc.warnings.size
|
@@ -522,12 +559,13 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
522
559
|
def test_convert_footnote
|
523
560
|
expected = [
|
524
561
|
{
|
525
|
-
type:
|
562
|
+
type: 'paragraph',
|
526
563
|
content: {
|
527
|
-
text:
|
564
|
+
text: 'test',
|
528
565
|
spans: []
|
529
566
|
}
|
530
|
-
}
|
567
|
+
}
|
568
|
+
]
|
531
569
|
markdown = "test[^1]\n\n[^1]: test"
|
532
570
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
533
571
|
assert_equal expected, doc.to_prismic
|
@@ -537,37 +575,46 @@ class KramdownPrismicConverterTest < Minitest::Test
|
|
537
575
|
def test_convert_abbreviation
|
538
576
|
expected = [
|
539
577
|
{
|
540
|
-
type:
|
578
|
+
type: 'paragraph',
|
541
579
|
content: {
|
542
|
-
text:
|
580
|
+
text: 'HTML',
|
543
581
|
spans: []
|
544
582
|
}
|
545
|
-
}
|
583
|
+
}
|
584
|
+
]
|
546
585
|
markdown = "HTML\n\n*[HTML]: test"
|
547
586
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
548
587
|
assert_equal expected, doc.to_prismic
|
549
588
|
assert_equal 1, doc.warnings.size
|
550
589
|
end
|
551
590
|
|
552
|
-
def
|
591
|
+
def test_convert_xml_comment
|
553
592
|
expected = []
|
554
|
-
markdown = "
|
593
|
+
markdown = "<!-- Main -->"
|
555
594
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
556
595
|
assert_equal expected, doc.to_prismic
|
557
596
|
assert_equal 1, doc.warnings.size
|
558
597
|
end
|
559
598
|
|
560
|
-
def
|
561
|
-
expected = [
|
562
|
-
|
599
|
+
def test_convert_span_xml_comment
|
600
|
+
expected = [
|
601
|
+
{
|
602
|
+
type: 'paragraph',
|
603
|
+
content: {
|
604
|
+
text: 'test test',
|
605
|
+
spans: []
|
606
|
+
}
|
607
|
+
}
|
608
|
+
]
|
609
|
+
markdown = "test <!-- Main --> test"
|
563
610
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
564
611
|
assert_equal expected, doc.to_prismic
|
565
612
|
assert_equal 1, doc.warnings.size
|
566
613
|
end
|
567
614
|
|
568
|
-
def
|
615
|
+
def test_convert_comment
|
569
616
|
expected = []
|
570
|
-
markdown = "
|
617
|
+
markdown = "{::comment}\nComment\n{:/comment}"
|
571
618
|
doc = Kramdown::Document.new(markdown, input: :kramdown)
|
572
619
|
assert_equal expected, doc.to_prismic
|
573
620
|
assert_equal 1, doc.warnings.size
|