stache 1.1.0 → 1.1.1
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 +4 -4
- data/.travis.yml +2 -3
- data/README.md +53 -2
- data/lib/stache/mustache/faster_context.rb +0 -1
- data/lib/stache/mustache/handler.rb +4 -3
- data/lib/stache/version.rb +1 -1
- data/spec/dummy/app/mailers/user_mailer.rb +10 -0
- data/spec/dummy/app/views/user_mailer/confirm_sign_up.html.mustache +1 -0
- data/spec/dummy/app/views/user_mailer/confirm_sign_up.rb +7 -0
- data/spec/dummy/app/views/user_mailer/confirm_sign_up.text.mustache +1 -0
- data/spec/mailers/user_mailer_spec.rb +15 -0
- data/spec/stache/mustache/handler_spec.rb +10 -0
- data/stache.gemspec +2 -1
- metadata +28 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35a70dffe63e8b3339b268a7e7e8f392b7b23fcb
|
4
|
+
data.tar.gz: e096b6bcf5d4aab498db1fb9032d9a34f07bf169
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce5651630bf430ecef53aa54a69c4d6a8687fd8d7166e385bc1e52c4a3547ace23b998e0dd633a70295ac193897ce4f506ce9f18c2447b4144e1b5b56d70e739
|
7
|
+
data.tar.gz: 1a262d6abdb6429f377aa95ef034d17b7d4f52e21aef22fb4651887d937bd61155ac4dda506d7f6c43dd5ca914ec7ced0908330df00b9a5f74f2d47c3ab91ca2
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -12,7 +12,7 @@ I'm investigating whether or not this is something that can be/needs to be porte
|
|
12
12
|
|
13
13
|
If you want Rails 4, you'll have to use 1.0.3.
|
14
14
|
|
15
|
-
##
|
15
|
+
## Installation
|
16
16
|
|
17
17
|
gem "mustache" # or "handlebars"
|
18
18
|
gem "stache"
|
@@ -51,7 +51,15 @@ Stache.template_base_path = File.join(Rails.root, "app", "şablon")
|
|
51
51
|
Stache.template_cache = ActiveSupport::Cache::MemoryStore.new if Rails.env.production?
|
52
52
|
```
|
53
53
|
|
54
|
-
|
54
|
+
## Helper methods
|
55
|
+
|
56
|
+
There is currently just one helper method; `template_include_tag`. If you pass it the name of a partial it will write out the contents of the partial in a `script` tag, so that you can access it from within your JavaScript.
|
57
|
+
|
58
|
+
```erb
|
59
|
+
<%= template_include_tag 'profiles/profile' %>
|
60
|
+
```
|
61
|
+
|
62
|
+
Specify the template to include with a path *relative to your template base path* (i.e. `profiles/profile` rather than just `profile`).
|
55
63
|
|
56
64
|
## A View Class of your Very Own
|
57
65
|
|
@@ -151,6 +159,49 @@ View:
|
|
151
159
|
end
|
152
160
|
```
|
153
161
|
|
162
|
+
## Stache + ActionMailer
|
163
|
+
|
164
|
+
Stache should work just fine with `ActionMailer`, with one minor configuration:
|
165
|
+
|
166
|
+
Assuming you have a view directory like this:
|
167
|
+
|
168
|
+
```
|
169
|
+
views/
|
170
|
+
user_mailer/
|
171
|
+
confirm_sign_up.html.mustache
|
172
|
+
confirm_sign_up.rb
|
173
|
+
confirm_sign_up.text.mustache
|
174
|
+
```
|
175
|
+
|
176
|
+
You'd define your `UserMailer` like so:
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
class UserMailer < ActionMailer::Base
|
180
|
+
default from: 'notifications@example.com'
|
181
|
+
|
182
|
+
def confirm_sign_up
|
183
|
+
mail(to: 'user@example.com', subject: 'Welcome to StacheMail') do |format|
|
184
|
+
format.text
|
185
|
+
format.html
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
```
|
190
|
+
|
191
|
+
**N.B.** the `do |format|` block is very important: `ActionMailer` will render the code in the `.rb` file as a multipart text/html component, which is probably not what you want unless you really want to show off your View class to all your recipients :).
|
192
|
+
|
193
|
+
The `confirm_sign_up.rb` file contains an utterly normal `::Stache::Mustache::View` subclass, e.g. Note that it is nested inside the `UserMailer` class.
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
class UserMailer
|
197
|
+
class ConfirmSignUp < ::Stache::Mustache::View
|
198
|
+
def full_name
|
199
|
+
["Bob", "Jones"].join(' ')
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
```
|
204
|
+
|
154
205
|
## Of Note
|
155
206
|
|
156
207
|
This is code that was ripped out of a research project. It probably has some rough edges.
|
@@ -35,7 +35,7 @@ module Stache
|
|
35
35
|
|
36
36
|
mustache.virtual_path = '#{virtual_path}'
|
37
37
|
mustache[:yield] = content_for(:layout)
|
38
|
-
mustache.context.
|
38
|
+
mustache.context.push(local_assigns)
|
39
39
|
variables = controller.instance_variables
|
40
40
|
variables.delete(:@template)
|
41
41
|
variables -= controller.class.protected_instance_variables.to_a
|
@@ -93,13 +93,14 @@ module Stache
|
|
93
93
|
return Stache::Mustache::View
|
94
94
|
end
|
95
95
|
|
96
|
-
const_name = ActiveSupport::Inflector.camelize(template.virtual_path.to_s)
|
96
|
+
const_name = ActiveSupport::Inflector.camelize(ActiveSupport::Inflector.underscore(template.virtual_path.to_s))
|
97
97
|
const_name = "#{Stache.wrapper_module_name}::#{const_name}" if Stache.wrapper_module_name
|
98
98
|
begin
|
99
99
|
const_name.constantize
|
100
100
|
rescue NameError, LoadError => e
|
101
101
|
# Only rescue NameError/LoadError concerning our mustache_class
|
102
|
-
|
102
|
+
e_const_name = e.message.match(/ ([^ ]*)$/)[1]
|
103
|
+
if const_name.match(/#{e_const_name}(::|$)/)
|
103
104
|
Stache::Mustache::View
|
104
105
|
else
|
105
106
|
raise e
|
data/lib/stache/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
<h1>Welcome, {{full_name}}!</h1>
|
@@ -0,0 +1 @@
|
|
1
|
+
Welcome, {{full_name}}!
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe UserMailer do
|
4
|
+
describe 'confirm_sign_up' do
|
5
|
+
let(:mail) { UserMailer.confirm_sign_up() }
|
6
|
+
|
7
|
+
it 'renders the subject' do
|
8
|
+
expect(mail.subject).to eql('Welcome to StacheMail')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'renders the mustache template correctly' do
|
12
|
+
expect(mail.body.encoded).to match('Welcome, Bob Jones!')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -16,6 +16,12 @@ describe Stache::Mustache::Handler do
|
|
16
16
|
@handler.mustache_class_from_template(@template).should == HelloWorld
|
17
17
|
Object.send(:remove_const, :HelloWorld)
|
18
18
|
end
|
19
|
+
it "handles templates with dashes in the filename" do
|
20
|
+
class HelloWorld < Stache::Mustache::View; end
|
21
|
+
@template.stub(:virtual_path).and_return 'hello-world'
|
22
|
+
@handler.mustache_class_from_template(@template).should == HelloWorld
|
23
|
+
Object.send(:remove_const, :HelloWorld)
|
24
|
+
end
|
19
25
|
it "is clever about folders and such" do
|
20
26
|
@template.stub(:virtual_path).and_return("profiles/index")
|
21
27
|
module Profiles; class Index < Stache::Mustache::View; end; end
|
@@ -25,6 +31,10 @@ describe Stache::Mustache::Handler do
|
|
25
31
|
it "retuns Stache::Mustache::View if it can't find none" do
|
26
32
|
@handler.mustache_class_from_template(@template).should == Stache::Mustache::View
|
27
33
|
end
|
34
|
+
it "handles nested paths" do
|
35
|
+
@template.stub(:virtual_path).and_return("profiles/sub/index")
|
36
|
+
@handler.mustache_class_from_template(@template).should == Stache::Mustache::View
|
37
|
+
end
|
28
38
|
it "reraises error if loaded mustache_class raises a NameError" do
|
29
39
|
@template.stub(:virtual_path).and_return("profiles/index")
|
30
40
|
module Profiles; end
|
data/stache.gemspec
CHANGED
@@ -26,11 +26,12 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.require_paths = ['lib']
|
27
27
|
|
28
28
|
s.add_development_dependency 'mustache'
|
29
|
-
s.add_development_dependency 'handlebars', '~>0.
|
29
|
+
s.add_development_dependency 'handlebars', '~>0.6.0'
|
30
30
|
s.add_development_dependency 'rails', '~>4.0.0'
|
31
31
|
s.add_development_dependency 'rspec', '~>2.99.0'
|
32
32
|
s.add_development_dependency 'rspec-rails', '~>2.99.0'
|
33
33
|
s.add_development_dependency 'bundler'
|
34
34
|
s.add_development_dependency 'rake'
|
35
|
+
s.add_development_dependency 'test-unit'
|
35
36
|
end
|
36
37
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mustache
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.6.0
|
34
34
|
type: :development
|
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: 0.
|
40
|
+
version: 0.6.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: test-unit
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description: A Rails 3.x and Rails 4.x compatible Mustache/Handlebars template handler
|
112
126
|
email: mhw@hypomodern.com
|
113
127
|
executables: []
|
@@ -152,6 +166,7 @@ files:
|
|
152
166
|
- spec/dummy/app/controllers/handlebars_controller.rb
|
153
167
|
- spec/dummy/app/controllers/stache_controller.rb
|
154
168
|
- spec/dummy/app/helpers/application_helper.rb
|
169
|
+
- spec/dummy/app/mailers/user_mailer.rb
|
155
170
|
- spec/dummy/app/views/handlebars/_eaten_by_a.html.hbs
|
156
171
|
- spec/dummy/app/views/handlebars/index.html.hbs
|
157
172
|
- spec/dummy/app/views/handlebars/with_helpers.html.hbs
|
@@ -178,6 +193,9 @@ files:
|
|
178
193
|
- spec/dummy/app/views/stache/with_partials.html.mustache
|
179
194
|
- spec/dummy/app/views/stache/with_partials.rb
|
180
195
|
- spec/dummy/app/views/stache/with_wrapper.html.mustache
|
196
|
+
- spec/dummy/app/views/user_mailer/confirm_sign_up.html.mustache
|
197
|
+
- spec/dummy/app/views/user_mailer/confirm_sign_up.rb
|
198
|
+
- spec/dummy/app/views/user_mailer/confirm_sign_up.text.mustache
|
181
199
|
- spec/dummy/config.ru
|
182
200
|
- spec/dummy/config/application.rb
|
183
201
|
- spec/dummy/config/boot.rb
|
@@ -210,6 +228,7 @@ files:
|
|
210
228
|
- spec/dummy/public/javascripts/rails.js
|
211
229
|
- spec/dummy/public/stylesheets/.gitkeep
|
212
230
|
- spec/dummy/script/rails
|
231
|
+
- spec/mailers/user_mailer_spec.rb
|
213
232
|
- spec/spec_helper.rb
|
214
233
|
- spec/stache/asset_helper_spec.rb
|
215
234
|
- spec/stache/config_spec.rb
|
@@ -258,6 +277,7 @@ test_files:
|
|
258
277
|
- spec/dummy/app/controllers/handlebars_controller.rb
|
259
278
|
- spec/dummy/app/controllers/stache_controller.rb
|
260
279
|
- spec/dummy/app/helpers/application_helper.rb
|
280
|
+
- spec/dummy/app/mailers/user_mailer.rb
|
261
281
|
- spec/dummy/app/views/handlebars/_eaten_by_a.html.hbs
|
262
282
|
- spec/dummy/app/views/handlebars/index.html.hbs
|
263
283
|
- spec/dummy/app/views/handlebars/with_helpers.html.hbs
|
@@ -284,6 +304,9 @@ test_files:
|
|
284
304
|
- spec/dummy/app/views/stache/with_partials.html.mustache
|
285
305
|
- spec/dummy/app/views/stache/with_partials.rb
|
286
306
|
- spec/dummy/app/views/stache/with_wrapper.html.mustache
|
307
|
+
- spec/dummy/app/views/user_mailer/confirm_sign_up.html.mustache
|
308
|
+
- spec/dummy/app/views/user_mailer/confirm_sign_up.rb
|
309
|
+
- spec/dummy/app/views/user_mailer/confirm_sign_up.text.mustache
|
287
310
|
- spec/dummy/config.ru
|
288
311
|
- spec/dummy/config/application.rb
|
289
312
|
- spec/dummy/config/boot.rb
|
@@ -316,6 +339,7 @@ test_files:
|
|
316
339
|
- spec/dummy/public/javascripts/rails.js
|
317
340
|
- spec/dummy/public/stylesheets/.gitkeep
|
318
341
|
- spec/dummy/script/rails
|
342
|
+
- spec/mailers/user_mailer_spec.rb
|
319
343
|
- spec/spec_helper.rb
|
320
344
|
- spec/stache/asset_helper_spec.rb
|
321
345
|
- spec/stache/config_spec.rb
|