kramdown-prismic 0.2.2 → 0.3.3
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 +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 = ''
|
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 = ''
|
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 = '[](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
|