sinatra-content-for2 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|