contentful_converter 0.0.1.12 → 0.0.1.13
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4af2afd7d0764a46305dea57d839478d7c424478c31beb7707a2e34c18a93815
|
4
|
+
data.tar.gz: bb2172e979ebff1f518f9286653bf84d79437cc905220bf1da0148c4e45021a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96d859ac6abc2a91cf99b1a53f0dd87116612690eca93cd0c3f454c50f85f6ba34a4d9eb39a79db216b8ae4b6083d6e09e87aead1613044d677886e3bb379622
|
7
|
+
data.tar.gz: a18b48a7d94854c67a89cfaf7cb103c5be8402c6c867e01e5743817665270ec3e88d3e631442f9cac02775c860b532d0ab5e5778b28fe81df4cac73dbd7e6e0a
|
data/README.md
CHANGED
@@ -45,13 +45,131 @@ ContentfulConverter.convert('<h3>hello world</h3>')
|
|
45
45
|
```
|
46
46
|
|
47
47
|
### Additional info
|
48
|
-
**HREF links**
|
49
48
|
|
50
|
-
|
51
|
-
|
52
|
-
* HTML hyperlinks
|
49
|
+
**`<a>`**
|
50
|
+
|
51
|
+
* HTML hyperlinks with full URL e.g: (`<a href="https://google.com"></a>`), will be converted into URL hyperlinks
|
52
|
+
```ruby
|
53
|
+
{
|
54
|
+
nodeType: 'paragraph',
|
55
|
+
data: {},
|
56
|
+
content: [
|
57
|
+
{
|
58
|
+
nodeType: 'hyperlink',
|
59
|
+
data: {
|
60
|
+
uri: 'https://google.com'
|
61
|
+
},
|
62
|
+
content: [
|
63
|
+
{
|
64
|
+
marks: [],
|
65
|
+
value: 'click me',
|
66
|
+
nodeType: 'text',
|
67
|
+
data: {}
|
68
|
+
}
|
69
|
+
]
|
70
|
+
}
|
71
|
+
]
|
72
|
+
}
|
73
|
+
```
|
74
|
+
|
75
|
+
* HTML hyperlinks without a scheme e.g: (`<a href="/about_us/contact">about us</a>`), will be converted into ENTRY hyperlinks, with the href value as an ID
|
76
|
+
```ruby
|
77
|
+
{
|
78
|
+
nodeType: "paragraph",
|
79
|
+
data: {},
|
80
|
+
content: [
|
81
|
+
{
|
82
|
+
nodeType: "entry-hyperlink",
|
83
|
+
data: {
|
84
|
+
target: {
|
85
|
+
sys: {
|
86
|
+
id: "/about_us/contact",
|
87
|
+
type: "Link",
|
88
|
+
linkType: "Entry"
|
89
|
+
}
|
90
|
+
}
|
91
|
+
},
|
92
|
+
content: [
|
93
|
+
{
|
94
|
+
data: {},
|
95
|
+
marks: [],
|
96
|
+
value: "about us",
|
97
|
+
nodeType: "text"
|
98
|
+
}
|
99
|
+
]
|
100
|
+
}
|
101
|
+
]
|
102
|
+
}
|
103
|
+
```
|
104
|
+
|
105
|
+
* HTML hyperlinks without a scheme but with an extension e.g: (`<a href="/path/to_file.docx">file</a>`), will be converted into ASSET hyperlinks, with the href value as an ID, excluding the extension.
|
106
|
+
```ruby
|
107
|
+
{
|
108
|
+
nodeType: "paragraph",
|
109
|
+
data: {},
|
110
|
+
content: [
|
111
|
+
{
|
112
|
+
nodeType: "asset-hyperlink",
|
113
|
+
data: {
|
114
|
+
target: {
|
115
|
+
sys: {
|
116
|
+
id: "/path/to_file",
|
117
|
+
type: "Link",
|
118
|
+
linkType: "Entry"
|
119
|
+
}
|
120
|
+
}
|
121
|
+
},
|
122
|
+
content: [
|
123
|
+
{
|
124
|
+
data: {},
|
125
|
+
marks: [],
|
126
|
+
value: "file",
|
127
|
+
nodeType: "text"
|
128
|
+
}
|
129
|
+
]
|
130
|
+
}
|
131
|
+
]
|
132
|
+
}
|
133
|
+
```
|
134
|
+
|
135
|
+
**`<embed />`**
|
136
|
+
|
137
|
+
If you want to add an embedded entry block, you need to create an `<embed>` element in HTML
|
138
|
+
with src as the entry ID and type for the entry type.
|
139
|
+
|
140
|
+
* Embedded Entry block: `<embed src="id_of_your_entry_123" type="entry"/>`
|
141
|
+
```ruby
|
142
|
+
{
|
143
|
+
data: {
|
144
|
+
target: {
|
145
|
+
sys: {
|
146
|
+
id: "id_of_your_entry_123",
|
147
|
+
type: "Link",
|
148
|
+
linkType: "Entry"
|
149
|
+
}
|
150
|
+
}
|
151
|
+
},
|
152
|
+
content: [],
|
153
|
+
nodeType: "embedded-entry-block"
|
154
|
+
}
|
155
|
+
```
|
53
156
|
|
54
|
-
*
|
157
|
+
* Embedded Asset block: `<embed src="id_of_your_entry_123" type="asset"/>`
|
158
|
+
```ruby
|
159
|
+
{
|
160
|
+
data: {
|
161
|
+
target: {
|
162
|
+
sys: {
|
163
|
+
id: "id_of_your_entry_123",
|
164
|
+
type: "Link",
|
165
|
+
linkType: "Asset"
|
166
|
+
}
|
167
|
+
}
|
168
|
+
},
|
169
|
+
content: [],
|
170
|
+
nodeType: "embedded-asset-block"
|
171
|
+
}
|
172
|
+
```
|
55
173
|
|
56
174
|
---
|
57
175
|
|
@@ -9,6 +9,7 @@ require 'contentful_converter/nodes/underline'
|
|
9
9
|
require 'contentful_converter/nodes/italic'
|
10
10
|
require 'contentful_converter/nodes/strong'
|
11
11
|
require 'contentful_converter/nodes/code'
|
12
|
+
require 'contentful_converter/nodes/embed'
|
12
13
|
require 'contentful_converter/nodes/ordered_list'
|
13
14
|
require 'contentful_converter/nodes/unordered_list'
|
14
15
|
require 'contentful_converter/nodes/horizontal_line'
|
@@ -36,6 +37,7 @@ module ContentfulConverter
|
|
36
37
|
'div' => Nodes::Paragraph,
|
37
38
|
'br' => Nodes::Paragraph,
|
38
39
|
'section' => Nodes::Paragraph,
|
40
|
+
'embed' => Nodes::Embed,
|
39
41
|
'hr' => Nodes::HorizontalLine,
|
40
42
|
'blockquote' => Nodes::Blockquote,
|
41
43
|
'ul' => Nodes::UnorderedList,
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'contentful_converter/nodes/hyperlink'
|
4
|
+
|
5
|
+
module ContentfulConverter
|
6
|
+
module Nodes
|
7
|
+
class Embed < Hyperlink
|
8
|
+
EMBED_VALUES = {
|
9
|
+
asset: 'embedded-asset-block',
|
10
|
+
entry: 'embedded-entry-block'
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
def needs_p_wrapping?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def type
|
20
|
+
EMBED_VALUES[type_value.downcase.to_sym] || raise('Incorrect embed type')
|
21
|
+
end
|
22
|
+
|
23
|
+
def options
|
24
|
+
hyperlink_entry_option(type_value.capitalize)
|
25
|
+
end
|
26
|
+
|
27
|
+
def type_value
|
28
|
+
nokogiri_node[:type] || raise('Embed element requires a type')
|
29
|
+
end
|
30
|
+
|
31
|
+
def parsed_link
|
32
|
+
nokogiri_node[:src]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -23,7 +23,7 @@ module ContentfulConverter
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def hyperlink_option
|
26
|
-
{ data: { uri:
|
26
|
+
{ data: { uri: parsed_link.to_s } }
|
27
27
|
end
|
28
28
|
|
29
29
|
def hyperlink_entry_option(type)
|
@@ -31,7 +31,7 @@ module ContentfulConverter
|
|
31
31
|
data: {
|
32
32
|
target: {
|
33
33
|
sys: {
|
34
|
-
id:
|
34
|
+
id: parsed_link.to_s.split('.').first,
|
35
35
|
type: "Link",
|
36
36
|
linkType: type
|
37
37
|
}
|
@@ -41,21 +41,19 @@ module ContentfulConverter
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def uri_scheme?
|
44
|
-
|
44
|
+
parsed_link.scheme
|
45
45
|
end
|
46
46
|
|
47
47
|
def uri_extension?
|
48
|
-
|
48
|
+
parsed_link.to_s.split('.')[1]
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
52
|
-
|
53
|
-
|
54
|
-
URI('')
|
51
|
+
def parsed_link
|
52
|
+
link_value ? URI(link_value) : URI('')
|
55
53
|
end
|
56
54
|
|
57
|
-
def
|
58
|
-
nokogiri_node[
|
55
|
+
def link_value
|
56
|
+
nokogiri_node[:href]
|
59
57
|
end
|
60
58
|
end
|
61
59
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contentful_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Avlonitis
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- lib/contentful_converter/nodes/blockquote.rb
|
53
53
|
- lib/contentful_converter/nodes/code.rb
|
54
54
|
- lib/contentful_converter/nodes/document.rb
|
55
|
+
- lib/contentful_converter/nodes/embed.rb
|
55
56
|
- lib/contentful_converter/nodes/header.rb
|
56
57
|
- lib/contentful_converter/nodes/horizontal_line.rb
|
57
58
|
- lib/contentful_converter/nodes/hyperlink.rb
|