tadpole 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,8 +29,7 @@ module Tadpole
29
29
  module InstanceMethods
30
30
  def run_before_run
31
31
  self.class.before_run_filters.each do |meth|
32
- meth = method(meth) if meth.is_a?(Symbol)
33
- result = meth.call
32
+ result = call_before_method(meth, false)
34
33
  return result if result.is_a?(FalseClass)
35
34
  end
36
35
  end
@@ -39,14 +38,22 @@ module Tadpole
39
38
  self.class.before_section_filters.each do |info|
40
39
  result, sec, meth = nil, *info
41
40
  if sec.nil? || sec.to_s == current_section.to_s
42
- meth = method(meth) if meth.is_a?(Symbol)
43
- args = meth.arity == 0 ? [] : [current_section]
44
- result = meth.call(*args)
41
+ result = call_before_method(meth)
45
42
  end
46
43
 
47
44
  return result if result.is_a?(FalseClass)
48
45
  end
49
46
  end
47
+
48
+ def call_before_method(meth, pass_args = true)
49
+ if meth.is_a?(Symbol)
50
+ meth = method(meth)
51
+ args = meth.arity == 0 ? [] : [current_section]
52
+ meth.call(*args)
53
+ else
54
+ instance_eval(&meth)
55
+ end
56
+ end
50
57
  end
51
58
  end
52
59
  end
data/lib/tadpole.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Tadpole
2
- Version = '0.1.4'
2
+ Version = '0.1.5'
3
3
  Root = File.dirname(__FILE__)
4
4
 
5
5
  module SectionProviders
data/spec/filters_spec.rb CHANGED
@@ -28,6 +28,26 @@ describe Tadpole::Filters do
28
28
  it "should take a block" do
29
29
  Template(:filters).before_run_filters.last.should be_kind_of(Proc)
30
30
  end
31
+
32
+ it "should execute block in instance context" do
33
+ module Tadpole::LocalTemplate
34
+ before_run do
35
+ @xyz = self
36
+ false
37
+ end
38
+ end
39
+ t = Tadpole.create_template('block_run')
40
+ module Tadpole::Template_block_run
41
+ def sections
42
+ ['x']
43
+ end
44
+ def x; "x" end
45
+ end
46
+ obj = t.new
47
+ obj.run.should == ""
48
+ obj.instance_variable_get("@xyz").should == obj
49
+ Tadpole::LocalTemplate.before_run_filters.clear
50
+ end
31
51
  end
32
52
 
33
53
  describe '#before_section' do
@@ -54,6 +74,26 @@ describe Tadpole::Filters do
54
74
  filter[0].should == nil
55
75
  filter[1].should be_kind_of(Proc)
56
76
  end
77
+
78
+ it "should execute block in instance context" do
79
+ module Tadpole::LocalTemplate
80
+ before_section(:x) do
81
+ @xyz = options
82
+ false
83
+ end
84
+ end
85
+ t = Tadpole.create_template('block_sections')
86
+ module Tadpole::Template_block_sections
87
+ def init; sections :x end
88
+ def x; 'x' end
89
+ end
90
+ obj = t.new
91
+ obj.run(:foo => 1).should == ""
92
+ opts = obj.instance_variable_get("@xyz")
93
+ opts.should be_instance_of(OpenHashStruct)
94
+ opts.foo.should == 1
95
+ Tadpole::LocalTemplate.before_run_filters.clear
96
+ end
57
97
  end
58
98
 
59
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tadpole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loren Segal
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-12 00:00:00 -04:00
12
+ date: 2009-07-15 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15