curly-templates 2.4.1 → 2.5.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 +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
|