sinatra-content-for2 0.2.3 → 0.2.4
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/.gitignore +4 -3
- data/README.rdoc +4 -0
- data/lib/sinatra/content_for2.rb +14 -0
- data/sinatra-content-for2.gemspec +3 -3
- data/test/content_for_test.rb +63 -25
- metadata +3 -10
data/.gitignore
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
doc
|
2
|
-
dist
|
3
|
-
tmp
|
1
|
+
doc/
|
2
|
+
dist/
|
3
|
+
tmp/
|
4
|
+
*.swp
|
data/README.rdoc
CHANGED
@@ -29,6 +29,8 @@ so if you have problems with that, make sure to check for this.
|
|
29
29
|
|
30
30
|
<B>Note</b> Use <tt><%= yield_content ... %></tt> in Erubis.
|
31
31
|
|
32
|
+
Also we provide content_for? method that checks that block is defined.
|
33
|
+
|
32
34
|
== Usage
|
33
35
|
|
34
36
|
If you're writing "classic" style apps, then requring
|
@@ -51,3 +53,5 @@ Code by foca[http://github.com/foca], inspired on the Ruby on Rails
|
|
51
53
|
helpers with the same name. Haml support by mattly[http://github.com/mattly].
|
52
54
|
Erubis support by hiroyuki[http://github.com/hryk].
|
53
55
|
Bundler/etc. unicode compatibility by arnabc[https://github.com/arnabc] and akzhan[https://github.com/akzhan].
|
56
|
+
content_for? method by BrunoGrasselli[https://github.com/BrunoGrasselli].
|
57
|
+
|
data/lib/sinatra/content_for2.rb
CHANGED
@@ -16,6 +16,20 @@ module Sinatra
|
|
16
16
|
def content_for(key, &block)
|
17
17
|
content_blocks[key.to_sym] << block if block_given?
|
18
18
|
end
|
19
|
+
|
20
|
+
# Check if a block of content with the given key was defined. For
|
21
|
+
# example:
|
22
|
+
#
|
23
|
+
# <% content_for :head do %>
|
24
|
+
# <script type="text/javascript" src="/foo.js"></script>
|
25
|
+
# <% end %>
|
26
|
+
#
|
27
|
+
# <% if content_for? :head %>
|
28
|
+
# <span>content "head" was defined.</span>
|
29
|
+
# <% end %>
|
30
|
+
def content_for?(key)
|
31
|
+
content_blocks[key.to_sym].any?
|
32
|
+
end
|
19
33
|
|
20
34
|
# Render the captured blocks for a given key. For example:
|
21
35
|
#
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "sinatra-content-for2"
|
5
|
-
s.version = "0.2.
|
6
|
-
s.date = "2011-
|
5
|
+
s.version = "0.2.4"
|
6
|
+
s.date = "2011-02-04"
|
7
7
|
|
8
8
|
s.description = "Small Sinatra extension to add a content_for helper similar to Rails'"
|
9
9
|
s.summary = "Small Sinatra extension to add a content_for helper similar to Rails'"
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.require_paths = ["lib"]
|
16
16
|
s.rubyforge_project = "sinatra-ditties"
|
17
17
|
s.has_rdoc = true
|
18
|
-
s.rubygems_version = "1.3.
|
18
|
+
s.rubygems_version = "1.3.7"
|
19
19
|
|
20
20
|
s.add_dependency "sinatra"
|
21
21
|
|
data/test/content_for_test.rb
CHANGED
@@ -8,27 +8,31 @@ rescue LoadError
|
|
8
8
|
end
|
9
9
|
|
10
10
|
require 'contest'
|
11
|
-
require 'sinatra
|
11
|
+
require 'sinatra'
|
12
|
+
require 'erubis'
|
12
13
|
require 'haml'
|
14
|
+
require 'rack/test'
|
13
15
|
|
14
16
|
begin
|
15
17
|
require 'redgreen'
|
16
18
|
rescue LoadError
|
17
19
|
end
|
18
20
|
|
19
|
-
|
21
|
+
$LOAD_PATH.unshift('./lib')
|
22
|
+
|
23
|
+
require 'sinatra/content_for2'
|
20
24
|
|
21
25
|
Sinatra::Base.set :environment, :test
|
22
26
|
|
23
27
|
module Sinatra
|
24
28
|
class Base
|
25
29
|
set :environment, :test
|
26
|
-
helpers
|
30
|
+
helpers ContentFor2
|
27
31
|
end
|
28
32
|
end
|
29
33
|
|
30
34
|
class Test::Unit::TestCase
|
31
|
-
include
|
35
|
+
include Rack::Test::Methods
|
32
36
|
|
33
37
|
class << self
|
34
38
|
alias_method :it, :test
|
@@ -37,11 +41,15 @@ class Test::Unit::TestCase
|
|
37
41
|
def mock_app(base=Sinatra::Base, &block)
|
38
42
|
@app = Sinatra.new(base, &block)
|
39
43
|
end
|
44
|
+
|
45
|
+
def app
|
46
|
+
@app
|
47
|
+
end
|
40
48
|
end
|
41
49
|
|
42
50
|
class ContentForTest < Test::Unit::TestCase
|
43
|
-
context 'using
|
44
|
-
def
|
51
|
+
context 'using erubis' do
|
52
|
+
def erubis_app(view)
|
45
53
|
mock_app {
|
46
54
|
layout { '<% yield_content :foo %>' }
|
47
55
|
get('/') { erb view }
|
@@ -49,23 +57,23 @@ class ContentForTest < Test::Unit::TestCase
|
|
49
57
|
end
|
50
58
|
|
51
59
|
it 'renders blocks declared with the same key you use when rendering' do
|
52
|
-
|
60
|
+
erubis_app '<% content_for :foo do %>foo<% end %>'
|
53
61
|
|
54
62
|
get '/'
|
55
|
-
assert ok?
|
56
|
-
assert_equal 'foo', body
|
63
|
+
assert last_response.ok?
|
64
|
+
assert_equal 'foo', last_response.body
|
57
65
|
end
|
58
66
|
|
59
67
|
it 'does not render a block with a different key' do
|
60
|
-
|
68
|
+
erubis_app '<% content_for :bar do %>bar<% end %>'
|
61
69
|
|
62
70
|
get '/'
|
63
|
-
assert ok?
|
64
|
-
assert_equal '', body
|
71
|
+
assert last_response.ok?
|
72
|
+
assert_equal '', last_response.body
|
65
73
|
end
|
66
74
|
|
67
75
|
it 'renders multiple blocks with the same key' do
|
68
|
-
|
76
|
+
erubis_app <<-erb_snippet
|
69
77
|
<% content_for :foo do %>foo<% end %>
|
70
78
|
<% content_for :foo do %>bar<% end %>
|
71
79
|
<% content_for :baz do %>WON'T RENDER ME<% end %>
|
@@ -73,8 +81,8 @@ class ContentForTest < Test::Unit::TestCase
|
|
73
81
|
erb_snippet
|
74
82
|
|
75
83
|
get '/'
|
76
|
-
assert ok?
|
77
|
-
assert_equal 'foobarbaz', body
|
84
|
+
assert last_response.ok?
|
85
|
+
assert_equal 'foobarbaz', last_response.body
|
78
86
|
end
|
79
87
|
|
80
88
|
it 'passes values to the blocks' do
|
@@ -84,8 +92,8 @@ class ContentForTest < Test::Unit::TestCase
|
|
84
92
|
}
|
85
93
|
|
86
94
|
get '/'
|
87
|
-
assert ok?
|
88
|
-
assert_equal '<i>1</i> 2', body
|
95
|
+
assert last_response.ok?
|
96
|
+
assert_equal '<i>1</i> 2', last_response.body
|
89
97
|
end
|
90
98
|
end
|
91
99
|
|
@@ -104,8 +112,8 @@ class ContentForTest < Test::Unit::TestCase
|
|
104
112
|
haml_end
|
105
113
|
|
106
114
|
get '/'
|
107
|
-
assert ok?
|
108
|
-
assert_equal "foo\n", body
|
115
|
+
assert last_response.ok?
|
116
|
+
assert_equal "foo\n", last_response.body
|
109
117
|
end
|
110
118
|
|
111
119
|
it 'does not render a block with a different key' do
|
@@ -115,8 +123,8 @@ haml_end
|
|
115
123
|
haml_end
|
116
124
|
|
117
125
|
get '/'
|
118
|
-
assert ok?
|
119
|
-
assert_equal "\n", body
|
126
|
+
assert last_response.ok?
|
127
|
+
assert_equal "\n", last_response.body
|
120
128
|
end
|
121
129
|
|
122
130
|
it 'renders multiple blocks with the same key' do
|
@@ -132,8 +140,8 @@ haml_end
|
|
132
140
|
haml_end
|
133
141
|
|
134
142
|
get '/'
|
135
|
-
assert ok?
|
136
|
-
assert_equal "foo\nbar\nbaz\n", body
|
143
|
+
assert last_response.ok?
|
144
|
+
assert_equal "foo\nbar\nbaz\n", last_response.body
|
137
145
|
end
|
138
146
|
|
139
147
|
it 'passes values to the blocks' do
|
@@ -149,8 +157,38 @@ haml_end
|
|
149
157
|
}
|
150
158
|
|
151
159
|
get '/'
|
152
|
-
assert ok?
|
153
|
-
assert_equal "<i>1</i>\n2\n", body
|
160
|
+
assert last_response.ok?
|
161
|
+
assert_equal "<i>1</i>\n2\n", last_response.body
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context 'content_for?' do
|
166
|
+
class TestApp
|
167
|
+
include Sinatra::ContentFor2
|
168
|
+
end
|
169
|
+
|
170
|
+
setup do
|
171
|
+
@helper = TestApp.new
|
172
|
+
end
|
173
|
+
|
174
|
+
context 'defined content' do
|
175
|
+
setup do
|
176
|
+
@helper.instance_variable_set(:@content_blocks, {:test => ["block"]})
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'returns true' do
|
180
|
+
assert_equal @helper.content_for?(:test), true
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'undefined content' do
|
185
|
+
setup do
|
186
|
+
@helper.instance_variable_set(:@content_blocks, {:test => []})
|
187
|
+
end
|
188
|
+
|
189
|
+
it 'returns false' do
|
190
|
+
assert_equal @helper.content_for?(:test), false
|
191
|
+
end
|
154
192
|
end
|
155
193
|
end
|
156
194
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-content-for2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 17
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
8
|
+
- 4
|
9
|
+
version: 0.2.4
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- "Nicol\xC3\xA1s Sanguinetti"
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-
|
17
|
+
date: 2011-02-04 00:00:00 +03:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -40,7 +38,6 @@ dependencies:
|
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
42
40
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
41
|
segments:
|
45
42
|
- 0
|
46
43
|
version: "0"
|
@@ -54,7 +51,6 @@ dependencies:
|
|
54
51
|
requirements:
|
55
52
|
- - ">="
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
54
|
segments:
|
59
55
|
- 0
|
60
56
|
version: "0"
|
@@ -68,7 +64,6 @@ dependencies:
|
|
68
64
|
requirements:
|
69
65
|
- - ">="
|
70
66
|
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
67
|
segments:
|
73
68
|
- 0
|
74
69
|
version: "0"
|
@@ -103,7 +98,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
98
|
requirements:
|
104
99
|
- - ">="
|
105
100
|
- !ruby/object:Gem::Version
|
106
|
-
hash: 3
|
107
101
|
segments:
|
108
102
|
- 0
|
109
103
|
version: "0"
|
@@ -112,7 +106,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
106
|
requirements:
|
113
107
|
- - ">="
|
114
108
|
- !ruby/object:Gem::Version
|
115
|
-
hash: 3
|
116
109
|
segments:
|
117
110
|
- 0
|
118
111
|
version: "0"
|