Skip to content

Commit aea592d

Browse files
Added support for the <br> tag and support for nested assets in the t… (#14) (#15)
* Added support for the <br> tag and support for nested assets in the the image * Added version and change log * Added Testcases * Resolved dependency gem issues in latest ruby versions * Added test case for break tag * Changed tag to full name * Changed method name from 'text_to_htms' to 'text_to_html' * Changed version from 1.1.4 to 1.2.0
1 parent 7d67ed7 commit aea592d

File tree

8 files changed

+42
-21
lines changed

8 files changed

+42
-21
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Changelog
22

3+
## [1.2.0](https://github.com/contentstack/contentstack-utils-ruby/tree/v1.2.0) (2023-06-20)
4+
- Support for nested assets in the the image and br tag
35
## [1.1.3](https://github.com/contentstack/contentstack-utils-ruby/tree/v1.1.3) (2023-03-16)
46
- Dependency gem max version issue resolved. (Activesupport gem)
57

Gemfile.lock

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,35 @@
11
PATH
22
remote: .
33
specs:
4-
contentstack_utils (1.1.3)
4+
contentstack_utils (1.2.0)
55
activesupport (>= 3.2)
66
nokogiri (~> 1.11)
77

88
GEM
99
remote: https://rubygems.org/
1010
specs:
11-
activesupport (6.1.7.3)
11+
activesupport (7.0.5)
1212
concurrent-ruby (~> 1.0, >= 1.0.2)
1313
i18n (>= 1.6, < 2)
1414
minitest (>= 5.1)
1515
tzinfo (~> 2.0)
16-
zeitwerk (~> 2.3)
17-
addressable (2.8.1)
16+
addressable (2.8.4)
1817
public_suffix (>= 2.0.2, < 6.0)
1918
concurrent-ruby (1.2.2)
2019
crack (0.4.5)
2120
rexml
2221
diff-lcs (1.5.0)
2322
docile (1.4.0)
2423
hashdiff (1.0.1)
25-
i18n (1.12.0)
24+
i18n (1.14.1)
2625
concurrent-ruby (~> 1.0)
27-
mini_portile2 (2.8.1)
28-
minitest (5.18.0)
29-
nokogiri (1.13.10)
30-
mini_portile2 (~> 2.8.0)
31-
racc (~> 1.4)
32-
nokogiri (1.13.10-x64-mingw32)
26+
mini_portile2 (2.8.2)
27+
minitest (5.18.1)
28+
nokogiri (1.15.2)
29+
mini_portile2 (~> 2.8.2)
3330
racc (~> 1.4)
3431
public_suffix (5.0.1)
35-
racc (1.6.2)
32+
racc (1.7.1)
3633
rake (13.0.6)
3734
rexml (3.2.5)
3835
rspec (3.10.0)
@@ -60,10 +57,7 @@ GEM
6057
addressable (>= 2.3.6)
6158
crack (>= 0.3.2)
6259
hashdiff (>= 0.4.0, < 2.0.0)
63-
webrick (1.7.0)
64-
yard (0.9.28)
65-
webrick (~> 1.7.0)
66-
zeitwerk (2.6.7)
60+
yard (0.9.34)
6761

6862
PLATFORMS
6963
ruby

contentstack_utils.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
2121
s.test_files = s.files.grep(%r{^spec/})
2222
s.require_paths = ["lib"]
2323

24-
s.add_dependency 'activesupport', '~> 3.2'
24+
s.add_dependency 'activesupport', '>= 3.2'
2525
s.add_dependency 'nokogiri', '~> 1.11'
2626

2727
s.add_development_dependency 'rake', '~> 13.0.3'

lib/contentstack_utils/model/options.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ def render_mark(mark_type, text)
4848
renderString = "<sub>#{text}</sub>"
4949
when 'superscript'
5050
renderString = "<sup>#{text}</sup>"
51+
when 'break'
52+
renderString = "<br />"
5153
end
5254
renderString
5355
end
@@ -104,7 +106,12 @@ def render_node(node_type, node, inner_html)
104106
when 'code'
105107
renderString = "<code>#{inner_html}</code>"
106108
when 'reference'
107-
renderString = ""
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+
108115
when 'span'
109116
renderString = "<span>#{inner_html}</span>"
110117
end

lib/contentstack_utils/utils.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ def self.json_to_html(content, options)
2323
object = findObject(metadata, options.entry)
2424
if object!= nil && object.length() > 0
2525
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
2631
end
2732
end
2833
result
@@ -53,7 +58,7 @@ def self.json_doc_to_html(node, options, callback)
5358
private_class_method def self.node_to_html(node, options, callback)
5459
html_result = ""
5560
if node["type"] == nil && node["text"]
56-
html_result = text_to_htms(node, options)
61+
html_result = text_to_html(node, options)
5762
elsif node["type"]
5863
if node["type"] == "reference"
5964
metadata = Model::Metadata.new(node)
@@ -66,7 +71,7 @@ def self.json_doc_to_html(node, options, callback)
6671
html_result
6772
end
6873

69-
private_class_method def self.text_to_htms(node, options)
74+
private_class_method def self.text_to_html(node, options)
7075
text = node["text"]
7176
if node["superscript"]
7277
text = options.render_mark("superscript", text)
@@ -89,6 +94,9 @@ def self.json_doc_to_html(node, options, callback)
8994
if node["bold"]
9095
text = options.render_mark("bold", text)
9196
end
97+
if node["break"]
98+
text = options.render_mark("break", text)
99+
end
92100
text
93101
end
94102

lib/contentstack_utils/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module ContentstackUtils
2-
VERSION = "1.1.3"
2+
VERSION = "1.2.0"
33
end

spec/lib/model/option_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ def getMetadata(itemType=nil, styleType=nil, linkText=nil)
9898
to eq "<sub>#{linkText}</sub>"
9999
expect(subject.render_mark('superscript', linkText)).
100100
to eq "<sup>#{linkText}</sup>"
101+
expect(subject.render_mark('break', linkText)).
102+
to eq "<br />"
101103
expect(subject.render_mark('', linkText)).
102104
to eq linkText
103105
end

spec/lib/utils_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,14 @@
377377
expect(result).to eq AssetReferenceHtml
378378
end
379379

380+
it 'Should return asset embedded items for assest-link' do
381+
doc = getJson(AssetReferenceJson)
382+
383+
result = ContentstackUtils.json_to_html(doc, ContentstackUtils::Model::Options.new(JSON_EMBEDDED_ITEMS_ENTRY))
384+
385+
expect(result).to eq "<img src='/v3/dummy.pdf' alt='dummy.pdf' />"
386+
end
387+
380388
it 'Should return entry block embedded items' do
381389
doc = getJson(EntryReferenceBlockJson)
382390

0 commit comments

Comments
 (0)