deas-erbtags 0.4.2 → 0.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.
data/README.md CHANGED
@@ -64,7 +64,7 @@ template_helpers(Deas::ErbTags::Capture)
64
64
 
65
65
  The `capture_render` method is used to make Deas template `render` calls with nested erb markup. It calls `render` with the given args, and captures its output. Call it just as you would `render`, just invoke the call using `<% ... %>`.
66
66
 
67
- ### `capture_render`
67
+ ### `capture_partial`
68
68
 
69
69
  ```ruby
70
70
  template_helpers(Deas::ErbTags::Capture)
@@ -17,6 +17,8 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_development_dependency("assert")
20
+ gem.add_dependency("deas", ["~> 0.23"])
21
+
22
+ gem.add_development_dependency("assert", ["~> 2.3"])
21
23
 
22
24
  end
@@ -17,18 +17,17 @@ module Deas::ErbTags
17
17
  instance_variable_get(self.erb_outvar_name)
18
18
  end
19
19
 
20
- def capture(content)
20
+ def erb_write(content)
21
21
  self.erb_outvar << "#{content}\n"
22
22
  end
23
23
 
24
- def capture_tag(name, *args, &content)
25
- opts = args.last.kind_of?(::Hash) ? args.pop : {}
24
+ def capture(&content)
26
25
  outvar = self.erb_outvar_name
27
- captured_content = begin
26
+ begin
28
27
  orig_outvar = self.erb_outvar
29
28
  instance_variable_set(outvar, "\n")
30
29
 
31
- result = instance_eval(&content) if !content.nil?
30
+ result = instance_eval(&(content || Proc.new {}))
32
31
 
33
32
  if instance_variable_get(outvar) == "\n"
34
33
  "\n#{result}"
@@ -38,16 +37,19 @@ module Deas::ErbTags
38
37
  ensure
39
38
  instance_variable_set(outvar, orig_outvar)
40
39
  end
40
+ end
41
41
 
42
- self.capture tag(name, "#{captured_content}\n", opts)
42
+ def capture_tag(name, *args, &content)
43
+ opts = args.last.kind_of?(::Hash) ? args.pop : {}
44
+ self.erb_write tag(name, "#{capture(&content)}\n", opts)
43
45
  end
44
46
 
45
- def capture_render(*args, &block)
46
- self.capture self.render(*args, &block)
47
+ def capture_render(*args, &content)
48
+ self.erb_write self.render(*args, &Proc.new{ capture(&content) })
47
49
  end
48
50
 
49
- def capture_partial(*args, &block)
50
- self.capture self.partial(*args, &block)
51
+ def capture_partial(*args, &content)
52
+ self.erb_write self.partial(*args, &Proc.new{ capture(&content) })
51
53
  end
52
54
 
53
55
  end
@@ -1,4 +1,4 @@
1
1
  module Deas; end
2
2
  module Deas::ErbTags
3
- VERSION = "0.4.2"
3
+ VERSION = "0.5.0"
4
4
  end
@@ -23,11 +23,13 @@ module Factory
23
23
  end
24
24
 
25
25
  def render(*args, &block)
26
- [args, block].inspect
26
+ cap_content = "#{(block || Proc.new {}).call}"
27
+ RenderArgs.new(args, cap_content).inspect
27
28
  end
28
29
 
29
30
  def partial(*args, &block)
30
- [args, block].inspect
31
+ cap_content = "#{(block || Proc.new {}).call}"
32
+ RenderArgs.new(args, cap_content).inspect
31
33
  end
32
34
 
33
35
  end
@@ -39,4 +41,6 @@ module Factory
39
41
  Deas::ErbTags::Utils.html_attrs(opts)
40
42
  end
41
43
 
44
+ RenderArgs = Struct.new(:args, :captured_content)
45
+
42
46
  end
@@ -4,14 +4,14 @@ require 'deas-erbtags/capture'
4
4
 
5
5
  module Deas::ErbTags::Capture
6
6
 
7
- class BaseTests < Assert::Context
7
+ class UnitTests < Assert::Context
8
8
  desc "the `Capture` module"
9
9
  setup do
10
10
  @template = Factory.template(Deas::ErbTags::Capture)
11
11
  end
12
12
  subject{ @template }
13
13
 
14
- should have_imeths :erb_outvar_name, :erb_outvar
14
+ should have_imeths :erb_outvar_name, :erb_outvar, :erb_write
15
15
  should have_imeths :capture, :capture_tag, :capture_render, :capture_partial
16
16
 
17
17
  should "include the `Tag` module" do
@@ -20,7 +20,7 @@ module Deas::ErbTags::Capture
20
20
 
21
21
  end
22
22
 
23
- class CaptureTagTests < BaseTests
23
+ class CaptureTagTests < UnitTests
24
24
 
25
25
  should "create content by capturing content from a given block" do
26
26
  div_div = subject.tag(:div, "\n#{subject.tag(:div, "\ninner\n")}\n\n", {
@@ -51,28 +51,32 @@ module Deas::ErbTags::Capture
51
51
 
52
52
  end
53
53
 
54
- class CaptureRenderTests < BaseTests
54
+ class CaptureRenderTests < UnitTests
55
55
 
56
56
  should "capture output from Deas' template `render` call" do
57
- exp_output = "#{subject.render('something')}\n"
58
57
  assert_empty subject._out_buf
59
58
 
60
- cap_output = subject.capture_render('something')
61
- assert_equal exp_output, cap_output
62
- assert_equal exp_output, subject._out_buf
59
+ content = Proc.new{ '_some_content_' }
60
+ exp_out = "#{subject.render('something', &Proc.new{ subject.capture(&content) })}\n"
61
+ cap_out = subject.capture_render('something') { '_some_content_' }
62
+
63
+ assert_equal exp_out, cap_out
64
+ assert_equal exp_out, subject._out_buf
63
65
  end
64
66
 
65
67
  end
66
68
 
67
- class CapturePartialTests < BaseTests
69
+ class CapturePartialTests < UnitTests
68
70
 
69
71
  should "capture output from Deas' template `partial` call" do
70
- exp_output = "#{subject.partial('something')}\n"
71
72
  assert_empty subject._out_buf
72
73
 
73
- cap_output = subject.capture_partial('something')
74
- assert_equal exp_output, cap_output
75
- assert_equal exp_output, subject._out_buf
74
+ content = Proc.new{ }
75
+ exp_out = "#{subject.partial('something', &Proc.new{ subject.capture(&content) })}\n"
76
+ cap_out = subject.capture_partial('something')
77
+
78
+ assert_equal exp_out, cap_out
79
+ assert_equal exp_out, subject._out_buf
76
80
  end
77
81
 
78
82
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 2
10
- version: 0.4.2
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,22 +16,38 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-06-28 00:00:00 Z
19
+ date: 2013-10-15 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: assert
22
+ name: deas
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ">="
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 3
29
+ hash: 37
30
30
  segments:
31
31
  - 0
32
- version: "0"
33
- type: :development
32
+ - 23
33
+ version: "0.23"
34
+ type: :runtime
34
35
  version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: assert
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 5
45
+ segments:
46
+ - 2
47
+ - 3
48
+ version: "2.3"
49
+ type: :development
50
+ version_requirements: *id002
35
51
  description: Deas template helpers for creating HTML tags using Erb.
36
52
  email:
37
53
  - kelly@kellyredding.com