storyblok 2.0.5 → 2.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: e4f7ee7dc39a1457adae80294bbe0606e0ee99ea38f5e1c7608ef2f1ef13b8fb
4
- data.tar.gz: 1177742ae270a639988a06cbaca3612d2c7b298a521b7614469f17bbb716e787
3
+ metadata.gz: 0d65c76047177a312640e32e21d9126454177bb974f9808d8a82e944b032e1e0
4
+ data.tar.gz: b8daf749b9072a284153d92e38155c9b202418b684deb7bb708124dca0e168eb
5
5
  SHA512:
6
- metadata.gz: 0a373ba20c6107ee1b2b1a767bcaef8f387c1b734566710d38304bb2585e4860224eeeca6c39d9bd16f2ae2706241236e168d757fabb1d298bd601029cff66f9
7
- data.tar.gz: d6f1bbfe69648f4dd3130caa7fde6542ecfcc27021f118d65c5af3c9a1a8a61111729255c8b2a23c740881efb402b303ffdb77b69351af74c1a7b1c212da0dc3
6
+ metadata.gz: 6255f6a2507ce909b0f8836bc0a7368f981f4264d2e60d602908e4fa4019fee0dc5a57506019519d998d0085c4a4028478ef41b88a15cb710ff2ee88638aabb0
7
+ data.tar.gz: b7f6dfb8c8f070c7b5cd89880d971dadc9cbfb4550db2b48420439c88d90f440f9050b9ad5d6c23ef42fde77354689ef8688ee6f904ae860a97348f6db4cc8de
data/Gemfile CHANGED
@@ -3,3 +3,4 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'redis'
6
+ gem 'storyblok-richtext-renderer'
data/README.md CHANGED
@@ -27,7 +27,7 @@ client = Storyblok::Client.new(token: 'YOUR_TOKEN')
27
27
 
28
28
  # Optionally set a cache client
29
29
  redis = Redis.new(url: 'redis://localhost:6379')
30
- cache = Storyblok::Cache::Redis.new(redis: Redis.current)
30
+ cache = Storyblok::Cache::Redis.new(redis: redis)
31
31
  client = Storyblok::Client.new(cache: cache, token: 'YOUR_TOKEN')
32
32
 
33
33
  # Get a story
@@ -141,6 +141,39 @@ client.put("spaces/{space_id}/stories/{story_id}", {story: {name: 'new', slug: "
141
141
  client.delete("spaces/{space_id}/stories/{story_id}")
142
142
  ```
143
143
 
144
+ ## Rendering of richtext fields
145
+
146
+ This SDK comes with a rendering service for richtext fields of Storyblok to get html output.
147
+
148
+ ### Rendering a richtext field
149
+
150
+ ```ruby
151
+ client.render(data.richtext_field)
152
+ ```
153
+
154
+ ### Define a component renderer
155
+
156
+ Storyblok's richtext field also let's you insert content blocks. To render these blocks you can define a Lambda.
157
+
158
+ ```ruby
159
+ # Option 1: Define the resolver when initializing
160
+ client = Storyblok::Client.new(
161
+ component_resolver: ->(component, data) => {
162
+ case component
163
+ when 'button'
164
+ "<button>#{data['text']}</button>"
165
+ when 'your_custom_component'
166
+ "<div class="welcome">#{data['welcome_text']}</div>"
167
+ end
168
+ }
169
+ )
170
+
171
+ # Option 2: Define the resolver afterwards
172
+ client.set_component_resolver(->(component, data) {
173
+ "#{component}"
174
+ })
175
+ ```
176
+
144
177
 
145
178
  ### License
146
179
 
@@ -0,0 +1,23 @@
1
+ # bundle exec ruby examples/renderer.rb
2
+
3
+ require_relative '../lib/storyblok'
4
+
5
+ logger = Logger.new(STDOUT)
6
+
7
+ client = Storyblok::Client.new(
8
+ token: '6HMYdAjBoONyuS6GIf5PdAtt',
9
+ logger: logger,
10
+ component_resolver: ->(component, data) {
11
+ "Placeholder for #{component}: #{data['text']}"
12
+ }
13
+ )
14
+
15
+ puts client.render({'type' => 'doc', 'content' => [
16
+ {'type' => 'paragraph', 'content' => [{'text' => 'Good', 'type' => 'text'}]},
17
+ {'type' => 'blok', 'attrs' => {'body' => [{'component' => 'button', 'text' => 'Click me'}]}}
18
+ ]})
19
+
20
+ res = client.story('article/article-1')
21
+
22
+ puts res['data']['story']['content']['intro']
23
+ puts client.render(res['data']['story']['content']['intro'])
@@ -1,6 +1,7 @@
1
1
  require_relative 'request'
2
2
  require_relative 'links'
3
3
 
4
+ require 'storyblok/richtext'
4
5
  require 'rest-client'
5
6
  require 'logger'
6
7
  require 'base64'
@@ -15,8 +16,9 @@ module Storyblok
15
16
  logger: false,
16
17
  log_level: Logger::INFO,
17
18
  version: 'draft',
19
+ component_resolver: ->(component, data) { '' },
18
20
  cache_version: Time.now.to_i,
19
- cache: nil,
21
+ cache: nil
20
22
  }
21
23
 
22
24
  attr_reader :configuration, :logger
@@ -25,6 +27,7 @@ module Storyblok
25
27
  # @option given_configuration [String] :token Required if oauth_token is not set
26
28
  # @option given_configuration [String] :oauth_token Required if token is not set
27
29
  # @option given_configuration [String] :api_url
30
+ # @option given_configuration [Proc] :component_resolver
28
31
  # @option given_configuration [Number] :api_version
29
32
  # @option given_configuration [false, ::Logger] :logger
30
33
  # @option given_configuration [::Logger::DEBUG, ::Logger::INFO, ::Logger::WARN, ::Logger::ERROR] :log_level
@@ -38,6 +41,8 @@ module Storyblok
38
41
  })
39
42
  end
40
43
 
44
+ @renderer = Richtext::HtmlRenderer.new
45
+ @renderer.set_component_resolver(@configuration[:component_resolver])
41
46
  setup_logger
42
47
  end
43
48
 
@@ -189,6 +194,24 @@ module Storyblok
189
194
  end
190
195
  end
191
196
 
197
+ # Returns html from richtext field data
198
+ #
199
+ # @param [Hash] :data
200
+ #
201
+ # @return [String]
202
+ def render data
203
+ @renderer.render(data)
204
+ end
205
+
206
+ # Sets component resolver
207
+ #
208
+ # @param [Proc] :component_resolver
209
+ #
210
+ # @return [nil]
211
+ def set_component_resolver component_resolver
212
+ @renderer.set_component_resolver(component_resolver)
213
+ end
214
+
192
215
  private
193
216
 
194
217
  def parse_result(res)
@@ -1,4 +1,4 @@
1
1
  module Storyblok
2
2
  # Gem Version
3
- VERSION = '2.0.5'
3
+ VERSION = '2.0.6'
4
4
  end
data/storyblok.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ['lib']
17
17
 
18
18
  gem.add_dependency 'rest-client', '>= 1.8.0', '< 3'
19
+ gem.add_dependency 'storyblok-richtext-renderer', '>= 0.0.4', '< 1'
19
20
 
20
21
  gem.add_development_dependency 'bundler', '~> 1.5'
21
22
  gem.add_development_dependency 'rspec', '~> 3'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storyblok
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.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-08-02 00:00:00.000000000 Z
11
+ date: 2019-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: storyblok-richtext-renderer
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.0.4
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '1'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.0.4
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '1'
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: bundler
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -75,8 +95,11 @@ files:
75
95
  - examples/cache.rb
76
96
  - examples/example_queries.rb
77
97
  - examples/management_api.rb
98
+ - examples/renderer.rb
78
99
  - examples/tree.rb
100
+ - lib/.DS_Store
79
101
  - lib/storyblok.rb
102
+ - lib/storyblok/.DS_Store
80
103
  - lib/storyblok/cache/redis.rb
81
104
  - lib/storyblok/client.rb
82
105
  - lib/storyblok/links.rb