contentstack_utils 1.1.3.2 → 1.2.0

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.
@@ -1,115 +1,122 @@
1
- require_relative '../interface/renderable.rb'
2
- require_relative './metadata.rb'
3
-
4
- module ContentstackUtils
5
- module Model
6
- class Options < Interface::Rendarable
7
-
8
- def initialize(entry = nil)
9
- @entry = entry
10
- end
11
-
12
- def entry
13
- @entry
14
- end
15
-
16
- def render_option(embeddedObject, metadata)
17
- renderString = ''
18
- case metadata.style_type
19
- when 'block'
20
- renderString = "<div><p>#{embeddedObject['title'] || embeddedObject['uid']}</p><p>Content type: <span>#{embeddedObject['_content_type_uid'] || embeddedObject['system']['content_type_uid']}</span></p></div>"
21
- when 'inline'
22
- renderString = "<span>#{embeddedObject["title"] || embeddedObject["uid"]}</span>";
23
- when 'link'
24
- metadata.get_attribute_value("href")
25
- renderString = "<a href='#{metadata.get_attribute_value("href") || embeddedObject["url"] || embeddedObject["title"] || embeddedObject["uid"]}'>#{(metadata.text && metadata.text != '' ? metadata.text : (embeddedObject["title"] || embeddedObject["uid"]))}</a>";
26
- when 'display'
27
- renderString = "<img src='#{metadata.get_attribute_value("src")|| embeddedObject["url"]}' alt='#{(metadata.attributes["alt"] ? metadata.attributes["alt"].value : (embeddedObject["title"] || embeddedObject["filename"] || embeddedObject["uid"]))}' />";
28
- when 'download'
29
- renderString = "<a href='#{metadata.get_attribute_value("href") || embeddedObject["url"]}'>#{(metadata.text && metadata.text != '' ? metadata.text : (embeddedObject["filename"] || embeddedObject["title"] || embeddedObject["uid"]))}</a>";
30
- end
31
- renderString
32
- end
33
-
34
- def render_mark(mark_type, text)
35
- renderString = text
36
- case mark_type
37
- when 'bold'
38
- renderString = "<strong>#{text}</strong>"
39
- when 'italic'
40
- renderString = "<em>#{text}</em>"
41
- when 'underline'
42
- renderString = "<u>#{text}</u>"
43
- when 'strikethrough'
44
- renderString = "<strike>#{text}</strike>"
45
- when 'inlineCode'
46
- renderString = "<span>#{text}</span>"
47
- when 'subscript'
48
- renderString = "<sub>#{text}</sub>"
49
- when 'superscript'
50
- renderString = "<sup>#{text}</sup>"
51
- end
52
- renderString
53
- end
54
-
55
- def render_node(node_type, node, inner_html)
56
- renderString = ""
57
- case node_type
58
- when 'doc'
59
- renderString = ""
60
- when 'p'
61
- renderString = "<p>#{inner_html}</p>"
62
- when 'a'
63
- renderString = "<a href='#{node["attrs"]["href"] || node["attrs"]["url"] || ""}'>#{inner_html}</a>"
64
- when 'img'
65
- renderString = "<img src='#{node["attrs"]["src"] || node["attrs"]["url"] || ""}' />#{inner_html}"
66
- when 'embed'
67
- renderString = "<iframe src='#{node["attrs"]["src"] || node["attrs"]["url"] || ""}'></iframe>"
68
- when 'h1'
69
- renderString = "<h1>#{inner_html}</h1>"
70
- when 'h2'
71
- renderString = "<h2>#{inner_html}</h2>"
72
- when 'h3'
73
- renderString = "<h3>#{inner_html}</h3>"
74
- when 'h4'
75
- renderString = "<h4>#{inner_html}</h4>"
76
- when 'h5'
77
- renderString = "<h5>#{inner_html}</h5>"
78
- when 'h6'
79
- renderString = "<h6>#{inner_html}</h6>"
80
- when 'ol'
81
- renderString = "<ol>#{inner_html}</ol>"
82
- when 'ul'
83
- renderString = "<ul>#{inner_html}</ul>"
84
- when 'li'
85
- renderString = "<li>#{inner_html}</li>"
86
- when 'hr'
87
- renderString = "<hr />"
88
- when 'table'
89
- renderString = "<table>#{inner_html}</table>"
90
- when 'thead'
91
- renderString = "<thead>#{inner_html}</thead>"
92
- when 'tbody'
93
- renderString = "<tbody>#{inner_html}</tbody>"
94
- when 'tfoot'
95
- renderString = "<tfoot>#{inner_html}</tfoot>"
96
- when 'tr'
97
- renderString = "<tr>#{inner_html}</tr>"
98
- when 'th'
99
- renderString = "<th>#{inner_html}</th>"
100
- when 'td'
101
- renderString = "<td>#{inner_html}</td>"
102
- when 'blockquote'
103
- renderString = "<blockquote>#{inner_html}</blockquote>"
104
- when 'code'
105
- renderString = "<code>#{inner_html}</code>"
106
- when 'reference'
107
- renderString = ""
108
- when 'span'
109
- renderString = "<span>#{inner_html}</span>"
110
- end
111
- renderString
112
- end
113
- end
114
- end
115
- end
1
+ require_relative '../interface/renderable.rb'
2
+ require_relative './metadata.rb'
3
+
4
+ module ContentstackUtils
5
+ module Model
6
+ class Options < Interface::Rendarable
7
+
8
+ def initialize(entry = nil)
9
+ @entry = entry
10
+ end
11
+
12
+ def entry
13
+ @entry
14
+ end
15
+
16
+ def render_option(embeddedObject, metadata)
17
+ renderString = ''
18
+ case metadata.style_type
19
+ when 'block'
20
+ renderString = "<div><p>#{embeddedObject['title'] || embeddedObject['uid']}</p><p>Content type: <span>#{embeddedObject['_content_type_uid'] || embeddedObject['system']['content_type_uid']}</span></p></div>"
21
+ when 'inline'
22
+ renderString = "<span>#{embeddedObject["title"] || embeddedObject["uid"]}</span>";
23
+ when 'link'
24
+ metadata.get_attribute_value("href")
25
+ renderString = "<a href='#{metadata.get_attribute_value("href") || embeddedObject["url"] || embeddedObject["title"] || embeddedObject["uid"]}'>#{(metadata.text && metadata.text != '' ? metadata.text : (embeddedObject["title"] || embeddedObject["uid"]))}</a>";
26
+ when 'display'
27
+ renderString = "<img src='#{metadata.get_attribute_value("src")|| embeddedObject["url"]}' alt='#{(metadata.attributes["alt"] ? metadata.attributes["alt"].value : (embeddedObject["title"] || embeddedObject["filename"] || embeddedObject["uid"]))}' />";
28
+ when 'download'
29
+ renderString = "<a href='#{metadata.get_attribute_value("href") || embeddedObject["url"]}'>#{(metadata.text && metadata.text != '' ? metadata.text : (embeddedObject["filename"] || embeddedObject["title"] || embeddedObject["uid"]))}</a>";
30
+ end
31
+ renderString
32
+ end
33
+
34
+ def render_mark(mark_type, text)
35
+ renderString = text
36
+ case mark_type
37
+ when 'bold'
38
+ renderString = "<strong>#{text}</strong>"
39
+ when 'italic'
40
+ renderString = "<em>#{text}</em>"
41
+ when 'underline'
42
+ renderString = "<u>#{text}</u>"
43
+ when 'strikethrough'
44
+ renderString = "<strike>#{text}</strike>"
45
+ when 'inlineCode'
46
+ renderString = "<span>#{text}</span>"
47
+ when 'subscript'
48
+ renderString = "<sub>#{text}</sub>"
49
+ when 'superscript'
50
+ renderString = "<sup>#{text}</sup>"
51
+ when 'break'
52
+ renderString = "<br />"
53
+ end
54
+ renderString
55
+ end
56
+
57
+ def render_node(node_type, node, inner_html)
58
+ renderString = ""
59
+ case node_type
60
+ when 'doc'
61
+ renderString = ""
62
+ when 'p'
63
+ renderString = "<p>#{inner_html}</p>"
64
+ when 'a'
65
+ renderString = "<a href='#{node["attrs"]["href"] || node["attrs"]["url"] || ""}'>#{inner_html}</a>"
66
+ when 'img'
67
+ renderString = "<img src='#{node["attrs"]["src"] || node["attrs"]["url"] || ""}' />#{inner_html}"
68
+ when 'embed'
69
+ renderString = "<iframe src='#{node["attrs"]["src"] || node["attrs"]["url"] || ""}'></iframe>"
70
+ when 'h1'
71
+ renderString = "<h1>#{inner_html}</h1>"
72
+ when 'h2'
73
+ renderString = "<h2>#{inner_html}</h2>"
74
+ when 'h3'
75
+ renderString = "<h3>#{inner_html}</h3>"
76
+ when 'h4'
77
+ renderString = "<h4>#{inner_html}</h4>"
78
+ when 'h5'
79
+ renderString = "<h5>#{inner_html}</h5>"
80
+ when 'h6'
81
+ renderString = "<h6>#{inner_html}</h6>"
82
+ when 'ol'
83
+ renderString = "<ol>#{inner_html}</ol>"
84
+ when 'ul'
85
+ renderString = "<ul>#{inner_html}</ul>"
86
+ when 'li'
87
+ renderString = "<li>#{inner_html}</li>"
88
+ when 'hr'
89
+ renderString = "<hr />"
90
+ when 'table'
91
+ renderString = "<table>#{inner_html}</table>"
92
+ when 'thead'
93
+ renderString = "<thead>#{inner_html}</thead>"
94
+ when 'tbody'
95
+ renderString = "<tbody>#{inner_html}</tbody>"
96
+ when 'tfoot'
97
+ renderString = "<tfoot>#{inner_html}</tfoot>"
98
+ when 'tr'
99
+ renderString = "<tr>#{inner_html}</tr>"
100
+ when 'th'
101
+ renderString = "<th>#{inner_html}</th>"
102
+ when 'td'
103
+ renderString = "<td>#{inner_html}</td>"
104
+ when 'blockquote'
105
+ renderString = "<blockquote>#{inner_html}</blockquote>"
106
+ when 'code'
107
+ renderString = "<code>#{inner_html}</code>"
108
+ when 'reference'
109
+ if (node["attrs"]['type'] === 'asset')
110
+ renderString = "<img src=#{node["attrs"]['asset-link']} alt=#{node["attrs"]['asset-name']} />"
111
+ else
112
+ renderString = ""
113
+ end
114
+
115
+ when 'span'
116
+ renderString = "<span>#{inner_html}</span>"
117
+ end
118
+ renderString
119
+ end
120
+ end
121
+ end
122
+ end
@@ -1,3 +1,3 @@
1
- def appendFrame(string)
2
- "<documentfragmentcontainer>#{string}</documentfragmentcontainer>"
1
+ def appendFrame(string)
2
+ "<documentfragmentcontainer>#{string}</documentfragmentcontainer>"
3
3
  end
@@ -1,163 +1,171 @@
1
- require_relative './model/options.rb'
2
- require_relative './model/metadata.rb'
3
- require_relative './support/helper.rb'
4
- require 'nokogiri'
5
-
6
- module ContentstackUtils
7
- def self.render_content(content, options)
8
- if (content.instance_of? Array)
9
- result = []
10
- content.each do |n|
11
- result.push(render_string(n, options))
12
- end
13
- result
14
- elsif content.instance_of? String
15
- render_string(content, options)
16
- end
17
- end
18
-
19
- def self.json_to_html(content, options)
20
- reference = -> (metadata){
21
- result = ""
22
- if options.entry != nil
23
- object = findObject(metadata, options.entry)
24
- if object!= nil && object.length() > 0
25
- result = options.render_option(object[0], metadata)
26
- end
27
- end
28
- result
29
- }
30
- if (content.instance_of? Array)
31
- result = []
32
- content.each do |n|
33
- result.push(json_doc_to_html(n, options, reference) )
34
- end
35
- result
36
- elsif content.instance_of? Hash
37
- json_doc_to_html(content, options, reference)
38
- end
39
- end
40
-
41
- def self.json_doc_to_html(node, options, callback)
42
- result = ""
43
- if node["children"] && node["children"].length() > 0
44
- result = node_children_to_html(node["children"], options, callback)
45
- end
46
- result
47
- end
48
-
49
- private_class_method def self.node_children_to_html(nodes, options, callback)
50
- nodes.map {|node| node_to_html(node, options, callback)}.join("")
51
- end
52
-
53
- private_class_method def self.node_to_html(node, options, callback)
54
- html_result = ""
55
- if node["type"] == nil && node["text"]
56
- html_result = text_to_htms(node, options)
57
- elsif node["type"]
58
- if node["type"] == "reference"
59
- metadata = Model::Metadata.new(node)
60
- html_result = callback.call(metadata)
61
- else
62
- inner_html = json_doc_to_html(node, options, callback)
63
- html_result = options.render_node(node["type"], node, inner_html)
64
- end
65
- end
66
- html_result
67
- end
68
-
69
- private_class_method def self.text_to_htms(node, options)
70
- text = node["text"]
71
- if node["superscript"]
72
- text = options.render_mark("superscript", text)
73
- end
74
- if node["subscript"]
75
- text = options.render_mark("subscript", text)
76
- end
77
- if node["inlineCode"]
78
- text = options.render_mark("inlineCode", text)
79
- end
80
- if node["strikethrough"]
81
- text = options.render_mark("strikethrough", text)
82
- end
83
- if node["underline"]
84
- text = options.render_mark("underline", text)
85
- end
86
- if node["italic"]
87
- text = options.render_mark("italic", text)
88
- end
89
- if node["bold"]
90
- text = options.render_mark("bold", text)
91
- end
92
- text
93
- end
94
-
95
- private_class_method def self.render_string(string, options)
96
- xml_doc = Nokogiri::HTML(appendFrame(string))
97
- result = xml_doc.xpath('//documentfragmentcontainer').inner_html
98
- findEmbeddedObject(xml_doc).each do |metadata|
99
- object = findObject(metadata, options.entry)
100
- replaceString = ''
101
- if object!= nil && object.length() > 0
102
- replaceString = options.render_option(object[0], metadata)
103
- end
104
- result = result.sub(metadata.element.to_html, replaceString)
105
- end
106
- result
107
- end
108
-
109
- private_class_method def self.findEmbeddedObject(doc)
110
- metadataArray = []
111
- doc.xpath('//*[contains(@class, "embedded-asset") or contains(@class, "embedded-entry")]').each do |n|
112
- metadataArray.push(Model::Metadata.new(n))
113
- end
114
- metadataArray
115
- end
116
-
117
- private_class_method def self.findObject(metadata, entry)
118
- if entry.has_key? '_embedded_items'
119
- embedItems = entry['_embedded_items']
120
- keys = embedItems.keys
121
- keys.each do |key|
122
- object = embedItems[key].select { |embedObject| embedObject['uid'] == metadata.item_uid }
123
- if object != nil && object.length() > 0
124
- return object
125
- end
126
- end
127
- end
128
- return nil
129
- end
130
-
131
- module GQL
132
- include ContentstackUtils
133
- def self.json_to_html(content, options)
134
- embeddedItems = []
135
- if content.has_key? 'embedded_itemsConnection'
136
- embeddedItems = content['embedded_itemsConnection']['edges'] || []
137
- end
138
- reference = -> (metadata){
139
- result = ""
140
- if embeddedItems != nil
141
- object = embeddedItems.select { |embedObject| embedObject['node']["system"]["uid"] == metadata.item_uid }
142
- if object != nil && object.length() > 0
143
- result = options.render_option(object[0]["node"], metadata)
144
- end
145
- end
146
- result
147
- }
148
-
149
- if content.has_key? 'json'
150
- json = content['json']
151
- if (json.instance_of? Array)
152
- result = []
153
- json.each do |n|
154
- result.push(ContentstackUtils.json_doc_to_html(n, options, reference))
155
- end
156
- result
157
- elsif json.instance_of? Hash
158
- ContentstackUtils.json_doc_to_html(json, options, reference)
159
- end
160
- end
161
- end
162
- end
163
- end
1
+ require_relative './model/options.rb'
2
+ require_relative './model/metadata.rb'
3
+ require_relative './support/helper.rb'
4
+ require 'nokogiri'
5
+
6
+ module ContentstackUtils
7
+ def self.render_content(content, options)
8
+ if (content.instance_of? Array)
9
+ result = []
10
+ content.each do |n|
11
+ result.push(render_string(n, options))
12
+ end
13
+ result
14
+ elsif content.instance_of? String
15
+ render_string(content, options)
16
+ end
17
+ end
18
+
19
+ def self.json_to_html(content, options)
20
+ reference = -> (metadata){
21
+ result = ""
22
+ if options.entry != nil
23
+ object = findObject(metadata, options.entry)
24
+ if object!= nil && object.length() > 0
25
+ result = options.render_option(object[0], metadata)
26
+ else
27
+ content.each do |node|
28
+ inner_html = json_doc_to_html(node, options, reference)
29
+ result = options.render_node(node["type"], node, inner_html)
30
+ end
31
+ end
32
+ end
33
+ result
34
+ }
35
+ if (content.instance_of? Array)
36
+ result = []
37
+ content.each do |n|
38
+ result.push(json_doc_to_html(n, options, reference) )
39
+ end
40
+ result
41
+ elsif content.instance_of? Hash
42
+ json_doc_to_html(content, options, reference)
43
+ end
44
+ end
45
+
46
+ def self.json_doc_to_html(node, options, callback)
47
+ result = ""
48
+ if node["children"] && node["children"].length() > 0
49
+ result = node_children_to_html(node["children"], options, callback)
50
+ end
51
+ result
52
+ end
53
+
54
+ private_class_method def self.node_children_to_html(nodes, options, callback)
55
+ nodes.map {|node| node_to_html(node, options, callback)}.join("")
56
+ end
57
+
58
+ private_class_method def self.node_to_html(node, options, callback)
59
+ html_result = ""
60
+ if node["type"] == nil && node["text"]
61
+ html_result = text_to_html(node, options)
62
+ elsif node["type"]
63
+ if node["type"] == "reference"
64
+ metadata = Model::Metadata.new(node)
65
+ html_result = callback.call(metadata)
66
+ else
67
+ inner_html = json_doc_to_html(node, options, callback)
68
+ html_result = options.render_node(node["type"], node, inner_html)
69
+ end
70
+ end
71
+ html_result
72
+ end
73
+
74
+ private_class_method def self.text_to_html(node, options)
75
+ text = node["text"]
76
+ if node["superscript"]
77
+ text = options.render_mark("superscript", text)
78
+ end
79
+ if node["subscript"]
80
+ text = options.render_mark("subscript", text)
81
+ end
82
+ if node["inlineCode"]
83
+ text = options.render_mark("inlineCode", text)
84
+ end
85
+ if node["strikethrough"]
86
+ text = options.render_mark("strikethrough", text)
87
+ end
88
+ if node["underline"]
89
+ text = options.render_mark("underline", text)
90
+ end
91
+ if node["italic"]
92
+ text = options.render_mark("italic", text)
93
+ end
94
+ if node["bold"]
95
+ text = options.render_mark("bold", text)
96
+ end
97
+ if node["break"]
98
+ text = options.render_mark("break", text)
99
+ end
100
+ text
101
+ end
102
+
103
+ private_class_method def self.render_string(string, options)
104
+ xml_doc = Nokogiri::HTML(appendFrame(string))
105
+ result = xml_doc.xpath('//documentfragmentcontainer').inner_html
106
+ findEmbeddedObject(xml_doc).each do |metadata|
107
+ object = findObject(metadata, options.entry)
108
+ replaceString = ''
109
+ if object!= nil && object.length() > 0
110
+ replaceString = options.render_option(object[0], metadata)
111
+ end
112
+ result = result.sub(metadata.element.to_html, replaceString)
113
+ end
114
+ result
115
+ end
116
+
117
+ private_class_method def self.findEmbeddedObject(doc)
118
+ metadataArray = []
119
+ doc.xpath('//*[contains(@class, "embedded-asset") or contains(@class, "embedded-entry")]').each do |n|
120
+ metadataArray.push(Model::Metadata.new(n))
121
+ end
122
+ metadataArray
123
+ end
124
+
125
+ private_class_method def self.findObject(metadata, entry)
126
+ if entry.has_key? '_embedded_items'
127
+ embedItems = entry['_embedded_items']
128
+ keys = embedItems.keys
129
+ keys.each do |key|
130
+ object = embedItems[key].select { |embedObject| embedObject['uid'] == metadata.item_uid }
131
+ if object != nil && object.length() > 0
132
+ return object
133
+ end
134
+ end
135
+ end
136
+ return nil
137
+ end
138
+
139
+ module GQL
140
+ include ContentstackUtils
141
+ def self.json_to_html(content, options)
142
+ embeddedItems = []
143
+ if content.has_key? 'embedded_itemsConnection'
144
+ embeddedItems = content['embedded_itemsConnection']['edges'] || []
145
+ end
146
+ reference = -> (metadata){
147
+ result = ""
148
+ if embeddedItems != nil
149
+ object = embeddedItems.select { |embedObject| embedObject['node']["system"]["uid"] == metadata.item_uid }
150
+ if object != nil && object.length() > 0
151
+ result = options.render_option(object[0]["node"], metadata)
152
+ end
153
+ end
154
+ result
155
+ }
156
+
157
+ if content.has_key? 'json'
158
+ json = content['json']
159
+ if (json.instance_of? Array)
160
+ result = []
161
+ json.each do |n|
162
+ result.push(ContentstackUtils.json_doc_to_html(n, options, reference))
163
+ end
164
+ result
165
+ elsif json.instance_of? Hash
166
+ ContentstackUtils.json_doc_to_html(json, options, reference)
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
@@ -1,3 +1,3 @@
1
- module ContentstackUtils
2
- VERSION = "1.1.3.2"
1
+ module ContentstackUtils
2
+ VERSION = "1.2.0"
3
3
  end
@@ -1,4 +1,4 @@
1
- $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
2
-
3
- require 'contentstack_utils/version'
1
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
2
+
3
+ require 'contentstack_utils/version'
4
4
  require 'contentstack_utils/utils'