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 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{<div class="#{path.parameterize}"><%= local_assigns.keys.join(' ') %></div>}
65
+ %Q{<script type="text/component-source" class="#{path.parameterize}"><%= JSON.dump(local_assigns) %></script>}
66
66
  end
67
67
  end
68
68
  end
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '5.0.1'
2
+ VERSION = '5.1.0'
3
3
  end
@@ -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 /<div class="govuk_component-name">/, templates.first.args[0]
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.1
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-11-26 00:00:00.000000000 Z
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: &7909580 !ruby/object:Gem::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: *7909580
25
+ version_requirements: *12214100
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rack
28
- requirement: &7937280 !ruby/object:Gem::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: *7937280
36
+ version_requirements: *12241700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: plek
39
- requirement: &7936200 !ruby/object:Gem::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: *7936200
47
+ version_requirements: *12239840
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: json
50
- requirement: &7934600 !ruby/object:Gem::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: *7934600
58
+ version_requirements: *12239120
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: null_logger
61
- requirement: &7933600 !ruby/object:Gem::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: *7933600
69
+ version_requirements: *12237920
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rest-client
72
- requirement: &7931940 !ruby/object:Gem::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: *7931940
80
+ version_requirements: *12236540
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activesupport
83
- requirement: &7931220 !ruby/object:Gem::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: *7931220
91
+ version_requirements: *12235640
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: minitest
94
- requirement: &7943920 !ruby/object:Gem::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: *7943920
102
+ version_requirements: *12247000
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
- requirement: &7942880 !ruby/object:Gem::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: *7942880
113
+ version_requirements: *12245280
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rack-test
116
- requirement: &7940820 !ruby/object:Gem::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: *7940820
124
+ version_requirements: *12243820
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: mocha
127
- requirement: &7939500 !ruby/object:Gem::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: *7939500
135
+ version_requirements: *12243140
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: webmock
138
- requirement: &7938000 !ruby/object:Gem::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: *7938000
146
+ version_requirements: *12270980
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: therubyracer
149
- requirement: &7965480 !ruby/object:Gem::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: *7965480
157
+ version_requirements: *12268780
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: gem_publisher
160
- requirement: &7963760 !ruby/object:Gem::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: *7963760
168
+ version_requirements: *12266940
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: gds-api-adapters
171
- requirement: &7962140 !ruby/object:Gem::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: *7962140
179
+ version_requirements: *12265940
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: timecop
182
- requirement: &7961060 !ruby/object:Gem::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: *7961060
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: 4210104477749647125
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: 4210104477749647125
301
+ hash: 3888968595251477904
301
302
  requirements: []
302
303
  rubyforge_project: slimmer
303
304
  rubygems_version: 1.8.11