storyblok-richtext-renderer 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1bd667e62ab735283652c282968f376195914598e6ec6eb55a839a6a80f836bf
4
- data.tar.gz: 3bed9652f7f9eeedca3eedeaec2113286bf34e54e89bdbe142193be46fb3c950
3
+ metadata.gz: a0434d76180ca753632cfcb0397e5891d40b0f2b02c47a55b56ae914d38ec2ab
4
+ data.tar.gz: a342fe4acbcb83b28d37487cdff0e46f44753a7f8f740c47339bd7751875e032
5
5
  SHA512:
6
- metadata.gz: ccd700dde808fff8168c2454aec3567e8163b33cb2ec97ad7f625aaca671fb9e234d45f3fdc02423949f6de031744e173c9b31417f2d9bc5ace599f9ddebb62f
7
- data.tar.gz: 4a3cdb496f897df411159e1108ad1a957d52d1201efec70d597e375a7cfa899483667c38be8067ffb1dce44d2994ebfdef9008bc2fb1988c42d7b3a3f5e43748
6
+ metadata.gz: b2779bcd262dc381c6454f5edbeb8de19f60e20ff1611d7756af07c1fef011a420f5d47b5c24f57531e6517565aedb3299fa27cbed66a67ca3f874d7515eaa12
7
+ data.tar.gz: d5949e45bc9a4b1c44bfa5bb072b406c54a3a964d1f00d7ac9b6ed17dae0dfa96a44270d81fb9b0d7e1e298a99719170b60c85fa45bb88ad6424fc6ed063aa88
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # About
2
2
 
3
- This is Storyblok's rendering service to render html from the data of the richtext field type. The renderer is also compatible with Prosemirror's json format.
3
+ This package allows you to get an HTML string from the [richtext field](https://www.storyblok.com/docs/richtext-field) of Storyblok.
4
4
 
5
5
  ## How to install
6
6
 
@@ -10,13 +10,32 @@ Add the gem to your Gemfile
10
10
  gem 'storyblok-richtext-renderer'
11
11
  ```
12
12
 
13
- ### Rendering a richtext field
13
+ ## Usage
14
+
15
+ Instantiate the `Resolver` class:
14
16
 
15
17
  ```ruby
16
- require 'storyblok/richtext'
18
+ require_relative '../lib/storyblok/richtext'
19
+
17
20
  renderer = Storyblok::Richtext::HtmlRenderer.new
18
- renderer.render({'type' => 'doc', 'content' => [{'type' => 'paragraph', 'content' => [{'text' => 'Good', 'type' => 'text'}]}]})
19
- # -> <p>Good</p>
21
+
22
+ ```
23
+
24
+ Use the function `render()` to get the html string from your richtext field.
25
+
26
+ ```ruby
27
+ # previous code...
28
+
29
+ doc = {
30
+ 'type' => 'doc',
31
+ 'content' => [
32
+ {
33
+ 'type' => 'horizontal_rule'
34
+ }
35
+ ]
36
+ }
37
+
38
+ renderer.render(doc) # renders a html string: '<hr />'
20
39
  ```
21
40
 
22
41
  ### Run all tests
@@ -0,0 +1,17 @@
1
+ module Storyblok::Richtext
2
+ module Marks
3
+ class Anchor < Mark
4
+
5
+ def matching
6
+ @node['type'] === 'anchor'
7
+ end
8
+
9
+ def tag
10
+ [{
11
+ tag: "span",
12
+ attrs: @node['attrs']
13
+ }]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ module Storyblok::Richtext
2
+ module Marks
3
+ class Highlight < Mark
4
+
5
+ def matching
6
+ @node['type'] === 'highlight'
7
+ end
8
+
9
+ def tag
10
+ attrs = {
11
+ style: "background-color:#{@node['attrs']['color']};"
12
+ }
13
+ [{
14
+ tag: "span",
15
+ attrs: attrs
16
+ }]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -11,11 +11,24 @@ module Storyblok::Richtext
11
11
 
12
12
  if attrs['anchor'].is_a?(String) and !attrs['anchor'].empty?
13
13
  attrs['href'] = "#{attrs['href']}##{attrs['anchor']}"
14
+ attrs.delete('anchor')
15
+ end
16
+
17
+ if attrs['linktype'].is_a?(String) and attrs['linktype'] == 'email'
18
+ emailContainer = attrs['href']
19
+ attrs['href'] = "mailto:#{emailContainer}"
20
+ end
21
+
22
+ if attrs['custom']
23
+ for item in attrs['custom'] do
24
+ attrs[item[0]] = item[1]
25
+ end
26
+ attrs.delete('custom')
14
27
  end
15
28
 
16
29
  [{
17
30
  tag: "a",
18
- attrs: attrs.slice('href', 'target')
31
+ attrs: attrs
19
32
  }]
20
33
  end
21
34
  end
@@ -0,0 +1,14 @@
1
+ module Storyblok::Richtext
2
+ module Marks
3
+ class Subscript < Mark
4
+
5
+ def matching
6
+ @node['type'] === 'subscript'
7
+ end
8
+
9
+ def tag
10
+ 'sub'
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Storyblok::Richtext
2
+ module Marks
3
+ class Superscript < Mark
4
+
5
+ def matching
6
+ @node['type'] === 'superscript'
7
+ end
8
+
9
+ def tag
10
+ 'sup'
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ module Storyblok::Richtext
2
+ module Marks
3
+ class TextStyle < Mark
4
+
5
+ def matching
6
+ @node['type'] === 'textStyle'
7
+ end
8
+
9
+ def tag
10
+ attrs = {
11
+ style: "background-color:#{@node['attrs']['color']};"
12
+ }
13
+ [{
14
+ tag: "span",
15
+ attrs: attrs
16
+ }]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ module Storyblok::Richtext
2
+ module Nodes
3
+ class Emoji < Node
4
+
5
+ def matching
6
+ @node['type'] === 'emoji'
7
+ end
8
+
9
+ def tag
10
+ attrs = {
11
+ 'data-type' => 'emoji',
12
+ 'data-name' => @node['attrs']['name'],
13
+ 'emoji' => @node['attrs']['emoji']
14
+ }
15
+
16
+ [{
17
+ tag: "span",
18
+ attrs: attrs
19
+ }]
20
+ end
21
+ end
22
+ end
23
+ end
@@ -11,6 +11,11 @@ module Storyblok
11
11
  require_relative "html_renderer/marks/italic"
12
12
  require_relative "html_renderer/marks/link"
13
13
  require_relative "html_renderer/marks/styled"
14
+ require_relative "html_renderer/marks/anchor"
15
+ require_relative "html_renderer/marks/highlight"
16
+ require_relative "html_renderer/marks/subscript"
17
+ require_relative "html_renderer/marks/superscript"
18
+ require_relative "html_renderer/marks/text_style"
14
19
  require_relative "html_renderer/nodes/node"
15
20
  require_relative "html_renderer/nodes/bullet_list"
16
21
  require_relative "html_renderer/nodes/code_block"
@@ -25,6 +30,7 @@ module Storyblok
25
30
  require_relative "html_renderer/nodes/horizontal_rule"
26
31
  require_relative "html_renderer/nodes/text"
27
32
  require_relative "html_renderer/nodes/blok"
33
+ require_relative "html_renderer/nodes/emoji"
28
34
 
29
35
  class HtmlRenderer
30
36
  def initialize
@@ -36,7 +42,12 @@ module Storyblok
36
42
  Storyblok::Richtext::Marks::Code,
37
43
  Storyblok::Richtext::Marks::Italic,
38
44
  Storyblok::Richtext::Marks::Link,
39
- Storyblok::Richtext::Marks::Styled
45
+ Storyblok::Richtext::Marks::Styled,
46
+ Storyblok::Richtext::Marks::Anchor,
47
+ Storyblok::Richtext::Marks::Highlight,
48
+ Storyblok::Richtext::Marks::Subscript,
49
+ Storyblok::Richtext::Marks::Superscript,
50
+ Storyblok::Richtext::Marks::TextStyle
40
51
  ]
41
52
  @nodes = [
42
53
  Storyblok::Richtext::Nodes::HorizontalRule,
@@ -50,7 +61,8 @@ module Storyblok
50
61
  Storyblok::Richtext::Nodes::OrderedList,
51
62
  Storyblok::Richtext::Nodes::Paragraph,
52
63
  Storyblok::Richtext::Nodes::Text,
53
- Storyblok::Richtext::Nodes::Blok
64
+ Storyblok::Richtext::Nodes::Blok,
65
+ Storyblok::Richtext::Nodes::Emoji
54
66
  ]
55
67
  end
56
68
 
@@ -99,6 +111,8 @@ module Storyblok
99
111
  html.push(render_tag(node.single_tag))
100
112
  elsif node and node.html
101
113
  html.push(node.html)
114
+ elsif item['type'] == 'emoji'
115
+ html.push(render_emoji(item))
102
116
  end
103
117
 
104
118
  html.push(render_closing_tag(node.tag)) if node and node.tag
@@ -159,6 +173,24 @@ module Storyblok
159
173
  end
160
174
  found.first
161
175
  end
176
+
177
+ def render_emoji(item)
178
+ if item['attrs']['emoji']
179
+ return item['attrs']['emoji']
180
+ end
181
+
182
+ emoji_image_container = [{
183
+ tag: 'img',
184
+ attrs: {
185
+ src: item['attrs']['fallbackImage'],
186
+ draggable: 'false',
187
+ loading: 'lazy',
188
+ align: 'absmiddle',
189
+ },
190
+ }]
191
+
192
+ render_tag(emoji_image_container, ' /')
193
+ end
162
194
  end
163
195
  end
164
196
  end
@@ -1,6 +1,6 @@
1
1
  module Storyblok
2
2
  module Richtext
3
3
  # Gem Version
4
- VERSION = '0.0.6'
4
+ VERSION = '0.0.7'
5
5
  end
6
6
  end
@@ -129,7 +129,7 @@ describe 'richtext' do
129
129
  }
130
130
 
131
131
  renderer = Storyblok::Richtext::HtmlRenderer.new
132
- expect(renderer.render(doc)).to eq('<a href="/link" target="_blank">link text</a>')
132
+ expect(renderer.render(doc)).to eq('<a href="/link" target="_blank" uuid="300aeadc-c82d-4529-9484-f3f8f09cf9f5">link text</a>')
133
133
  end
134
134
  end
135
135
 
@@ -178,6 +178,292 @@ describe 'richtext' do
178
178
  }
179
179
 
180
180
  renderer = Storyblok::Richtext::HtmlRenderer.new
181
- expect(renderer.render(doc)).to eq('<a href="/link#anchor-text" target="_blank">link text</a>')
181
+ expect(renderer.render(doc)).to eq('<a href="/link#anchor-text" target="_blank" uuid="300aeadc-c82d-4529-9484-f3f8f09cf9f5">link text</a>')
182
+ end
183
+ end
184
+
185
+ describe 'richtext' do
186
+ it 'link to generate a tag with an email' do
187
+ doc = {
188
+ 'type' => 'doc',
189
+ 'content' => [
190
+ {
191
+ 'text' => 'an email link',
192
+ 'type' => 'text',
193
+ 'marks' => [
194
+ {
195
+ 'type' => 'link',
196
+ 'attrs' => {
197
+ 'href' => 'email@client.com',
198
+ 'target' => '_blank',
199
+ 'uuid' => nil,
200
+ 'linktype' => 'email'
201
+ }
202
+ }
203
+ ]
204
+ }
205
+ ]
206
+ }
207
+
208
+ renderer = Storyblok::Richtext::HtmlRenderer.new
209
+ expect(renderer.render(doc)).to eq('<a href="mailto:email@client.com" target="_blank" linktype="email">an email link</a>')
210
+ end
211
+ end
212
+
213
+ describe 'richtext' do
214
+ it 'should render a custom attribute in a link tag' do
215
+ doc = {
216
+ 'type' => 'paragraph',
217
+ 'content' => [
218
+ {
219
+ 'text' => 'A nice link with custom attr',
220
+ 'type' => 'text',
221
+ 'marks' => [
222
+ {
223
+ 'type' => 'link',
224
+ 'attrs' => {
225
+ 'href' => 'www.storyblok.com',
226
+ 'uuid' => '300aeadc-c82d-4529-9484-f3f8f09cf9f5',
227
+ # 'anchor' => nil,
228
+ 'custom' => {
229
+ 'rel' => 'nofollow',
230
+ 'title' => 'nice test',
231
+ },
232
+ 'target' => '_blank',
233
+ 'linktype' => 'url'
234
+ }
235
+ }
236
+ ]
237
+ }
238
+ ]
239
+ }
240
+
241
+ renderer = Storyblok::Richtext::HtmlRenderer.new
242
+ expect(renderer.render(doc)).to eq('<a href="www.storyblok.com" uuid="300aeadc-c82d-4529-9484-f3f8f09cf9f5" target="_blank" linktype="url" rel="nofollow" title="nice test">A nice link with custom attr</a>')
243
+ end
244
+ end
245
+
246
+ describe 'richtext' do
247
+ it 'should render a subscript' do
248
+ doc = {
249
+ 'type' => 'paragraph',
250
+ 'content' => [
251
+ {
252
+ 'text' => 'A Subscript text',
253
+ 'type' => 'text',
254
+ 'marks' => [
255
+ {
256
+ 'type' => 'subscript'
257
+ }
258
+ ]
259
+ }
260
+ ]
261
+ }
262
+
263
+ renderer = Storyblok::Richtext::HtmlRenderer.new
264
+ expect(renderer.render(doc)).to eq('<sub>A Subscript text</sub>')
265
+ end
266
+ end
267
+
268
+ describe 'richtext' do
269
+ it 'should render a superscript' do
270
+ doc = {
271
+ 'type' => 'paragraph',
272
+ 'content' => [
273
+ {
274
+ 'text' => 'A Superscript text',
275
+ 'type' => 'text',
276
+ 'marks' => [
277
+ {
278
+ 'type' => 'superscript'
279
+ }
280
+ ]
281
+ }
282
+ ]
283
+ }
284
+
285
+ renderer = Storyblok::Richtext::HtmlRenderer.new
286
+ expect(renderer.render(doc)).to eq('<sup>A Superscript text</sup>')
287
+ end
288
+ end
289
+
290
+ describe 'richtext' do
291
+ it 'should render a anchor in the text' do
292
+ doc = {
293
+ "type" => "doc",
294
+ "content" => [
295
+ {
296
+ "type" => "paragraph",
297
+ "content" => [
298
+ {
299
+ "text" => "Paragraph with anchor in the midle",
300
+ "type" => "text",
301
+ "marks" => [
302
+ {
303
+ "type" => "anchor",
304
+ "attrs" => {
305
+ "id" => "test"
306
+ }
307
+ }
308
+ ]
309
+ }
310
+ ]
311
+ }
312
+ ]
313
+ }
314
+
315
+ renderer = Storyblok::Richtext::HtmlRenderer.new
316
+ expect(renderer.render(doc)).to eq('<p><span id="test">Paragraph with anchor in the midle</span></p>')
317
+ end
318
+ end
319
+
320
+ describe 'richtext' do
321
+ it 'should render a h1 title with a anchor in the middle of the text' do
322
+ doc = {
323
+ 'type' => 'doc',
324
+ 'content' => [
325
+ {
326
+ 'type' => 'heading',
327
+ 'attrs' => {
328
+ 'level' => '1'
329
+ },
330
+ 'content' => [
331
+ {
332
+ 'text' => 'Title with ',
333
+ 'type' => 'text'
334
+ },
335
+ {
336
+ 'text' => 'Anchor',
337
+ 'type' => 'text',
338
+ 'marks' => [
339
+ {
340
+ 'type' => 'anchor',
341
+ 'attrs' => {
342
+ 'id' => 'test1'
343
+ }
344
+ }
345
+ ]
346
+ },
347
+ {
348
+ 'text' => ' in the midle',
349
+ 'type' => 'text'
350
+ }
351
+ ]
352
+ }
353
+ ]
354
+ }
355
+
356
+ renderer = Storyblok::Richtext::HtmlRenderer.new
357
+ expect(renderer.render(doc)).to eq('<h1>Title with <span id="test1">Anchor</span> in the midle</h1>')
358
+ end
359
+ end
360
+
361
+ describe 'richtext' do
362
+ it 'should render a text with highlight color' do
363
+ doc = {
364
+ 'type' => 'doc',
365
+ 'content' => [
366
+ {
367
+ 'text' => 'Highlighted text',
368
+ 'type' => 'text',
369
+ 'marks' => [
370
+ {
371
+ 'type' => 'highlight',
372
+ 'attrs' => {
373
+ 'color' => '#E72929',
374
+ },
375
+ },
376
+ ],
377
+ },
378
+ ],
379
+ }
380
+
381
+ renderer = Storyblok::Richtext::HtmlRenderer.new
382
+ expect(renderer.render(doc)).to eq('<span style="background-color:#E72929;">Highlighted text</span>')
383
+ end
384
+ end
385
+
386
+ describe 'richtext' do
387
+ it 'should render a text with text color' do
388
+ doc = {
389
+ 'type' => 'doc',
390
+ 'content' => [
391
+ {
392
+ 'text' => 'Colored text',
393
+ 'type' => 'text',
394
+ 'marks' => [
395
+ {
396
+ 'type' => 'textStyle',
397
+ 'attrs' => {
398
+ 'color' => '#E72929',
399
+ },
400
+ },
401
+ ],
402
+ },
403
+ ],
404
+ }
405
+
406
+ renderer = Storyblok::Richtext::HtmlRenderer.new
407
+ expect(renderer.render(doc)).to eq('<span style="background-color:#E72929;">Colored text</span>')
408
+ end
409
+ end
410
+
411
+ describe 'richtext' do
412
+ it 'should render a text with a emoji' do
413
+ doc = {
414
+ 'type' => 'doc',
415
+ 'content' => [
416
+ {
417
+ 'type' => 'paragraph',
418
+ 'content' => [
419
+ {
420
+ 'text' => 'Text with a emoji in the end ',
421
+ 'type' => 'text'
422
+ },
423
+ {
424
+ 'type' => 'emoji',
425
+ 'attrs' => {
426
+ 'name' => 'smile',
427
+ 'emoji' => '😄',
428
+ 'fallbackImage' => 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/1f604.png'
429
+ }
430
+ },
431
+ ]
432
+ }
433
+ ]
434
+ }
435
+
436
+ renderer = Storyblok::Richtext::HtmlRenderer.new
437
+ expect(renderer.render(doc)).to eq('<p>Text with a emoji in the end <span data-type="emoji" data-name="smile" emoji="😄">😄</span></p>')
438
+ end
439
+ end
440
+
441
+ describe 'richtext' do
442
+ it 'should render a emoji with falbackimage' do
443
+ doc = {
444
+ 'type' => 'doc',
445
+ 'content' => [
446
+ {
447
+ 'type' => 'paragraph',
448
+ 'content' => [
449
+ {
450
+ 'text' => 'Text with a emoji in the end ',
451
+ 'type' => 'text'
452
+ },
453
+ {
454
+ 'type' => 'emoji',
455
+ 'attrs' => {
456
+ 'name' => 'trollface',
457
+ 'emoji' => nil,
458
+ 'fallbackImage' => 'https://github.githubassets.com/images/icons/emoji/trollface.png'
459
+ }
460
+ },
461
+ ]
462
+ }
463
+ ]
464
+ }
465
+
466
+ renderer = Storyblok::Richtext::HtmlRenderer.new
467
+ expect(renderer.render(doc)).to eq('<p>Text with a emoji in the end <span data-type="emoji" data-name="trollface"><img src="https://github.githubassets.com/images/icons/emoji/trollface.png" draggable="false" loading="lazy" align="absmiddle" /></span></p>')
182
468
  end
183
469
  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.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Storyblok (Alexander Feiglstorfer)
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-14 00:00:00.000000000 Z
11
+ date: 2023-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -45,32 +45,31 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - ".DS_Store"
49
48
  - ".editorconfig"
50
49
  - ".gitignore"
51
- - ".ruby-version"
52
50
  - Gemfile
53
- - Gemfile.lock
54
51
  - README.md
55
- - lib/.DS_Store
56
- - lib/storyblok/.DS_Store
57
52
  - lib/storyblok/richtext.rb
58
53
  - lib/storyblok/richtext/html_renderer.rb
59
- - lib/storyblok/richtext/html_renderer/.DS_Store
54
+ - lib/storyblok/richtext/html_renderer/marks/anchor.rb
60
55
  - lib/storyblok/richtext/html_renderer/marks/bold.rb
61
56
  - lib/storyblok/richtext/html_renderer/marks/code.rb
57
+ - lib/storyblok/richtext/html_renderer/marks/highlight.rb
62
58
  - lib/storyblok/richtext/html_renderer/marks/italic.rb
63
59
  - lib/storyblok/richtext/html_renderer/marks/link.rb
64
60
  - lib/storyblok/richtext/html_renderer/marks/mark.rb
65
61
  - lib/storyblok/richtext/html_renderer/marks/strike.rb
66
62
  - lib/storyblok/richtext/html_renderer/marks/strong.rb
67
63
  - lib/storyblok/richtext/html_renderer/marks/styled.rb
64
+ - lib/storyblok/richtext/html_renderer/marks/subscript.rb
65
+ - lib/storyblok/richtext/html_renderer/marks/superscript.rb
66
+ - lib/storyblok/richtext/html_renderer/marks/text_style.rb
68
67
  - lib/storyblok/richtext/html_renderer/marks/underline.rb
69
- - lib/storyblok/richtext/html_renderer/nodes/.DS_Store
70
68
  - lib/storyblok/richtext/html_renderer/nodes/blockquote.rb
71
69
  - lib/storyblok/richtext/html_renderer/nodes/blok.rb
72
70
  - lib/storyblok/richtext/html_renderer/nodes/bullet_list.rb
73
71
  - lib/storyblok/richtext/html_renderer/nodes/code_block.rb
72
+ - lib/storyblok/richtext/html_renderer/nodes/emoji.rb
74
73
  - lib/storyblok/richtext/html_renderer/nodes/hard_break.rb
75
74
  - lib/storyblok/richtext/html_renderer/nodes/heading.rb
76
75
  - lib/storyblok/richtext/html_renderer/nodes/horizontal_rule.rb
@@ -88,7 +87,7 @@ homepage: https://github.com/storyblok/storyblok-ruby-richtext-renderer
88
87
  licenses:
89
88
  - MIT
90
89
  metadata: {}
91
- post_install_message:
90
+ post_install_message:
92
91
  rdoc_options: []
93
92
  require_paths:
94
93
  - lib
@@ -103,9 +102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
102
  - !ruby/object:Gem::Version
104
103
  version: '0'
105
104
  requirements: []
106
- rubyforge_project:
107
- rubygems_version: 2.7.6
108
- signing_key:
105
+ rubygems_version: 3.1.4
106
+ signing_key:
109
107
  specification_version: 4
110
108
  summary: Storyblok richtext renderer
111
109
  test_files:
data/.DS_Store DELETED
Binary file
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.5.1
data/Gemfile.lock DELETED
@@ -1,33 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- storyblok-richtext-renderer (0.0.4)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- diff-lcs (1.3)
10
- rspec (3.8.0)
11
- rspec-core (~> 3.8.0)
12
- rspec-expectations (~> 3.8.0)
13
- rspec-mocks (~> 3.8.0)
14
- rspec-core (3.8.2)
15
- rspec-support (~> 3.8.0)
16
- rspec-expectations (3.8.5)
17
- diff-lcs (>= 1.2.0, < 2.0)
18
- rspec-support (~> 3.8.0)
19
- rspec-mocks (3.8.2)
20
- diff-lcs (>= 1.2.0, < 2.0)
21
- rspec-support (~> 3.8.0)
22
- rspec-support (3.8.3)
23
-
24
- PLATFORMS
25
- ruby
26
-
27
- DEPENDENCIES
28
- bundler (~> 2)
29
- rspec (~> 3)
30
- storyblok-richtext-renderer!
31
-
32
- BUNDLED WITH
33
- 2.0.2
data/lib/.DS_Store DELETED
Binary file
Binary file