curly-templates 2.4.1 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/README.md +1 -0
- data/curly-templates.gemspec +2 -2
- data/lib/curly.rb +1 -1
- data/lib/curly/presenter.rb +18 -7
- data/spec/presenter_spec.rb +19 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 771f76ff2fc6fc4e3947ee8a205897a9930a02cc
|
4
|
+
data.tar.gz: 98c36121c84ad15081e32868ca1c8613365ea6ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9893fb5b0c90b082c462128dd4bbd889d375f2913c703ae52b9d97cdb6dcf2de54f92e08032d8efd1007815a50672820bc5902a71fc5001723213719575bac29
|
7
|
+
data.tar.gz: 6ba0441db8486cdf248debd4e9d7f95d5ef8eafb2cbb53153684b5367679ada012206b289285a8c65eb94455c3a33b91209457814cf46829faf76f77f179bfc3
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
### Unreleased
|
2
2
|
|
3
|
+
### Curly 2.5.0 (May 19, 2015)
|
4
|
+
|
5
|
+
* Allow passing a block as the `default:` option to `presents`.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
class CommentPresenter < Curly::Presenter
|
9
|
+
presents :comment
|
10
|
+
presents(:author) { @comment.author }
|
11
|
+
end
|
12
|
+
```
|
13
|
+
|
14
|
+
*Steven Davidovitz & Jeremy Rodi*
|
15
|
+
|
3
16
|
### Curly 2.4.0 (February 24, 2015)
|
4
17
|
|
5
18
|
* Add an `exposes_helper` class methods to Curly::Presenter. This allows exposing
|
data/README.md
CHANGED
@@ -702,6 +702,7 @@ Thanks to [Zendesk](http://zendesk.com/) for sponsoring the work on Curly.
|
|
702
702
|
- Alisson Cavalcante Agiani ([@thelinuxlich](https://github.com/thelinuxlich))
|
703
703
|
- Łukasz Niemier ([@hauleth](https://github.com/hauleth))
|
704
704
|
- Cristian Planas ([@Gawyn](https://github.com/Gawyn))
|
705
|
+
- Steven Davidovitz ([@steved](https://github.com/steved))
|
705
706
|
|
706
707
|
|
707
708
|
Build Status
|
data/curly-templates.gemspec
CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.rubygems_version = '1.3.5'
|
5
5
|
|
6
6
|
s.name = 'curly-templates'
|
7
|
-
s.version = '2.
|
8
|
-
s.date = '2015-
|
7
|
+
s.version = '2.5.0'
|
8
|
+
s.date = '2015-05-19'
|
9
9
|
|
10
10
|
s.summary = "Free your views!"
|
11
11
|
s.description = "A view layer for your Rails apps that separates structure and logic."
|
data/lib/curly.rb
CHANGED
data/lib/curly/presenter.rb
CHANGED
@@ -48,7 +48,11 @@ module Curly
|
|
48
48
|
self.class.presented_names.each do |name|
|
49
49
|
value = options.fetch(name) do
|
50
50
|
default_values.fetch(name) do
|
51
|
-
|
51
|
+
block = default_blocks.fetch(name) do
|
52
|
+
raise ArgumentError.new("required identifier `#{name}` missing")
|
53
|
+
end
|
54
|
+
|
55
|
+
instance_exec(name, &block)
|
52
56
|
end
|
53
57
|
end
|
54
58
|
|
@@ -281,17 +285,23 @@ module Curly
|
|
281
285
|
[name, version, dependency_cache_keys].flatten.join("/")
|
282
286
|
end
|
283
287
|
|
284
|
-
def presents(*args)
|
285
|
-
options
|
288
|
+
def presents(*args, **options, &block)
|
289
|
+
if options.key?(:default) && block_given?
|
290
|
+
raise ArgumentError, "Cannot provide both `default:` and block"
|
291
|
+
end
|
286
292
|
|
287
293
|
self.presented_names += args.map(&:to_s)
|
288
294
|
|
289
295
|
if options.key?(:default)
|
290
|
-
|
291
|
-
|
296
|
+
args.each do |arg|
|
297
|
+
self.default_values = default_values.merge(arg.to_s => options[:default]).freeze
|
292
298
|
end
|
299
|
+
end
|
293
300
|
|
294
|
-
|
301
|
+
if block_given?
|
302
|
+
args.each do |arg|
|
303
|
+
self.default_blocks = default_blocks.merge(arg.to_s => block).freeze
|
304
|
+
end
|
295
305
|
end
|
296
306
|
end
|
297
307
|
|
@@ -308,10 +318,11 @@ module Curly
|
|
308
318
|
|
309
319
|
private
|
310
320
|
|
311
|
-
class_attribute :presented_names, :default_values
|
321
|
+
class_attribute :presented_names, :default_values, :default_blocks
|
312
322
|
|
313
323
|
self.presented_names = [].freeze
|
314
324
|
self.default_values = {}.freeze
|
325
|
+
self.default_blocks = {}.freeze
|
315
326
|
|
316
327
|
delegate :render, to: :@_context
|
317
328
|
|
data/spec/presenter_spec.rb
CHANGED
@@ -11,8 +11,11 @@ describe Curly::Presenter do
|
|
11
11
|
|
12
12
|
presents :midget, :clown, default: nil
|
13
13
|
presents :elephant, default: "Dumbo"
|
14
|
+
presents :puma, default: -> { 'block' }
|
15
|
+
presents(:lion) { @elephant.upcase }
|
16
|
+
presents(:something) { self }
|
14
17
|
|
15
|
-
attr_reader :midget, :clown, :elephant
|
18
|
+
attr_reader :midget, :clown, :elephant, :puma, :lion, :something
|
16
19
|
end
|
17
20
|
|
18
21
|
class FrenchCircusPresenter < CircusPresenter
|
@@ -49,10 +52,25 @@ describe Curly::Presenter do
|
|
49
52
|
# Make sure subclasses can change default values.
|
50
53
|
french_presenter = FrenchCircusPresenter.new(context)
|
51
54
|
french_presenter.elephant.should == "Babar"
|
55
|
+
french_presenter.lion.should == 'BABAR'
|
56
|
+
french_presenter.puma.should be_a Proc
|
52
57
|
|
53
58
|
# The subclass shouldn't change the superclass' defaults, though.
|
54
59
|
presenter = CircusPresenter.new(context)
|
55
60
|
presenter.elephant.should == "Dumbo"
|
61
|
+
presenter.lion.should == 'DUMBO'
|
62
|
+
presenter.puma.should be_a Proc
|
63
|
+
end
|
64
|
+
|
65
|
+
it "doesn't call a block if given as a value for identifiers" do
|
66
|
+
lion = proc { 'Simba' }
|
67
|
+
presenter = CircusPresenter.new(context, lion: lion)
|
68
|
+
presenter.lion.should be lion
|
69
|
+
end
|
70
|
+
|
71
|
+
it "calls default blocks in the instance of the presenter" do
|
72
|
+
presenter = CircusPresenter.new(context)
|
73
|
+
presenter.something.should be presenter
|
56
74
|
end
|
57
75
|
end
|
58
76
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curly-templates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schierbeck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|