slimmer 5.0.1 → 5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +6 -0
- data/lib/slimmer/component_i18n_backend.rb +60 -0
- data/lib/slimmer/component_resolver.rb +1 -1
- data/lib/slimmer/version.rb +1 -1
- data/test/component_resolver_test.rb +1 -1
- metadata +37 -36
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 5.1.0
|
2
|
+
|
3
|
+
* `ComponentResolver#test_body` returns a JSON blob of the components keys and values instead of just the values.
|
4
|
+
|
5
|
+
* Add an I18n backend to load translations over the network from static
|
6
|
+
|
1
7
|
# 5.0.1
|
2
8
|
|
3
9
|
* Fix MetaViewportRemover to not raise an exception if there is no meta
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Slimmer
|
4
|
+
class I18nBackend
|
5
|
+
include I18n::Backend::Base, I18n::Backend::Flatten
|
6
|
+
|
7
|
+
def available_locales
|
8
|
+
cache.fetch("available_locales") do
|
9
|
+
locale_json = fetch(static_locales_url)
|
10
|
+
locales = JSON.parse(locale_json).map(&:to_sym)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def lookup(locale, key, scope = [], options = {})
|
15
|
+
key = normalize_flat_keys(locale, key, scope, options[:separator])
|
16
|
+
translations = translations(locale)
|
17
|
+
translations["#{locale}.#{key}".to_sym]
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def cache
|
23
|
+
Cache.instance
|
24
|
+
end
|
25
|
+
|
26
|
+
def translations(locale)
|
27
|
+
cache.fetch("translations/#{locale}") do
|
28
|
+
fetch_translations(locale)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def static_locales_url(locale=nil)
|
33
|
+
[static_host, "templates", "locales", locale].compact.join('/')
|
34
|
+
end
|
35
|
+
|
36
|
+
def static_host
|
37
|
+
@static_host ||= Plek.new.find('static')
|
38
|
+
end
|
39
|
+
|
40
|
+
def fetch_translations(locale)
|
41
|
+
url = static_locales_url(locale)
|
42
|
+
json_data = fetch(url)
|
43
|
+
translations = JSON.parse(json_data)
|
44
|
+
flatten_translations(locale, translations, false, false)
|
45
|
+
end
|
46
|
+
|
47
|
+
def fetch(url)
|
48
|
+
headers = {}
|
49
|
+
headers[:govuk_request_id] = GovukRequestId.value if GovukRequestId.set?
|
50
|
+
response = RestClient.get(url, headers)
|
51
|
+
response.body
|
52
|
+
rescue RestClient::Exception => e
|
53
|
+
raise TemplateNotFoundException, "Unable to fetch: '#{url}' because #{e}", caller
|
54
|
+
rescue Errno::ECONNREFUSED => e
|
55
|
+
raise CouldNotRetrieveTemplate, "Unable to fetch: '#{url}' because #{e}", caller
|
56
|
+
rescue SocketError => e
|
57
|
+
raise CouldNotRetrieveTemplate, "Unable to fetch: '#{url}' because #{e}", caller
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -62,7 +62,7 @@ module Slimmer
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def test_body(path)
|
65
|
-
%Q{<
|
65
|
+
%Q{<script type="text/component-source" class="#{path.parameterize}"><%= JSON.dump(local_assigns) %></script>}
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
data/lib/slimmer/version.rb
CHANGED
@@ -23,7 +23,7 @@ describe Slimmer::ComponentResolver do
|
|
23
23
|
@resolver.expects(:test?).returns(true)
|
24
24
|
|
25
25
|
templates = @resolver.find_templates('name', 'govuk_component', false, {})
|
26
|
-
assert_match /<
|
26
|
+
assert_match /<script type="text\/component-source" class="govuk_component-name">/, templates.first.args[0]
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0
|
4
|
+
version: 5.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
requirement: &
|
17
|
+
requirement: &12214100 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.5.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *12214100
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rack
|
28
|
-
requirement: &
|
28
|
+
requirement: &12241700 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.3.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *12241700
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: plek
|
39
|
-
requirement: &
|
39
|
+
requirement: &12239840 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.1.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *12239840
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json
|
50
|
-
requirement: &
|
50
|
+
requirement: &12239120 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *12239120
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: null_logger
|
61
|
-
requirement: &
|
61
|
+
requirement: &12237920 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *12237920
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rest-client
|
72
|
-
requirement: &
|
72
|
+
requirement: &12236540 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *12236540
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: activesupport
|
83
|
-
requirement: &
|
83
|
+
requirement: &12235640 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *12235640
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: minitest
|
94
|
-
requirement: &
|
94
|
+
requirement: &12247000 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '5.4'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *12247000
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rake
|
105
|
-
requirement: &
|
105
|
+
requirement: &12245280 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: 0.9.2.2
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *12245280
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: rack-test
|
116
|
-
requirement: &
|
116
|
+
requirement: &12243820 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: 0.6.1
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *12243820
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: mocha
|
127
|
-
requirement: &
|
127
|
+
requirement: &12243140 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: '1.1'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *12243140
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: webmock
|
138
|
-
requirement: &
|
138
|
+
requirement: &12270980 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - =
|
@@ -143,10 +143,10 @@ dependencies:
|
|
143
143
|
version: 1.18.0
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *12270980
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: therubyracer
|
149
|
-
requirement: &
|
149
|
+
requirement: &12268780 !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|
152
152
|
- - ~>
|
@@ -154,10 +154,10 @@ dependencies:
|
|
154
154
|
version: 0.10.2
|
155
155
|
type: :development
|
156
156
|
prerelease: false
|
157
|
-
version_requirements: *
|
157
|
+
version_requirements: *12268780
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
159
|
name: gem_publisher
|
160
|
-
requirement: &
|
160
|
+
requirement: &12266940 !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
162
162
|
requirements:
|
163
163
|
- - ~>
|
@@ -165,10 +165,10 @@ dependencies:
|
|
165
165
|
version: 1.1.1
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
|
-
version_requirements: *
|
168
|
+
version_requirements: *12266940
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: gds-api-adapters
|
171
|
-
requirement: &
|
171
|
+
requirement: &12265940 !ruby/object:Gem::Requirement
|
172
172
|
none: false
|
173
173
|
requirements:
|
174
174
|
- - =
|
@@ -176,10 +176,10 @@ dependencies:
|
|
176
176
|
version: 2.7.1
|
177
177
|
type: :development
|
178
178
|
prerelease: false
|
179
|
-
version_requirements: *
|
179
|
+
version_requirements: *12265940
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
181
|
name: timecop
|
182
|
-
requirement: &
|
182
|
+
requirement: &12264600 !ruby/object:Gem::Requirement
|
183
183
|
none: false
|
184
184
|
requirements:
|
185
185
|
- - ~>
|
@@ -187,7 +187,7 @@ dependencies:
|
|
187
187
|
version: 0.5.1
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
|
-
version_requirements: *
|
190
|
+
version_requirements: *12264600
|
191
191
|
description: Rack middleware for skinning pages using a specific template
|
192
192
|
email:
|
193
193
|
- bengriffiths@gmail.com
|
@@ -215,6 +215,7 @@ files:
|
|
215
215
|
- lib/slimmer/shared_templates.rb
|
216
216
|
- lib/slimmer/govuk_request_id.rb
|
217
217
|
- lib/slimmer/template.rb
|
218
|
+
- lib/slimmer/component_i18n_backend.rb
|
218
219
|
- lib/slimmer/component_resolver.rb
|
219
220
|
- lib/slimmer/cache.rb
|
220
221
|
- lib/slimmer/processors/header_context_inserter.rb
|
@@ -288,7 +289,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
288
289
|
version: '0'
|
289
290
|
segments:
|
290
291
|
- 0
|
291
|
-
hash:
|
292
|
+
hash: 3888968595251477904
|
292
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
293
294
|
none: false
|
294
295
|
requirements:
|
@@ -297,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
297
298
|
version: '0'
|
298
299
|
segments:
|
299
300
|
- 0
|
300
|
-
hash:
|
301
|
+
hash: 3888968595251477904
|
301
302
|
requirements: []
|
302
303
|
rubyforge_project: slimmer
|
303
304
|
rubygems_version: 1.8.11
|