alephant-renderer 2.0.3 → 3.0.0

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
  SHA1:
3
- metadata.gz: 6500409f7ed7d93417ea6768be36cd7f23c43135
4
- data.tar.gz: be8935bf286156e5c0bcef479003942303c0e9fe
3
+ metadata.gz: d9591905fd45c75107c668cd11a21c8beb281d83
4
+ data.tar.gz: 411a4f3a3b03a1f6adaf3aa78068bbeeb15b1e63
5
5
  SHA512:
6
- metadata.gz: d41d682050384b8a91b2c921c854c6ce182ae4ce029d4708cd8f5c61f3535a0cfa5aebbfefc22717a1e2b388f5be503312c5fd03e5fe989decd2b4e63e560b89
7
- data.tar.gz: 156b79084867ba84b812be0ef52cd83621166127ace67b870a790e260ded3d324773a4e641f454e06632d2926e530ad9a90193c1bd632254021656adca72f7b1
6
+ metadata.gz: f568b783142251a21023d92f44daf86821c396c5c23b16baa5b2c512953a8fdb31a8dd364b1762cfaee8e6be4b984a41abd8f009ba63fd10a1deb999f27500e6
7
+ data.tar.gz: a7c27d89826d706bb0b414e7490b35cedf0f2811940106cd95377b93b938a75884539b9d2f37a69cc593438173df313c90b913dbd9534fbe43f1728e2c9a583c
data/README.md CHANGED
@@ -134,11 +134,13 @@ For each translation, a seperate model and view is needed.
134
134
 
135
135
  #### Model
136
136
 
137
- All that's needed in the model is to override the LOCALE constant:
137
+ A model should override the `locale` method:
138
138
 
139
139
  ```ruby
140
- class TestModel < Alephant::Views::Base
141
- LOCALE = :cy
140
+ class TestModel < Alephant::Views::HTML
141
+ def locale
142
+ :cy
143
+ end
142
144
  end
143
145
  ```
144
146
 
@@ -178,20 +180,76 @@ en:
178
180
  key: 'A translation!'
179
181
  ```
180
182
 
181
- ##### Default
183
+ ##### Other options
182
184
 
183
- By default, if the translation key doesn't exist then the translation key is used as the translation.
185
+ The `t()` method takes a second hash argument for accessing other I18n features. Below are a few of the more common uses of this argument.
184
186
 
185
- You can override this behaviour and provide a default:
187
+ By default, if the translation key doesn't exist then the translation key is used as the translation. You can override this behaviour and provide an explicit default:
186
188
 
187
189
  ```ruby
188
190
  def my_translation
189
- t 'missing_key', :default => 'Some default'
191
+ t 'missing_key', default: 'Some default'
190
192
  end
193
+ ```
191
194
 
195
+ Plurality can also be handled, including support for languages with multiple pluralities. You would define your translation in the yaml file like this:
196
+
197
+ ```yaml
198
+ en:
199
+ test_template:
200
+ pluralized_key:
201
+ one: 'Singular string'
202
+ other: 'Plural string'
203
+ ```
204
+ and the code would look like:
205
+ ```ruby
206
+ t 'pluralized_key', count: @num_of_things
192
207
  ```
193
208
 
194
- So if the key doesn't exists, then 'Some default' is the translation.
209
+ You can force it to use a different locale if you need:
210
+ ```ruby
211
+ t 'some_key', locale: :cy
212
+ ```
213
+
214
+ You can use strings from another subsection of the translations. E.g. if your renderer was currently _myRenderer_ and your translations yaml looked like this:
215
+ ```yaml
216
+ en:
217
+ myRenderer:
218
+ 'some_key': 'some string'
219
+ general:
220
+ 'another_key': 'another string'
221
+ ```
222
+ You can do this in code:
223
+ ```ruby
224
+ t 'another_key', scope: 'general'
225
+ ```
226
+
227
+ You can do simple variable substitution, as often dynamic data can be in a different position in different strings. Your yaml might look like:
228
+ ```yaml
229
+ en:
230
+ myRenderer:
231
+ 'some_key': 'some %{insert} string'
232
+ ```
233
+ and the code looks like:
234
+ ```ruby
235
+ t 'some_key', insert: 'text inserted into a'
236
+ ```
237
+
238
+ ## Templates
239
+
240
+ The template engine is built into the Alephant::Views::HTML class. Create methods that correspond to variables, and they will become available to the template.
241
+
242
+ ### Paths
243
+
244
+ There are two template paths in Alephant, the template path and the partials path. By default in HTML renderers, the template path is `../templates/` from your model, and the partials path is `../../lib/templates` from your model. You can change either of these pathing strategies by overridding the default renderer_engine instantiation.
245
+
246
+ ```ruby
247
+ def renderer_engine
248
+ partial_path = File.join(base_path, 'templates/')
249
+ Alephant::Renderer::Engine::Mustache.new(base_path, template_name, partial_path)
250
+ end
251
+ ```
252
+ In the above example, base_path is the parent of the current model folder, so this will make the partials path equal to the template path.
195
253
 
196
254
 
197
255
  ## Contributing
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_runtime_dependency "mustache", "~> 0.99.5"
33
33
  spec.add_runtime_dependency "alephant-logger"
34
34
  spec.add_runtime_dependency "hashie"
35
+ spec.add_runtime_dependency "listen", "~> 3.0.0"
35
36
  end
@@ -0,0 +1,42 @@
1
+ require 'mustache'
2
+
3
+ module Alephant
4
+ module Renderer
5
+ module Engine
6
+ class Mustache
7
+ def initialize(base_path, namespace, partials_path = nil)
8
+ @namespace = namespace
9
+ @base_path = base_path
10
+ @partial_path = partials_path || default_shared_partial_path
11
+ end
12
+
13
+ def render(data)
14
+ mustache.template_path = @partial_path
15
+ mustache.render(template, data)
16
+ end
17
+
18
+ def default_shared_partial_path
19
+ File.join(@base_path, '../lib/templates')
20
+ end
21
+
22
+ def template_path
23
+ File.join(@base_path, 'templates')
24
+ end
25
+
26
+ private
27
+
28
+ def template_file
29
+ File.join(template_path, "#{@namespace}.#{::Mustache.template_extension}")
30
+ end
31
+
32
+ def template
33
+ @template_string ||= File.open(template_file).read
34
+ end
35
+
36
+ def mustache
37
+ ::Mustache
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,53 @@
1
+ require 'i18n'
2
+
3
+ module Alephant
4
+ module Renderer
5
+ module I18n
6
+ class LocaleComponentYaml
7
+ def initialize(locale, namespace, translations_path = nil)
8
+ @translations_path = translations_path
9
+ @locale = locale
10
+ @namespace = namespace
11
+
12
+ load_translations
13
+ end
14
+
15
+ def t(key, params = {})
16
+ i18n_lib.locale = @locale
17
+ params[:default] = key unless params[:default]
18
+ params[:scope] = @namespace unless params[:scope]
19
+ i18n_lib.translate(key, params)
20
+ end
21
+
22
+ private
23
+
24
+ def load_translations
25
+ return unless i18n_lib.available_locales.empty?
26
+ i18n_lib.backend.load_translations(translations_files)
27
+ end
28
+
29
+ def translations_files
30
+ Dir[translation_filename]
31
+ .flatten
32
+ .uniq
33
+ end
34
+
35
+ def translation_filename
36
+ File.join(
37
+ translations_path,
38
+ '*.yml')
39
+ end
40
+
41
+ def translations_path
42
+ @translations_path || './components/lib/locales'
43
+ end
44
+
45
+ def i18n_lib
46
+ i18n_lib = ::I18n
47
+ i18n_lib.enforce_available_locales = false
48
+ i18n_lib
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,5 +1,5 @@
1
1
  module Alephant
2
2
  module Renderer
3
- VERSION = "2.0.3"
3
+ VERSION = '3.0.0'.freeze
4
4
  end
5
5
  end
@@ -1,6 +1,6 @@
1
- require "alephant/renderer/views"
2
- require "hashie"
3
- require "pathname"
1
+ require 'alephant/renderer/views'
2
+ require 'hashie'
3
+ require 'pathname'
4
4
 
5
5
  module Alephant
6
6
  module Renderer
@@ -38,8 +38,8 @@ module Alephant
38
38
  attr_accessor :base_path
39
39
 
40
40
  def inherited(subclass)
41
- current_dir = File.dirname(caller.first[/\/[^:]+/])
42
- dir_path = Pathname.new(File.join(current_dir, "..")).realdirpath
41
+ current_dir = File.dirname(caller.first[%r{/[^:]+}])
42
+ dir_path = Pathname.new(File.join(current_dir, '..')).realdirpath
43
43
 
44
44
  subclass.base_path = dir_path.to_s
45
45
 
@@ -1,64 +1,57 @@
1
- require "alephant/renderer/views/base"
2
- require "mustache"
3
- require "i18n"
1
+ require 'alephant/renderer/views/base'
2
+ require 'alephant/renderer/engine/mustache'
3
+ require 'alephant/renderer/i18n/locale_component_yaml'
4
4
 
5
5
  module Alephant
6
6
  module Renderer
7
7
  module Views
8
- class Html < Mustache
8
+ class Html
9
9
  include ::Alephant::Renderer::Views::Base
10
10
 
11
+ class << self
12
+ # FIXME: remove this when we've gotten rid of all of the `self.template_path` directives
13
+ attr_accessor :template_path
14
+ end
15
+
11
16
  def setup
12
- @content_type = "text/html"
13
- load_translations_from base_path
17
+ @content_type = 'text/html'
18
+ @translator = translator
19
+ @renderer = renderer_engine
14
20
  end
15
21
 
16
- def locale
17
- :en
22
+ def render
23
+ @renderer.render self
18
24
  end
19
25
 
20
26
  private
21
27
 
22
- def load_translations_from(base_path)
23
- if I18n.load_path.empty?
24
- I18n.config.enforce_available_locales = false
25
- I18n.load_path = i18n_load_path_from(base_path)
26
- I18n.backend.load_translations
27
- end
28
+ def translator
29
+ Alephant::Renderer::I18n::LocaleComponentYaml.new(
30
+ locale,
31
+ template_name,
32
+ translations_path)
28
33
  end
29
34
 
30
- def i18n_load_path_from(base_path)
31
- Dir[
32
- File.join(
33
- Pathname.new(base_path).parent,
34
- "locale",
35
- "*.yml")
36
- ]
37
- .flatten
38
- .uniq
35
+ def translations_path
36
+ File.join(
37
+ Pathname.new(base_path).parent,
38
+ 'locale')
39
39
  end
40
40
 
41
- def t(key, params = {})
42
- I18n.locale = locale
43
- prefix = /\/([^\/]+)\.mustache/.match(template_file)[1]
44
- params.merge! :default => key unless params[:default]
45
- translation = I18n.translate("#{prefix}.#{key}", params)
41
+ def renderer_engine
42
+ Alephant::Renderer::Engine::Mustache.new(base_path, template_name)
46
43
  end
47
44
 
48
- def template
49
- @template_string ||= File.open(template_file).read
45
+ def t(key, params = {})
46
+ @translator.t(key, params)
50
47
  end
51
48
 
52
- def template_name
53
- Mustache.underscore(self.class.to_s).split("/").last
49
+ def locale
50
+ :en
54
51
  end
55
52
 
56
- def template_file
57
- File.join(
58
- base_path,
59
- "templates",
60
- "#{template_name}.#{template_extension}"
61
- )
53
+ def template_name
54
+ Mustache.underscore(self.class.to_s).split('/').last
62
55
  end
63
56
  end
64
57
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alephant::Renderer::Engine::Mustache do
4
+ let(:base_path) { File.join(File.dirname(__FILE__), 'fixtures') }
5
+ let(:namespace) { 'sample' }
6
+
7
+ subject { described_class.new(base_path, namespace) }
8
+
9
+ describe 'Renders a template' do
10
+ it 'should render some data to a template' do
11
+ data = {
12
+ item1: 'AAA',
13
+ item2: 'bbb'
14
+ }
15
+ expect(subject.render(data)).to eq('<span>AAA</span><span>bbb</span>')
16
+ end
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ {{module_type}} shared module template
@@ -0,0 +1,3 @@
1
+ en:
2
+ translating_module:
3
+ module_type: "modern"
@@ -0,0 +1,8 @@
1
+ module MyApp
2
+ class LegacyModule < Alephant::Renderer::Views::Html
3
+ self.template_path = '/ignored/path/to/templates'
4
+ def module_type
5
+ 'legacy'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module MyApp
2
+ class LegacySharedModule < Alephant::Renderer::Views::Html
3
+ self.template_path = '/ignored/path/to/shared/templates'
4
+ def module_type
5
+ 'legacy'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module MyApp
2
+ class TranslatingModule < Alephant::Renderer::Views::Html
3
+ def module_type
4
+ t 'module_type'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ {{module_type}} module template
@@ -0,0 +1 @@
1
+ <span>{{item1}}</span><span>{{item2}}</span>
@@ -0,0 +1,9 @@
1
+ en:
2
+ my_namespace:
3
+ some_string: "some string"
4
+
5
+ cy:
6
+ other_namespace:
7
+ some_string:
8
+ one: "another string"
9
+ other: "another %{count} strings"
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alephant::Renderer::I18n::LocaleComponentYaml do
4
+ let(:template_path) { File.join(File.dirname(__FILE__), 'fixtures') }
5
+ let(:locale) { 'en' }
6
+ let(:namespace) { 'my_namespace' }
7
+
8
+ subject { described_class.new(locale, namespace, template_path) }
9
+
10
+ describe 'Performs a translation' do
11
+ it 'should return a translated string in 1 locale' do
12
+ expect(subject.t(:some_string)).to eq('some string')
13
+ end
14
+ end
15
+
16
+ describe 'Overridding parameters' do
17
+ it 'should return a translation from a different locale/component' do
18
+ params = {
19
+ locale: 'cy',
20
+ scope: 'other_namespace',
21
+ count: 1
22
+ }
23
+ expect(subject.t(:some_string, params)).to eq('another string')
24
+ end
25
+
26
+ it 'should return a pluralized translation with variable substitution' do
27
+ params = {
28
+ locale: 'cy',
29
+ scope: 'other_namespace',
30
+ count: 2
31
+ }
32
+ expect(subject.t(:some_string, params)).to eq('another 2 strings')
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require_relative 'fixtures/components/test-renderer/models/legacy_module'
3
+ require_relative 'fixtures/components/test-renderer/models/legacy_shared_module'
4
+ require_relative 'fixtures/components/test-renderer/models/translating_module'
5
+
6
+ describe Alephant::Renderer::Views::Html do
7
+ let(:data) { nil }
8
+ let(:test_renderer) { MyApp::LegacyModule }
9
+
10
+ subject { test_renderer.new(data) }
11
+
12
+ describe 'Interface tests (backwards compatibility)' do
13
+ it 'should accept self.template_path calls' do
14
+ expect(subject.class.template_path).to eq('/ignored/path/to/templates')
15
+ end
16
+
17
+ it 'should render from a local template (with template_path set)' do
18
+ expect(subject.render).to eq('legacy module template')
19
+ end
20
+
21
+ describe 'Shared template test' do
22
+ let(:test_renderer) { MyApp::LegacySharedModule }
23
+
24
+ it 'should render a local template that points to a shared template (with template_path set)' do
25
+ expect(subject.render).to eq('legacy shared module template')
26
+ end
27
+ end
28
+ end
29
+
30
+ describe 'Interface tests' do
31
+ describe 'Translation test' do
32
+ before(:all) do
33
+ ::I18n.backend = I18n::Backend::Simple.new
34
+ end
35
+
36
+ let(:test_renderer) { MyApp::TranslatingModule }
37
+
38
+ it 'should render a template with a translated string' do
39
+ expect(subject.render).to eq('modern shared module template')
40
+ end
41
+ end
42
+ end
43
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- $: << File.join(File.dirname(__FILE__),"..", "lib")
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__),"..", "lib")
2
2
 
3
3
  require "pry"
4
4
  require "json"
metadata CHANGED
@@ -1,211 +1,225 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alephant-renderer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - BBC News
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-10 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
14
20
  requirement: !ruby/object:Gem::Requirement
15
21
  requirements:
16
22
  - - '>='
17
23
  - !ruby/object:Gem::Version
18
24
  version: '0'
19
- name: rspec
20
25
  prerelease: false
21
26
  type: :development
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-nc
22
29
  version_requirements: !ruby/object:Gem::Requirement
23
30
  requirements:
24
31
  - - '>='
25
32
  - !ruby/object:Gem::Version
26
33
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
34
  requirement: !ruby/object:Gem::Requirement
29
35
  requirements:
30
36
  - - '>='
31
37
  - !ruby/object:Gem::Version
32
38
  version: '0'
33
- name: rspec-nc
34
39
  prerelease: false
35
40
  type: :development
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard
36
43
  version_requirements: !ruby/object:Gem::Requirement
37
44
  requirements:
38
45
  - - '>='
39
46
  - !ruby/object:Gem::Version
40
47
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
48
  requirement: !ruby/object:Gem::Requirement
43
49
  requirements:
44
50
  - - '>='
45
51
  - !ruby/object:Gem::Version
46
52
  version: '0'
47
- name: guard
48
53
  prerelease: false
49
54
  type: :development
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard-rspec
50
57
  version_requirements: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
62
  requirement: !ruby/object:Gem::Requirement
57
63
  requirements:
58
64
  - - '>='
59
65
  - !ruby/object:Gem::Version
60
66
  version: '0'
61
- name: guard-rspec
62
67
  prerelease: false
63
68
  type: :development
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
64
71
  version_requirements: !ruby/object:Gem::Requirement
65
72
  requirements:
66
73
  - - '>='
67
74
  - !ruby/object:Gem::Version
68
75
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
76
  requirement: !ruby/object:Gem::Requirement
71
77
  requirements:
72
78
  - - '>='
73
79
  - !ruby/object:Gem::Version
74
80
  version: '0'
75
- name: pry
76
81
  prerelease: false
77
82
  type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-remote
78
85
  version_requirements: !ruby/object:Gem::Requirement
79
86
  requirements:
80
87
  - - '>='
81
88
  - !ruby/object:Gem::Version
82
89
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
90
  requirement: !ruby/object:Gem::Requirement
85
91
  requirements:
86
92
  - - '>='
87
93
  - !ruby/object:Gem::Version
88
94
  version: '0'
89
- name: pry-remote
90
95
  prerelease: false
91
96
  type: :development
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-nav
92
99
  version_requirements: !ruby/object:Gem::Requirement
93
100
  requirements:
94
101
  - - '>='
95
102
  - !ruby/object:Gem::Version
96
103
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
104
  requirement: !ruby/object:Gem::Requirement
99
105
  requirements:
100
106
  - - '>='
101
107
  - !ruby/object:Gem::Version
102
108
  version: '0'
103
- name: pry-nav
104
109
  prerelease: false
105
110
  type: :development
111
+ - !ruby/object:Gem::Dependency
112
+ name: bundler
106
113
  version_requirements: !ruby/object:Gem::Requirement
107
114
  requirements:
108
- - - '>='
115
+ - - ~>
109
116
  - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
117
+ version: '1.5'
112
118
  requirement: !ruby/object:Gem::Requirement
113
119
  requirements:
114
120
  - - ~>
115
121
  - !ruby/object:Gem::Version
116
122
  version: '1.5'
117
- name: bundler
118
123
  prerelease: false
119
124
  type: :development
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
120
127
  version_requirements: !ruby/object:Gem::Requirement
121
128
  requirements:
122
- - - ~>
129
+ - - '>='
123
130
  - !ruby/object:Gem::Version
124
- version: '1.5'
125
- - !ruby/object:Gem::Dependency
131
+ version: '0'
126
132
  requirement: !ruby/object:Gem::Requirement
127
133
  requirements:
128
134
  - - '>='
129
135
  - !ruby/object:Gem::Version
130
136
  version: '0'
131
- name: rake
132
137
  prerelease: false
133
138
  type: :development
139
+ - !ruby/object:Gem::Dependency
140
+ name: rake-rspec
134
141
  version_requirements: !ruby/object:Gem::Requirement
135
142
  requirements:
136
143
  - - '>='
137
144
  - !ruby/object:Gem::Version
138
145
  version: '0'
139
- - !ruby/object:Gem::Dependency
140
146
  requirement: !ruby/object:Gem::Requirement
141
147
  requirements:
142
148
  - - '>='
143
149
  - !ruby/object:Gem::Version
144
150
  version: '0'
145
- name: rake-rspec
146
151
  prerelease: false
147
152
  type: :development
153
+ - !ruby/object:Gem::Dependency
154
+ name: i18n
148
155
  version_requirements: !ruby/object:Gem::Requirement
149
156
  requirements:
150
157
  - - '>='
151
158
  - !ruby/object:Gem::Version
152
159
  version: '0'
153
- - !ruby/object:Gem::Dependency
154
160
  requirement: !ruby/object:Gem::Requirement
155
161
  requirements:
156
162
  - - '>='
157
163
  - !ruby/object:Gem::Version
158
164
  version: '0'
159
- name: i18n
160
165
  prerelease: false
161
166
  type: :runtime
167
+ - !ruby/object:Gem::Dependency
168
+ name: mustache
162
169
  version_requirements: !ruby/object:Gem::Requirement
163
170
  requirements:
164
- - - '>='
171
+ - - ~>
165
172
  - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
173
+ version: 0.99.5
168
174
  requirement: !ruby/object:Gem::Requirement
169
175
  requirements:
170
176
  - - ~>
171
177
  - !ruby/object:Gem::Version
172
178
  version: 0.99.5
173
- name: mustache
174
179
  prerelease: false
175
180
  type: :runtime
181
+ - !ruby/object:Gem::Dependency
182
+ name: alephant-logger
176
183
  version_requirements: !ruby/object:Gem::Requirement
177
184
  requirements:
178
- - - ~>
185
+ - - '>='
179
186
  - !ruby/object:Gem::Version
180
- version: 0.99.5
181
- - !ruby/object:Gem::Dependency
187
+ version: '0'
182
188
  requirement: !ruby/object:Gem::Requirement
183
189
  requirements:
184
190
  - - '>='
185
191
  - !ruby/object:Gem::Version
186
192
  version: '0'
187
- name: alephant-logger
188
193
  prerelease: false
189
194
  type: :runtime
195
+ - !ruby/object:Gem::Dependency
196
+ name: hashie
190
197
  version_requirements: !ruby/object:Gem::Requirement
191
198
  requirements:
192
199
  - - '>='
193
200
  - !ruby/object:Gem::Version
194
201
  version: '0'
195
- - !ruby/object:Gem::Dependency
196
202
  requirement: !ruby/object:Gem::Requirement
197
203
  requirements:
198
204
  - - '>='
199
205
  - !ruby/object:Gem::Version
200
206
  version: '0'
201
- name: hashie
202
207
  prerelease: false
203
208
  type: :runtime
209
+ - !ruby/object:Gem::Dependency
210
+ name: listen
204
211
  version_requirements: !ruby/object:Gem::Requirement
205
212
  requirements:
206
- - - '>='
213
+ - - ~>
207
214
  - !ruby/object:Gem::Version
208
- version: '0'
215
+ version: 3.0.0
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ~>
219
+ - !ruby/object:Gem::Version
220
+ version: 3.0.0
221
+ prerelease: false
222
+ type: :runtime
209
223
  description:
210
224
  email:
211
225
  - FutureMediaNewsRubyGems@bbc.co.uk
@@ -223,7 +237,9 @@ files:
223
237
  - Rakefile
224
238
  - alephant-renderer.gemspec
225
239
  - lib/alephant/renderer.rb
240
+ - lib/alephant/renderer/engine/mustache.rb
226
241
  - lib/alephant/renderer/error/invalid_path.rb
242
+ - lib/alephant/renderer/i18n/locale_component_yaml.rb
227
243
  - lib/alephant/renderer/response.rb
228
244
  - lib/alephant/renderer/version.rb
229
245
  - lib/alephant/renderer/view_mapper.rb
@@ -234,13 +250,25 @@ files:
234
250
  - spec/fixtures/components/foo-renderer/models/BAR_ABC.rb
235
251
  - spec/fixtures/components/foo-renderer/models/foo_xyz.rb
236
252
  - spec/fixtures/components/foo-renderer/models/json.rb
253
+ - spec/integration/engine_mustache_spec.rb
254
+ - spec/integration/fixtures/components/lib/templates/legacy_shared_template.mustache
255
+ - spec/integration/fixtures/components/locale/translations.yml
256
+ - spec/integration/fixtures/components/test-renderer/models/legacy_module.rb
257
+ - spec/integration/fixtures/components/test-renderer/models/legacy_shared_module.rb
258
+ - spec/integration/fixtures/components/test-renderer/models/translating_module.rb
259
+ - spec/integration/fixtures/components/test-renderer/templates/legacy_module.mustache
260
+ - spec/integration/fixtures/components/test-renderer/templates/legacy_shared_module.mustache
261
+ - spec/integration/fixtures/components/test-renderer/templates/translating_module.mustache
262
+ - spec/integration/fixtures/templates/sample.mustache
263
+ - spec/integration/fixtures/translations.yml
264
+ - spec/integration/i18n_locale_component_yaml_spec.rb
237
265
  - spec/integration/spec_helper.rb
266
+ - spec/integration/views_html_spec.rb
238
267
  - spec/renderer_spec.rb
239
268
  - spec/response_spec.rb
240
269
  - spec/spec_helper.rb
241
270
  - spec/view_mapper_spec.rb
242
271
  - spec/views_json_spec.rb
243
- - trans.yml
244
272
  homepage: ''
245
273
  licenses:
246
274
  - MIT
@@ -269,7 +297,20 @@ test_files:
269
297
  - spec/fixtures/components/foo-renderer/models/BAR_ABC.rb
270
298
  - spec/fixtures/components/foo-renderer/models/foo_xyz.rb
271
299
  - spec/fixtures/components/foo-renderer/models/json.rb
300
+ - spec/integration/engine_mustache_spec.rb
301
+ - spec/integration/fixtures/components/lib/templates/legacy_shared_template.mustache
302
+ - spec/integration/fixtures/components/locale/translations.yml
303
+ - spec/integration/fixtures/components/test-renderer/models/legacy_module.rb
304
+ - spec/integration/fixtures/components/test-renderer/models/legacy_shared_module.rb
305
+ - spec/integration/fixtures/components/test-renderer/models/translating_module.rb
306
+ - spec/integration/fixtures/components/test-renderer/templates/legacy_module.mustache
307
+ - spec/integration/fixtures/components/test-renderer/templates/legacy_shared_module.mustache
308
+ - spec/integration/fixtures/components/test-renderer/templates/translating_module.mustache
309
+ - spec/integration/fixtures/templates/sample.mustache
310
+ - spec/integration/fixtures/translations.yml
311
+ - spec/integration/i18n_locale_component_yaml_spec.rb
272
312
  - spec/integration/spec_helper.rb
313
+ - spec/integration/views_html_spec.rb
273
314
  - spec/renderer_spec.rb
274
315
  - spec/response_spec.rb
275
316
  - spec/spec_helper.rb
data/trans.yml DELETED
@@ -1,2 +0,0 @@
1
- en:
2
- test: 'Hello!'