middleman-headless 0.4.1 → 0.5.0

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
  SHA1:
3
- metadata.gz: 3511cd0a8e7eaeb9ae1f43f98724fb79cd3974bd
4
- data.tar.gz: a70dfec8c556aa76b3d1ebb843f6bbcfe1c4ea00
3
+ metadata.gz: 4a313f95df220ded23eaf7b53d45fe4f7b9a5db3
4
+ data.tar.gz: 113bb0e0c349221122bed050bb67a4061a91988b
5
5
  SHA512:
6
- metadata.gz: 030def5dcf075c2efb10310dfe732dae03a9f964c10f5945efb949651f6778e62ea794bc60a2142f8f24ca595b3207e14f5198861918dce41dccc4d84cdf9884
7
- data.tar.gz: 828711ce679cbae8c4c6dba0be0a5becee44e476654ea4ed8a6054f78e1167f1fb239679ca3af4526cd73b72b443b489121e4494ebafd09bc42137a971d89286
6
+ metadata.gz: d0fd6bb4f7d1c5eecd69cab8bddb918b8529042d8c451e88c15fd218b49b68321795dbe7a646e2d8d295a3fd2d5e6d41a65d9698f7c2137845a72c4340d00d2d
7
+ data.tar.gz: e4aed804224f0e4510811606e2f53df6b29fe346d82a0085ce7af00810ba15edaaa7d244fd07ceff4b2fdca560b9e344f22445c8578cfcef067495c4ee730024
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.4.2
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ ruby '2.4.2'
4
+
3
5
  gemspec
data/README.md CHANGED
@@ -13,7 +13,7 @@ After that you need to create the following content types:
13
13
  ```
14
14
  post:
15
15
  title: string
16
- body: string (multiline)
16
+ body: document
17
17
  image: asset
18
18
  author: reference (author)
19
19
 
data/example/Gemfile.lock CHANGED
@@ -1,71 +1,69 @@
1
1
  PATH
2
- remote: ../
2
+ remote: ..
3
3
  specs:
4
4
  middleman-headless (0.4.1)
5
5
  middleman-core (~> 4.1)
6
6
  mime-types (~> 3.1)
7
+ nokogiri (~> 1.10)
7
8
  oauth2 (~> 1.4)
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
12
- activesupport (5.0.6)
13
+ activesupport (5.0.7.1)
13
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
- i18n (~> 0.7)
15
+ i18n (>= 0.7, < 2)
15
16
  minitest (~> 5.1)
16
17
  tzinfo (~> 1.1)
17
- addressable (2.5.2)
18
+ addressable (2.6.0)
18
19
  public_suffix (>= 2.0.2, < 4.0)
19
- backports (3.10.3)
20
+ backports (3.12.0)
20
21
  coffee-script (2.4.1)
21
22
  coffee-script-source
22
23
  execjs
23
24
  coffee-script-source (1.12.2)
24
- compass-import-once (1.0.5)
25
- sass (>= 3.2, < 3.5)
26
- concurrent-ruby (1.0.5)
25
+ concurrent-ruby (1.1.4)
27
26
  contracts (0.13.0)
28
- dotenv (2.2.1)
27
+ dotenv (2.7.1)
29
28
  em-websocket (0.5.1)
30
29
  eventmachine (>= 0.12.9)
31
30
  http_parser.rb (~> 0.6.0)
32
31
  erubis (2.7.0)
33
- eventmachine (1.2.5)
32
+ eventmachine (1.2.7)
34
33
  execjs (2.7.0)
35
- faraday (0.12.2)
34
+ faraday (0.15.4)
36
35
  multipart-post (>= 1.2, < 3)
37
36
  fast_blank (1.0.0)
38
- fastimage (2.1.0)
39
- ffi (1.9.18)
37
+ fastimage (2.1.5)
38
+ ffi (1.10.0)
40
39
  haml (5.0.4)
41
40
  temple (>= 0.8.0)
42
41
  tilt
43
42
  hamster (3.0.0)
44
43
  concurrent-ruby (~> 1.0)
45
- hashie (3.5.6)
44
+ hashie (3.6.0)
46
45
  http_parser.rb (0.6.0)
47
- i18n (0.7.0)
48
- jwt (1.5.6)
49
- kramdown (1.15.0)
46
+ i18n (0.9.5)
47
+ concurrent-ruby (~> 1.0)
48
+ jwt (2.1.0)
49
+ kramdown (1.17.0)
50
50
  listen (3.0.8)
51
51
  rb-fsevent (~> 0.9, >= 0.9.4)
52
52
  rb-inotify (~> 0.9, >= 0.9.7)
53
53
  memoist (0.16.0)
54
- middleman (4.2.1)
54
+ middleman (4.3.3)
55
55
  coffee-script (~> 2.2)
56
- compass-import-once (= 1.0.5)
57
56
  haml (>= 4.0.5)
58
57
  kramdown (~> 1.2)
59
- middleman-cli (= 4.2.1)
60
- middleman-core (= 4.2.1)
61
- sass (>= 3.4.0, < 4.0)
62
- middleman-cli (4.2.1)
58
+ middleman-cli (= 4.3.3)
59
+ middleman-core (= 4.3.3)
60
+ middleman-cli (4.3.3)
63
61
  thor (>= 0.17.0, < 2.0)
64
- middleman-core (4.2.1)
62
+ middleman-core (4.3.3)
65
63
  activesupport (>= 4.2, < 5.1)
66
64
  addressable (~> 2.3)
67
65
  backports (~> 3.6)
68
- bundler (~> 1.1)
66
+ bundler
69
67
  contracts (~> 0.13.0)
70
68
  dotenv
71
69
  erubis
@@ -74,30 +72,33 @@ GEM
74
72
  fastimage (~> 2.0)
75
73
  hamster (~> 3.0)
76
74
  hashie (~> 3.4)
77
- i18n (~> 0.7.0)
75
+ i18n (~> 0.9.0)
78
76
  listen (~> 3.0.0)
79
77
  memoist (~> 0.14)
80
78
  padrino-helpers (~> 0.13.0)
81
79
  parallel
82
80
  rack (>= 1.4.5, < 3)
83
- sass (>= 3.4)
81
+ sassc (~> 2.0)
84
82
  servolux
85
- tilt (~> 2.0)
83
+ tilt (~> 2.0.9)
86
84
  uglifier (~> 3.0)
87
85
  middleman-livereload (3.4.6)
88
86
  em-websocket (~> 0.5.1)
89
87
  middleman-core (>= 3.3)
90
88
  rack-livereload (~> 0.3.15)
91
- mime-types (3.1)
89
+ mime-types (3.2.2)
92
90
  mime-types-data (~> 3.2015)
93
- mime-types-data (3.2016.0521)
94
- minitest (5.10.3)
95
- multi_json (1.12.2)
91
+ mime-types-data (3.2018.0812)
92
+ mini_portile2 (2.4.0)
93
+ minitest (5.11.3)
94
+ multi_json (1.13.1)
96
95
  multi_xml (0.6.0)
97
96
  multipart-post (2.0.0)
98
- oauth2 (1.4.0)
99
- faraday (>= 0.8, < 0.13)
100
- jwt (~> 1.0)
97
+ nokogiri (1.10.1)
98
+ mini_portile2 (~> 2.4.0)
99
+ oauth2 (1.4.1)
100
+ faraday (>= 0.8, < 0.16.0)
101
+ jwt (>= 1.0, < 3.0)
101
102
  multi_json (~> 1.3)
102
103
  multi_xml (~> 0.5)
103
104
  rack (>= 1.2, < 3)
@@ -107,21 +108,24 @@ GEM
107
108
  tilt (>= 1.4.1, < 3)
108
109
  padrino-support (0.13.3.4)
109
110
  activesupport (>= 3.1)
110
- parallel (1.12.0)
111
- public_suffix (3.0.0)
112
- rack (2.0.3)
113
- rack-livereload (0.3.16)
111
+ parallel (1.14.0)
112
+ public_suffix (3.0.3)
113
+ rack (2.0.6)
114
+ rack-livereload (0.3.17)
114
115
  rack
115
- rb-fsevent (0.10.2)
116
- rb-inotify (0.9.10)
117
- ffi (>= 0.5.0, < 2)
118
- sass (3.4.25)
116
+ rake (12.3.2)
117
+ rb-fsevent (0.10.3)
118
+ rb-inotify (0.10.0)
119
+ ffi (~> 1.0)
120
+ sassc (2.0.1)
121
+ ffi (~> 1.9)
122
+ rake
119
123
  servolux (0.13.0)
120
- temple (0.8.0)
121
- thor (0.20.0)
124
+ temple (0.8.1)
125
+ thor (0.20.3)
122
126
  thread_safe (0.3.6)
123
- tilt (2.0.8)
124
- tzinfo (1.2.3)
127
+ tilt (2.0.9)
128
+ tzinfo (1.2.5)
125
129
  thread_safe (~> 0.1)
126
130
  uglifier (3.2.0)
127
131
  execjs (>= 0.3.0, < 3)
@@ -135,4 +139,4 @@ DEPENDENCIES
135
139
  middleman-livereload
136
140
 
137
141
  BUNDLED WITH
138
- 1.13.6
142
+ 2.0.1
data/example/config.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  activate :headless,
2
- address: 'http://0.0.0.0:4000',
3
- app_key: '4cb0c70e-734c-487e-85a8-e85fc65bafe2',
4
- app_secret: '171445d9-020d-42c4-8513-b8674203eeaf',
5
- space: 'example',
6
- download_assets: true
2
+ address: 'http://0.0.0.0:8000',
3
+ app_key: '4b64998c-da49-4c5c-baf0-dd039f2d501d',
4
+ app_secret: '133560ba-7393-4fd4-815e-3b5ac03346a9',
5
+ space: 'example'
7
6
 
8
7
  configure :development do
9
8
  activate :livereload
@@ -18,9 +18,9 @@
18
18
 
19
19
  <% headless.posts.each do |post| %>
20
20
  <h2><%= post.title %></h2>
21
- <p><%= image_tag post.asset(:image).url(width: 400), alt: post.asset(:image).name %></p>
22
- <p><%= post.body %></p>
23
- <p>Written by <%= post.reference(:author).name %></p>
21
+ <p><%= image_tag post.asset(:image)&.url(width: 400), alt: post.asset(:image)&.name %></p>
22
+ <p><%= post.render(:body, 400) %></p>
23
+ <p>Written by <%= post.reference(:author)&.name %></p>
24
24
  <% end %>
25
25
 
26
26
  </body>
@@ -32,7 +32,7 @@ module MiddlemanHeadless
32
32
 
33
33
  def entries(content_type)
34
34
  content_type = content_type[:slug] if content_type.is_a?(Hash)
35
- path = "entries/#{@options.space}/#{content_type}"
35
+ path = "entries/#{@options.space}/#{content_type}?render-documents=true"
36
36
  @entries_cache[content_type.to_sym] ||= get(path).map do |item|
37
37
  Entry.new(item.with_indifferent_access, self)
38
38
  end
@@ -112,40 +112,27 @@ module MiddlemanHeadless
112
112
  end
113
113
 
114
114
  def field(key)
115
- v = version(I18n.locale)
116
- return nil if v.nil?
117
- v.field(key)
115
+ version(I18n.locale)&.field(key)
118
116
  end
119
117
 
120
118
  def asset(key)
121
- @interface.asset(field(key))
119
+ version(I18n.locale)&.asset(key)
122
120
  end
123
121
 
124
122
  def assets(key)
125
- assets = field(key)
126
- return [] if assets.nil?
127
-
128
- assets.map do |value|
129
- @interface.asset(value)
130
- end
123
+ version(I18n.locale)&.assets(key)
131
124
  end
132
125
 
133
126
  def reference(key, type=nil)
134
- type = key if type.nil?
135
- ref = field(key)
136
- return nil if ref.nil?
137
-
138
- Reference.new(type, ref, @interface)
127
+ version(I18n.locale)&.reference(key, type)
139
128
  end
140
129
 
141
130
  def references(key, type=nil)
142
- type = key if type.nil?
143
- refs = field(key)
144
- return [] if refs.nil?
131
+ version(I18n.locale)&.references(key, type)
132
+ end
145
133
 
146
- refs.map do |value|
147
- Reference.new(type, value, @interface)
148
- end
134
+ def render(key, width)
135
+ version(I18n.locale)&.render(key, width)
149
136
  end
150
137
 
151
138
  def method_missing(key)
@@ -171,6 +158,50 @@ module MiddlemanHeadless
171
158
  @data[:published_at]
172
159
  end
173
160
 
161
+ def asset(key)
162
+ @interface.asset(field(key))
163
+ end
164
+
165
+ def assets(key)
166
+ assets = field(key)
167
+ return [] if assets.nil?
168
+
169
+ assets.map do |value|
170
+ @interface.asset(value)
171
+ end
172
+ end
173
+
174
+ def reference(key, type=nil)
175
+ type = key if type.nil?
176
+ ref = field(key)
177
+ return nil if ref.nil?
178
+
179
+ Reference.new(type, ref, @interface)
180
+ end
181
+
182
+ def references(key, type=nil)
183
+ type = key if type.nil?
184
+ refs = field(key)
185
+ return [] if refs.nil?
186
+
187
+ refs.map do |value|
188
+ Reference.new(type, value, @interface)
189
+ end
190
+ end
191
+
192
+ def render(key, width)
193
+ doc = field(key)
194
+ return '' if doc.nil?
195
+
196
+ html = Nokogiri::HTML::DocumentFragment.parse(doc)
197
+
198
+ html.css('img').each do |img|
199
+ img['src'] += "?width=#{width}"
200
+ end
201
+
202
+ html.to_html
203
+ end
204
+
174
205
  def method_missing(key)
175
206
  field(key)
176
207
  end
@@ -223,9 +254,7 @@ module MiddlemanHeadless
223
254
  end
224
255
 
225
256
  def method_missing(*args)
226
- e = entry
227
- return nil if e.nil?
228
- entry.send(*args)
257
+ entry&.send(*args)
229
258
  end
230
259
  end
231
260
  end
@@ -1,15 +1,14 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path('../lib', __FILE__)
1
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
2
 
4
3
  Gem::Specification.new do |s|
5
4
  s.name = 'middleman-headless'
6
- s.version = '0.4.1'
5
+ s.version = '0.5.0'
7
6
  s.licenses = ['MIT']
8
7
  s.platform = Gem::Platform::RUBY
9
8
  s.authors = ['Joël Gähwiler']
10
9
  s.email = ['joel@twomanyprojects.com']
11
10
  s.homepage = 'https://github.com/twomanyprojects/middleman-headless'
12
- s.summary = %q{Middleman extension to load content from the Headless Content Management System.}
11
+ s.summary = 'Middleman extension to load content from the Headless CMS.'
13
12
 
14
13
  s.files = `git ls-files`.split("\n")
15
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -17,6 +16,7 @@ Gem::Specification.new do |s|
17
16
  s.require_paths = ['lib']
18
17
 
19
18
  s.add_runtime_dependency('middleman-core', ['~> 4.1'])
20
- s.add_runtime_dependency('oauth2', ['~> 1.4'])
21
19
  s.add_runtime_dependency('mime-types', ['~> 3.1'])
20
+ s.add_runtime_dependency('nokogiri', ['~> 1.10'])
21
+ s.add_runtime_dependency('oauth2', ['~> 1.4'])
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-headless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joël Gähwiler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-23 00:00:00.000000000 Z
11
+ date: 2019-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
@@ -25,33 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: oauth2
28
+ name: mime-types
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.4'
33
+ version: '3.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.4'
40
+ version: '3.1'
41
41
  - !ruby/object:Gem::Dependency
42
- name: mime-types
42
+ name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.1'
47
+ version: '1.10'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.1'
54
+ version: '1.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: oauth2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.4'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.4'
55
69
  description:
56
70
  email:
57
71
  - joel@twomanyprojects.com
@@ -60,6 +74,7 @@ extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
76
  - ".gitignore"
77
+ - ".ruby-version"
63
78
  - Gemfile
64
79
  - LICENSE.md
65
80
  - README.md
@@ -91,9 +106,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
106
  version: '0'
92
107
  requirements: []
93
108
  rubyforge_project:
94
- rubygems_version: 2.5.2
109
+ rubygems_version: 2.6.13
95
110
  signing_key:
96
111
  specification_version: 4
97
- summary: Middleman extension to load content from the Headless Content Management
98
- System.
112
+ summary: Middleman extension to load content from the Headless CMS.
99
113
  test_files: []