keynote 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of keynote might be problematic. Click here for more details.

@@ -15,6 +15,7 @@ require "keynote/cache"
15
15
  module Keynote
16
16
  class << self
17
17
  # Create or retrieve a presenter wrapping zero or more objects.
18
+ # If a block is given, yield the presenter into it.
18
19
  #
19
20
  # The first parameter is a Rails view context, but you'll usually access
20
21
  # this method through `Keynote::Helper#present`,
@@ -52,7 +53,9 @@ module Keynote
52
53
  end
53
54
 
54
55
  Cache.fetch(name, view, *objects) do
55
- presenter_from_name(name).new(view, *objects)
56
+ presenter_from_name(name).new(view, *objects).tap do |presenter|
57
+ yield presenter if block_given?
58
+ end
56
59
  end
57
60
  end
58
61
 
@@ -7,8 +7,8 @@ module Keynote
7
7
  module Controller
8
8
  # Instantiate a presenter.
9
9
  # @see Keynote.present
10
- def present(*objects)
11
- Keynote.present(view_context, *objects)
10
+ def present(*objects, &blk)
11
+ Keynote.present(view_context, *objects, &blk)
12
12
  end
13
13
  alias k present
14
14
  end
@@ -6,8 +6,8 @@ module Keynote
6
6
  module Helper
7
7
  # Instantiate a presenter.
8
8
  # @see Keynote.present
9
- def present(*objects)
10
- Keynote.present(self, *objects)
9
+ def present(*objects, &blk)
10
+ Keynote.present(self, *objects, &blk)
11
11
  end
12
12
  alias k present
13
13
  end
@@ -56,8 +56,8 @@ module Keynote
56
56
 
57
57
  # Instantiate another presenter.
58
58
  # @see Keynote.present
59
- def present(*objects)
60
- Keynote.present(@view, *objects)
59
+ def present(*objects, &blk)
60
+ Keynote.present(@view, *objects, &blk)
61
61
  end
62
62
  alias k present
63
63
 
@@ -199,6 +199,13 @@ module Keynote
199
199
  end
200
200
  end
201
201
 
202
+ # Define a more complete set of HTML5 tag methods on the given presenter
203
+ # class.
204
+ # @param [Keynote::Presenter] base
205
+ def self.use_html_5_tags(base)
206
+ define_tags(base, COMPLETE)
207
+ end
208
+
202
209
  # We need our own copy of this, the normal Rails html_escape helper, so
203
210
  # that we can access it from inside Tag objects.
204
211
  # @private
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Keynote
4
4
  # @private
5
- VERSION = "0.1.2"
5
+ VERSION = "0.1.3"
6
6
  end
@@ -26,6 +26,21 @@ describe Keynote do
26
26
  p.model.must_equal 'hello'
27
27
  end
28
28
 
29
+ it "should take a block and pass the presenter into it" do
30
+ m = mock()
31
+ m.expects(:block_yielded)
32
+
33
+ Keynote.present(:view, :normal, 'hello') do |p|
34
+ m.block_yielded
35
+
36
+ p.wont_be_nil
37
+ p.must_be_instance_of NormalPresenter
38
+
39
+ p.view.must_equal :view
40
+ p.model.must_equal 'hello'
41
+ end
42
+ end
43
+
29
44
  it "should integrate with Rumble" do
30
45
  p = Keynote.present(:view, model)
31
46
  rx = /<div>&lt;script&gt;alert\(/
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: keynote
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.1.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ryan Fitzgerald
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-03 00:00:00.000000000 Z
12
+ date: 2012-12-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement