storyblok-richtext-renderer 0.0.5 → 0.0.6

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: 96eba1d749133206e8768a6c9528c4635f2868e2f6d461a863f3c98006ea2d64
4
- data.tar.gz: fbd427b3f00e8298614f4671f6c5397189bfbc5728cc23e8bb4aa8e7c82a36dc
3
+ metadata.gz: 1bd667e62ab735283652c282968f376195914598e6ec6eb55a839a6a80f836bf
4
+ data.tar.gz: 3bed9652f7f9eeedca3eedeaec2113286bf34e54e89bdbe142193be46fb3c950
5
5
  SHA512:
6
- metadata.gz: 5ffe34e0ff0d9ac6b86dd029b3b2881b343f4a5db9be0829ad3e1fb68fd570cd511c7a1f98ce71d46fa771129c012fb4ac8bd605ee18cd134017e41adbc4736c
7
- data.tar.gz: 68cabb69cfa002d3e22b079da76c31bfe4db12b283edd521cb777c78c04875a56cce35bcc2c079ffc96b8a50b50bcade084116e350fad19d6a09b62db74a4b45
6
+ metadata.gz: ccd700dde808fff8168c2454aec3567e8163b33cb2ec97ad7f625aaca671fb9e234d45f3fdc02423949f6de031744e173c9b31417f2d9bc5ace599f9ddebb62f
7
+ data.tar.gz: 4a3cdb496f897df411159e1108ad1a957d52d1201efec70d597e375a7cfa899483667c38be8067ffb1dce44d2994ebfdef9008bc2fb1988c42d7b3a3f5e43748
data/README.md CHANGED
@@ -19,6 +19,12 @@ renderer.render({'type' => 'doc', 'content' => [{'type' => 'paragraph', 'content
19
19
  # -> <p>Good</p>
20
20
  ```
21
21
 
22
+ ### Run all tests
23
+
24
+ ```bash
25
+ rspec spec/richtext_spec.rb
26
+ ```
27
+
22
28
  ### License
23
29
 
24
30
  This project is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)
@@ -3,7 +3,7 @@ module Storyblok::Richtext
3
3
  class Italic < Mark
4
4
 
5
5
  def matching
6
- @node['type'] === 'italic'
6
+ ['italic', 'i', 'em'].include?(@node['type'])
7
7
  end
8
8
 
9
9
  def tag
@@ -7,9 +7,15 @@ module Storyblok::Richtext
7
7
  end
8
8
 
9
9
  def tag
10
+ attrs = @node['attrs']
11
+
12
+ if attrs['anchor'].is_a?(String) and !attrs['anchor'].empty?
13
+ attrs['href'] = "#{attrs['href']}##{attrs['anchor']}"
14
+ end
15
+
10
16
  [{
11
17
  tag: "a",
12
- attrs: @node['attrs'].slice('href', 'target')
18
+ attrs: attrs.slice('href', 'target')
13
19
  }]
14
20
  end
15
21
  end
@@ -1,6 +1,6 @@
1
1
  module Storyblok
2
2
  module Richtext
3
3
  # Gem Version
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.6'
5
5
  end
6
6
  end
@@ -17,12 +17,167 @@ describe 'richtext' do
17
17
  'class' => 'red'
18
18
  }
19
19
  }
20
+ ],
21
+ },
22
+ {
23
+ 'type' => 'paragraph',
24
+ 'content' => [
25
+ {
26
+ 'type' => 'text',
27
+ 'marks' => [
28
+ {
29
+ 'type' => 'i'
30
+ }
31
+ ],
32
+ 'text' => 'Italic'
33
+ }
34
+ ]
35
+ },
36
+ {
37
+ 'type' => 'paragraph',
38
+ 'content' => [
39
+ {
40
+ 'type' => 'text',
41
+ 'marks' => [
42
+ {
43
+ 'type' => 'em'
44
+ }
45
+ ],
46
+ 'text' => 'Italic too'
47
+ }
48
+ ]
49
+ }
50
+ ]
51
+ }
52
+
53
+ renderer = Storyblok::Richtext::HtmlRenderer.new
54
+ expect(renderer.render(doc)).to eq('<span class="red">red text</span><p><i>Italic</i></p><p><i>Italic too</i></p>')
55
+ end
56
+ end
57
+
58
+ describe 'richtext' do
59
+ it 'horizontal_rule to generate hr tag' do
60
+ doc = {
61
+ 'type' => 'doc',
62
+ 'content' => [
63
+ {
64
+ 'type' => 'horizontal_rule'
65
+ }
66
+ ]
67
+ }
68
+
69
+ renderer = Storyblok::Richtext::HtmlRenderer.new
70
+ expect(renderer.render(doc)).to eq('<hr />')
71
+ end
72
+ end
73
+
74
+ describe 'richtext' do
75
+ it 'hard_break to generate br tag' do
76
+ doc = {
77
+ 'type' => 'doc',
78
+ 'content' => [
79
+ {
80
+ 'type' => 'hard_break'
81
+ }
82
+ ]
83
+ }
84
+
85
+ renderer = Storyblok::Richtext::HtmlRenderer.new
86
+ expect(renderer.render(doc)).to eq('<br />')
87
+ end
88
+ end
89
+
90
+ describe 'richtext' do
91
+ it 'image to generate img tag' do
92
+ doc = {
93
+ 'type' => 'doc',
94
+ 'content' => [
95
+ {
96
+ 'type' => 'image',
97
+ 'attrs' => {
98
+ 'src' => 'https://asset'
99
+ }
100
+ }
101
+ ]
102
+ }
103
+
104
+ renderer = Storyblok::Richtext::HtmlRenderer.new
105
+ expect(renderer.render(doc)).to eq('<img src="https://asset" />')
106
+ end
107
+ end
108
+
109
+ describe 'richtext' do
110
+ it 'link to generate a tag' do
111
+ doc = {
112
+ 'type' => 'doc',
113
+ 'content' => [
114
+ {
115
+ 'text' => 'link text',
116
+ 'type' => 'text',
117
+ 'marks' => [
118
+ {
119
+ 'type' => 'link',
120
+ 'attrs' => {
121
+ 'href' => '/link',
122
+ 'target' => '_blank',
123
+ 'uuid' => '300aeadc-c82d-4529-9484-f3f8f09cf9f5'
124
+ }
125
+ }
20
126
  ]
21
127
  }
22
128
  ]
23
129
  }
24
130
 
25
131
  renderer = Storyblok::Richtext::HtmlRenderer.new
26
- expect(renderer.render(doc)).to eq('<span class="red">red text</span>')
132
+ expect(renderer.render(doc)).to eq('<a href="/link" target="_blank">link text</a>')
133
+ end
134
+ end
135
+
136
+ describe 'richtext' do
137
+ it 'code_block to generate a pre and code tag' do
138
+ doc = {
139
+ 'type' => 'doc',
140
+ 'content' => [
141
+ {
142
+ 'type' => 'code_block',
143
+ 'attrs' => {},
144
+ 'content' => [{
145
+ 'text' => 'code',
146
+ 'type' => 'text'
147
+ }]
148
+ }
149
+ ]
150
+ }
151
+
152
+ renderer = Storyblok::Richtext::HtmlRenderer.new
153
+ expect(renderer.render(doc)).to eq('<pre><code>code</code></pre>')
154
+ end
155
+ end
156
+
157
+ describe 'richtext' do
158
+ it 'anchor links test' do
159
+ doc = {
160
+ 'type' => 'doc',
161
+ 'content' => [
162
+ {
163
+ 'text' => 'link text',
164
+ 'type' => 'text',
165
+ 'marks' => [
166
+ {
167
+ 'type' => 'link',
168
+ 'attrs' => {
169
+ 'href' => '/link',
170
+ 'target' => '_blank',
171
+ 'uuid' => '300aeadc-c82d-4529-9484-f3f8f09cf9f5',
172
+ 'anchor' => 'anchor-text'
173
+ }
174
+ }
175
+ ]
176
+ }
177
+ ]
178
+ }
179
+
180
+ renderer = Storyblok::Richtext::HtmlRenderer.new
181
+ expect(renderer.render(doc)).to eq('<a href="/link#anchor-text" target="_blank">link text</a>')
27
182
  end
28
183
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storyblok-richtext-renderer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Storyblok (Alexander Feiglstorfer)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-02 00:00:00.000000000 Z
11
+ date: 2020-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler