kramdown-prismic 0.0.3 → 0.0.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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +7 -5
- data/lib/kramdown-prismic/version.rb +1 -1
- data/lib/kramdown/converter/prismic.rb +29 -9
- data/test/kramdown-prismic_test.rb +94 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5465bc67c1f2cc29208888f196e1a2eb3b67abf6
|
4
|
+
data.tar.gz: 421a8ce16fea41e776293fa57bdaf39ea3f029a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd90c77232680328ee30a3a08a3b7b434cf69255de143dfa40c4ff0e44beb4c5345b5c65dca726771596b5697eeb9dbca3bab17253d77d456133e2e34a18ed85
|
7
|
+
data.tar.gz: b75ef505d3fb1f7b4cb389cf7a026b45babb98b0322ee6d626b4a81da06b17206db48fde683b916affc4e64fc24ef6cd07802ec531f7ceba8f93b9cbd41ba5c6
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -21,7 +21,7 @@ TODO:
|
|
21
21
|
- [x] hyperlink
|
22
22
|
- [x] o-list-item
|
23
23
|
- [x] list-item
|
24
|
-
- [
|
24
|
+
- [x] Image
|
25
25
|
- [ ] Embed
|
26
26
|
|
27
27
|
## Difference between markdown and rich text
|
@@ -30,10 +30,12 @@ TODO:
|
|
30
30
|
|------------------|----------------------------|
|
31
31
|
| Blockquote | translated to preformatted |
|
32
32
|
| hr | nothing |
|
33
|
-
| img | moved to
|
33
|
+
| img | moved to the top level |
|
34
|
+
| nested list | moved to the top level |
|
35
|
+
| br | |
|
34
36
|
| dl | |
|
35
37
|
| dt | |
|
36
|
-
|
|
38
|
+
| dd | |
|
37
39
|
| table | |
|
38
40
|
| thead | |
|
39
41
|
| tobdy | |
|
@@ -42,11 +44,11 @@ TODO:
|
|
42
44
|
| td | |
|
43
45
|
| math | |
|
44
46
|
| footnote | |
|
45
|
-
| entity |
|
47
|
+
| entity | Transformed to unicode |
|
46
48
|
| typographic_sym | |
|
47
49
|
| smart_quote | |
|
48
50
|
| abbreviation | |
|
49
|
-
| html_element |
|
51
|
+
| html_element | not supported |
|
50
52
|
| xml_comment | |
|
51
53
|
| xml_pi | |
|
52
54
|
| comment | |
|
@@ -4,27 +4,42 @@ module Kramdown
|
|
4
4
|
module Converter
|
5
5
|
class Prismic < Base
|
6
6
|
def convert(root)
|
7
|
-
|
7
|
+
cleanup_ast(root).map { |child|
|
8
8
|
convert_element(child)
|
9
9
|
}.compact.flatten
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
13
13
|
|
14
|
-
def
|
14
|
+
def cleanup_ast(root)
|
15
|
+
remove_blanks(root)
|
15
16
|
root.children.map do |child|
|
16
|
-
|
17
|
-
[child,
|
17
|
+
elements = extract_non_nestable_elements(child)
|
18
|
+
[child, elements]
|
18
19
|
end.flatten.compact
|
19
20
|
end
|
20
21
|
|
21
|
-
def
|
22
|
+
def remove_blanks(root)
|
23
|
+
root.children.each do |child|
|
24
|
+
if child.type == :blank
|
25
|
+
root.children.slice!(root.children.find_index(child))
|
26
|
+
else
|
27
|
+
remove_blanks(child)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def extract_non_nestable_elements(child)
|
22
33
|
child.children.map do |element|
|
23
34
|
if element.type == :img
|
24
35
|
child.children.slice!(child.children.find_index(element))
|
25
36
|
element
|
37
|
+
elsif element.type == :ul
|
38
|
+
warning('nested list moved to the top level')
|
39
|
+
child.children.slice!(child.children.find_index(element))
|
40
|
+
[element, extract_non_nestable_elements(element)]
|
26
41
|
else
|
27
|
-
|
42
|
+
extract_non_nestable_elements(element)
|
28
43
|
end
|
29
44
|
end
|
30
45
|
end
|
@@ -33,9 +48,6 @@ module Kramdown
|
|
33
48
|
send("convert_#{element.type}", element)
|
34
49
|
end
|
35
50
|
|
36
|
-
def convert_blank(element)
|
37
|
-
end
|
38
|
-
|
39
51
|
def convert_header(element)
|
40
52
|
{
|
41
53
|
type: "heading#{element.options[:level]}",
|
@@ -149,6 +161,14 @@ module Kramdown
|
|
149
161
|
extract_content(element, memo)
|
150
162
|
end
|
151
163
|
|
164
|
+
def extract_span_br(element, memo)
|
165
|
+
memo[:text] += "\n"
|
166
|
+
end
|
167
|
+
|
168
|
+
def extract_span_html_element(element, memo)
|
169
|
+
warning('translating html elements is not supported')
|
170
|
+
end
|
171
|
+
|
152
172
|
def extract_span_entity(element, memo)
|
153
173
|
memo[:text] += unicode_char(element.value.code_point)
|
154
174
|
end
|
@@ -201,6 +201,59 @@ class KramdownPrismicTest < Minitest::Test
|
|
201
201
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
202
202
|
end
|
203
203
|
|
204
|
+
def test_convert_nested_ul
|
205
|
+
expected = [
|
206
|
+
{
|
207
|
+
type: "list-item",
|
208
|
+
content: {
|
209
|
+
text: "item1\n",
|
210
|
+
spans: []
|
211
|
+
}
|
212
|
+
},
|
213
|
+
{
|
214
|
+
type: "list-item",
|
215
|
+
content: {
|
216
|
+
text: "item2",
|
217
|
+
spans: []
|
218
|
+
}
|
219
|
+
}
|
220
|
+
]
|
221
|
+
markdown = "- item1\n - item2"
|
222
|
+
doc = Kramdown::Document.new(markdown, input: :markdown)
|
223
|
+
assert_equal expected, doc.to_prismic
|
224
|
+
assert_equal 1, doc.warnings.size
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_convert_nested_nested_ul
|
228
|
+
expected = [
|
229
|
+
{
|
230
|
+
type: "list-item",
|
231
|
+
content: {
|
232
|
+
text: "item1\n",
|
233
|
+
spans: []
|
234
|
+
}
|
235
|
+
},
|
236
|
+
{
|
237
|
+
type: "list-item",
|
238
|
+
content: {
|
239
|
+
text: "item2\n",
|
240
|
+
spans: []
|
241
|
+
}
|
242
|
+
},
|
243
|
+
{
|
244
|
+
type: "list-item",
|
245
|
+
content: {
|
246
|
+
text: "item3",
|
247
|
+
spans: []
|
248
|
+
}
|
249
|
+
}
|
250
|
+
]
|
251
|
+
markdown = "- item1\n - item2\n - item3"
|
252
|
+
doc = Kramdown::Document.new(markdown, input: :markdown)
|
253
|
+
assert_equal expected, doc.to_prismic
|
254
|
+
assert_equal 2, doc.warnings.size
|
255
|
+
end
|
256
|
+
|
204
257
|
def test_convert_preformatted
|
205
258
|
expected = [
|
206
259
|
{
|
@@ -235,6 +288,19 @@ class KramdownPrismicTest < Minitest::Test
|
|
235
288
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
236
289
|
end
|
237
290
|
|
291
|
+
def test_convert_span_blank
|
292
|
+
expected = [
|
293
|
+
{type: "o-list-item",
|
294
|
+
content: {
|
295
|
+
text: "Testtest",
|
296
|
+
spans: []
|
297
|
+
}
|
298
|
+
}
|
299
|
+
]
|
300
|
+
markdown = "1. Test\n\n test"
|
301
|
+
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
302
|
+
end
|
303
|
+
|
238
304
|
def test_convert_hr
|
239
305
|
expected = []
|
240
306
|
markdown = "---"
|
@@ -277,4 +343,32 @@ class KramdownPrismicTest < Minitest::Test
|
|
277
343
|
markdown = " "
|
278
344
|
assert_equal expected, Kramdown::Document.new(markdown, input: :markdown).to_prismic
|
279
345
|
end
|
346
|
+
|
347
|
+
def test_convert_br
|
348
|
+
expected = [
|
349
|
+
{type: "paragraph",
|
350
|
+
content: {
|
351
|
+
text: "Test\n",
|
352
|
+
spans: []
|
353
|
+
}
|
354
|
+
}
|
355
|
+
]
|
356
|
+
html = "<p>Test<br></p>"
|
357
|
+
assert_equal expected, Kramdown::Document.new(html, input: :html).to_prismic
|
358
|
+
end
|
359
|
+
|
360
|
+
def test_convert_span_html
|
361
|
+
expected = [
|
362
|
+
{type: "paragraph",
|
363
|
+
content: {
|
364
|
+
text: "",
|
365
|
+
spans: []
|
366
|
+
}
|
367
|
+
}
|
368
|
+
]
|
369
|
+
html = "<br>"
|
370
|
+
doc = Kramdown::Document.new(html, input: :markdown)
|
371
|
+
assert_equal expected, doc.to_prismic
|
372
|
+
assert_equal 1, doc.warnings.size
|
373
|
+
end
|
280
374
|
end
|
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.0.
|
4
|
+
version: 0.0.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: 2017-10-
|
11
|
+
date: 2017-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|