kramdown-prismic 0.3.0 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{Changelog.md → CHANGELOG.md} +18 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +1 -1
- 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 +2 -0
- data/kramdown2.gemfile +2 -0
- data/lib/kramdown/converter/prismic.rb +89 -38
- data/lib/kramdown/parser/prismic.rb +60 -29
- data/lib/kramdown-prismic/version.rb +3 -1
- data/lib/kramdown-prismic.rb +2 -0
- data/test/converter_test.rb +208 -105
- data/test/parser_test.rb +173 -52
- metadata +10 -5
- data/.travis.yml +0 -6
data/test/parser_test.rb
CHANGED
@@ -1,43 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'minitest/autorun'
|
2
4
|
require 'kramdown-prismic'
|
3
5
|
|
4
6
|
class KramdownPrismicParserTest < Minitest::Test
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
6.times do |heading|
|
8
|
+
define_method "test_parse_heading_#{heading}" do
|
9
|
+
prismic = [
|
10
|
+
{
|
11
|
+
type: "heading#{heading + 1}",
|
12
|
+
content: {
|
13
|
+
text: 'This is the document title',
|
14
|
+
spans: []
|
15
|
+
}
|
12
16
|
}
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_parse_heading2
|
21
|
-
prismic = [
|
22
|
-
{
|
23
|
-
type: "heading2",
|
24
|
-
content: {
|
25
|
-
text: "This is an h2 title",
|
26
|
-
spans: []
|
27
|
-
}
|
28
|
-
}
|
29
|
-
]
|
30
|
-
expected = "## This is an h2 title\n\n"
|
31
|
-
doc = Kramdown::Document.new(prismic, input: :prismic)
|
32
|
-
assert_equal expected, doc.to_kramdown
|
17
|
+
]
|
18
|
+
expected = "#{'#' * (heading + 1)} This is the document title\n\n"
|
19
|
+
doc = Kramdown::Document.new(prismic, input: :prismic)
|
20
|
+
assert_equal expected, doc.to_kramdown
|
21
|
+
end
|
33
22
|
end
|
34
23
|
|
35
24
|
def test_parse_paragraph
|
36
25
|
prismic = [
|
37
26
|
{
|
38
|
-
type:
|
27
|
+
type: 'paragraph',
|
39
28
|
content: {
|
40
|
-
text:
|
29
|
+
text: 'This is a paragraph',
|
41
30
|
spans: []
|
42
31
|
}
|
43
32
|
}
|
@@ -50,12 +39,12 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
50
39
|
def test_parse_paragraph_with_spans
|
51
40
|
prismic = [
|
52
41
|
{
|
53
|
-
type:
|
42
|
+
type: 'paragraph',
|
54
43
|
content: {
|
55
|
-
text:
|
44
|
+
text: 'This is a paragraph',
|
56
45
|
spans: [
|
57
46
|
{
|
58
|
-
type:
|
47
|
+
type: 'em',
|
59
48
|
start: 0,
|
60
49
|
end: 4
|
61
50
|
}
|
@@ -71,17 +60,17 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
71
60
|
def test_parse_paragraph_with_multiple_spans
|
72
61
|
prismic = [
|
73
62
|
{
|
74
|
-
type:
|
63
|
+
type: 'paragraph',
|
75
64
|
content: {
|
76
|
-
text:
|
65
|
+
text: 'This is a paragraph',
|
77
66
|
spans: [
|
78
67
|
{
|
79
|
-
type:
|
68
|
+
type: 'em',
|
80
69
|
start: 0,
|
81
70
|
end: 4
|
82
71
|
},
|
83
72
|
{
|
84
|
-
type:
|
73
|
+
type: 'strong',
|
85
74
|
start: 5,
|
86
75
|
end: 7
|
87
76
|
}
|
@@ -97,16 +86,16 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
97
86
|
def test_parse_paragraph_with_link
|
98
87
|
prismic = [
|
99
88
|
{
|
100
|
-
type:
|
89
|
+
type: 'paragraph',
|
101
90
|
content: {
|
102
|
-
text:
|
91
|
+
text: 'This is a paragraph',
|
103
92
|
spans: [
|
104
93
|
{
|
105
|
-
type:
|
94
|
+
type: 'hyperlink',
|
106
95
|
start: 0,
|
107
96
|
end: 19,
|
108
97
|
data: {
|
109
|
-
url:
|
98
|
+
url: 'https://prismic.io'
|
110
99
|
}
|
111
100
|
}
|
112
101
|
]
|
@@ -121,21 +110,21 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
121
110
|
def test_parse_paragraph_with_nested_spans
|
122
111
|
prismic = [
|
123
112
|
{
|
124
|
-
type:
|
113
|
+
type: 'paragraph',
|
125
114
|
content: {
|
126
|
-
text:
|
115
|
+
text: 'This is a paragraph',
|
127
116
|
spans: [
|
128
117
|
{
|
129
|
-
type:
|
118
|
+
type: 'em',
|
130
119
|
start: 0,
|
131
120
|
end: 4
|
132
121
|
},
|
133
122
|
{
|
134
|
-
type:
|
123
|
+
type: 'hyperlink',
|
135
124
|
start: 0,
|
136
125
|
end: 19,
|
137
126
|
data: {
|
138
|
-
url:
|
127
|
+
url: 'https://prismic.io'
|
139
128
|
}
|
140
129
|
}
|
141
130
|
]
|
@@ -147,12 +136,120 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
147
136
|
assert_equal expected, doc.to_kramdown
|
148
137
|
end
|
149
138
|
|
139
|
+
def test_parse_list_item
|
140
|
+
prismic = [
|
141
|
+
{
|
142
|
+
type: 'list-item',
|
143
|
+
content: {
|
144
|
+
text: 'Hello',
|
145
|
+
spans: []
|
146
|
+
}
|
147
|
+
},
|
148
|
+
{
|
149
|
+
type: 'list-item',
|
150
|
+
content: {
|
151
|
+
text: 'World',
|
152
|
+
spans: []
|
153
|
+
}
|
154
|
+
}
|
155
|
+
]
|
156
|
+
expected = "* Hello\n* World\n\n"
|
157
|
+
doc = Kramdown::Document.new(prismic, input: :prismic)
|
158
|
+
assert_equal expected, doc.to_kramdown
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_parse_list_item_and_spans
|
162
|
+
prismic = [
|
163
|
+
{
|
164
|
+
type: 'list-item',
|
165
|
+
content: {
|
166
|
+
text: 'Hello',
|
167
|
+
spans: [
|
168
|
+
{
|
169
|
+
type: 'em',
|
170
|
+
start: 0,
|
171
|
+
end: 5
|
172
|
+
}
|
173
|
+
]
|
174
|
+
}
|
175
|
+
},
|
176
|
+
{
|
177
|
+
type: 'list-item',
|
178
|
+
content: {
|
179
|
+
text: 'World',
|
180
|
+
spans: []
|
181
|
+
}
|
182
|
+
}
|
183
|
+
]
|
184
|
+
expected = "* *Hello*\n* World\n\n"
|
185
|
+
doc = Kramdown::Document.new(prismic, input: :prismic)
|
186
|
+
assert_equal expected, doc.to_kramdown
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_parse_o_list_item
|
190
|
+
prismic = [
|
191
|
+
{
|
192
|
+
type: 'o-list-item',
|
193
|
+
content: {
|
194
|
+
text: 'Hello',
|
195
|
+
spans: []
|
196
|
+
}
|
197
|
+
},
|
198
|
+
{
|
199
|
+
type: 'o-list-item',
|
200
|
+
content: {
|
201
|
+
text: 'World',
|
202
|
+
spans: []
|
203
|
+
}
|
204
|
+
}
|
205
|
+
]
|
206
|
+
expected = "1. Hello\n2. World\n\n"
|
207
|
+
doc = Kramdown::Document.new(prismic, input: :prismic)
|
208
|
+
assert_equal expected, doc.to_kramdown
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_parse_o_list_item_and_list_item
|
212
|
+
prismic = [
|
213
|
+
{
|
214
|
+
type: 'o-list-item',
|
215
|
+
content: {
|
216
|
+
text: 'Hello',
|
217
|
+
spans: []
|
218
|
+
}
|
219
|
+
},
|
220
|
+
{
|
221
|
+
type: 'o-list-item',
|
222
|
+
content: {
|
223
|
+
text: 'World',
|
224
|
+
spans: []
|
225
|
+
}
|
226
|
+
},
|
227
|
+
{
|
228
|
+
type: 'list-item',
|
229
|
+
content: {
|
230
|
+
text: 'Test',
|
231
|
+
spans: []
|
232
|
+
}
|
233
|
+
},
|
234
|
+
{
|
235
|
+
type: 'list-item',
|
236
|
+
content: {
|
237
|
+
text: 'roger',
|
238
|
+
spans: []
|
239
|
+
}
|
240
|
+
}
|
241
|
+
]
|
242
|
+
expected = "1. Hello\n2. World\n\n* Test\n* roger\n\n"
|
243
|
+
doc = Kramdown::Document.new(prismic, input: :prismic)
|
244
|
+
assert_equal expected, doc.to_kramdown
|
245
|
+
end
|
246
|
+
|
150
247
|
def test_parse_image
|
151
248
|
prismic = [
|
152
249
|
{
|
153
|
-
type:
|
250
|
+
type: 'image',
|
154
251
|
content: {
|
155
|
-
text:
|
252
|
+
text: '',
|
156
253
|
spans: []
|
157
254
|
},
|
158
255
|
data: {
|
@@ -168,10 +265,34 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
168
265
|
assert_equal expected, doc.to_kramdown
|
169
266
|
end
|
170
267
|
|
268
|
+
def test_parse_img_with_link
|
269
|
+
prismic = [
|
270
|
+
{
|
271
|
+
type: 'image',
|
272
|
+
content: {
|
273
|
+
text: '',
|
274
|
+
spans: []
|
275
|
+
},
|
276
|
+
data: {
|
277
|
+
origin: {
|
278
|
+
url: '/img.png'
|
279
|
+
},
|
280
|
+
alt: 'alt text',
|
281
|
+
linkTo: {
|
282
|
+
url: 'https://example.net/'
|
283
|
+
}
|
284
|
+
}
|
285
|
+
}
|
286
|
+
]
|
287
|
+
expected = "[![alt text](/img.png)][1]\n\n\n\n[1]: https://example.net/\n"
|
288
|
+
doc = Kramdown::Document.new(prismic, input: :prismic)
|
289
|
+
assert_equal expected, doc.to_kramdown
|
290
|
+
end
|
291
|
+
|
171
292
|
def test_parse_preformatted
|
172
293
|
prismic = [
|
173
294
|
{
|
174
|
-
type:
|
295
|
+
type: 'preformatted',
|
175
296
|
content: {
|
176
297
|
text: "This is a pre block\n",
|
177
298
|
spans: []
|
@@ -186,13 +307,13 @@ class KramdownPrismicParserTest < Minitest::Test
|
|
186
307
|
def test_parse_embed
|
187
308
|
prismic = [
|
188
309
|
{
|
189
|
-
type:
|
310
|
+
type: 'embed',
|
190
311
|
data: {
|
191
|
-
type:
|
192
|
-
embed_url:
|
312
|
+
type: 'video',
|
313
|
+
embed_url: 'https://www.youtube.com/watch?v=y6y_4_b6RS8'
|
193
314
|
},
|
194
315
|
content: {
|
195
|
-
text:
|
316
|
+
text: '',
|
196
317
|
spans: []
|
197
318
|
}
|
198
319
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown-prismic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- François de Metz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -61,19 +61,24 @@ dependencies:
|
|
61
61
|
description: A Kramdown converter to convert documents into prismic rich text format
|
62
62
|
and the other way around.
|
63
63
|
email: francois@2metz.fr
|
64
|
-
executables:
|
64
|
+
executables:
|
65
|
+
- markdown2prismic
|
66
|
+
- html2prismic
|
67
|
+
- prismic2markdown
|
65
68
|
extensions: []
|
66
69
|
extra_rdoc_files: []
|
67
70
|
files:
|
68
71
|
- ".github/workflows/ci.yml"
|
69
72
|
- ".gitignore"
|
70
|
-
-
|
71
|
-
- Changelog.md
|
73
|
+
- CHANGELOG.md
|
72
74
|
- Gemfile
|
73
75
|
- Gemfile.lock
|
74
76
|
- LICENSE
|
75
77
|
- README.md
|
76
78
|
- Rakefile
|
79
|
+
- bin/html2prismic
|
80
|
+
- bin/markdown2prismic
|
81
|
+
- bin/prismic2markdown
|
77
82
|
- kramdown-prismic.gemspec
|
78
83
|
- kramdown1.gemfile
|
79
84
|
- kramdown2.gemfile
|