sinatra-base 1.0 → 1.4.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.
Files changed (101) hide show
  1. data/.yardopts +4 -0
  2. data/AUTHORS +15 -0
  3. data/CHANGES +524 -1
  4. data/Gemfile +82 -0
  5. data/LICENSE +1 -1
  6. data/README.de.rdoc +2093 -0
  7. data/README.es.rdoc +2091 -0
  8. data/README.fr.rdoc +2116 -0
  9. data/README.hu.rdoc +607 -0
  10. data/README.jp.rdoc +514 -23
  11. data/README.pt-br.rdoc +647 -0
  12. data/README.pt-pt.rdoc +646 -0
  13. data/README.rdoc +1580 -205
  14. data/README.ru.rdoc +2015 -0
  15. data/README.zh.rdoc +1816 -0
  16. data/Rakefile +110 -44
  17. data/examples/chat.rb +61 -0
  18. data/examples/simple.rb +3 -0
  19. data/examples/stream.ru +26 -0
  20. data/lib/sinatra.rb +0 -3
  21. data/lib/sinatra/base.rb +923 -393
  22. data/lib/sinatra/main.rb +9 -7
  23. data/lib/sinatra/showexceptions.rb +37 -4
  24. data/lib/sinatra/version.rb +3 -0
  25. data/sinatra-base.gemspec +15 -91
  26. data/test/base_test.rb +2 -2
  27. data/test/builder_test.rb +32 -2
  28. data/test/coffee_test.rb +92 -0
  29. data/test/contest.rb +62 -28
  30. data/test/creole_test.rb +65 -0
  31. data/test/delegator_test.rb +162 -0
  32. data/test/encoding_test.rb +20 -0
  33. data/test/erb_test.rb +25 -2
  34. data/test/extensions_test.rb +1 -1
  35. data/test/filter_test.rb +226 -8
  36. data/test/haml_test.rb +8 -2
  37. data/test/helper.rb +47 -0
  38. data/test/helpers_test.rb +1287 -80
  39. data/test/integration/app.rb +62 -0
  40. data/test/integration_helper.rb +208 -0
  41. data/test/integration_test.rb +82 -0
  42. data/test/less_test.rb +36 -6
  43. data/test/liquid_test.rb +59 -0
  44. data/test/mapped_error_test.rb +84 -7
  45. data/test/markaby_test.rb +80 -0
  46. data/test/markdown_test.rb +81 -0
  47. data/test/middleware_test.rb +1 -1
  48. data/test/nokogiri_test.rb +69 -0
  49. data/test/rack_test.rb +45 -0
  50. data/test/radius_test.rb +59 -0
  51. data/test/rdoc_test.rb +66 -0
  52. data/test/readme_test.rb +136 -0
  53. data/test/request_test.rb +13 -1
  54. data/test/response_test.rb +21 -2
  55. data/test/result_test.rb +5 -5
  56. data/test/route_added_hook_test.rb +1 -1
  57. data/test/routing_test.rb +328 -13
  58. data/test/sass_test.rb +48 -18
  59. data/test/scss_test.rb +88 -0
  60. data/test/server_test.rb +4 -3
  61. data/test/settings_test.rb +191 -21
  62. data/test/sinatra_test.rb +5 -1
  63. data/test/slim_test.rb +88 -0
  64. data/test/static_test.rb +89 -5
  65. data/test/streaming_test.rb +140 -0
  66. data/test/templates_test.rb +143 -4
  67. data/test/textile_test.rb +65 -0
  68. data/test/views/a/in_a.str +1 -0
  69. data/test/views/ascii.erb +2 -0
  70. data/test/views/b/in_b.str +1 -0
  71. data/test/views/calc.html.erb +1 -0
  72. data/test/views/explicitly_nested.str +1 -0
  73. data/test/views/hello.coffee +1 -0
  74. data/test/views/hello.creole +1 -0
  75. data/test/views/hello.liquid +1 -0
  76. data/test/views/hello.mab +1 -0
  77. data/test/views/hello.md +1 -0
  78. data/test/views/hello.nokogiri +1 -0
  79. data/test/views/hello.radius +1 -0
  80. data/test/views/hello.rdoc +1 -0
  81. data/test/views/hello.sass +1 -1
  82. data/test/views/hello.scss +3 -0
  83. data/test/views/hello.slim +1 -0
  84. data/test/views/hello.str +1 -0
  85. data/test/views/hello.textile +1 -0
  86. data/test/views/hello.yajl +1 -0
  87. data/test/views/layout2.liquid +2 -0
  88. data/test/views/layout2.mab +2 -0
  89. data/test/views/layout2.nokogiri +3 -0
  90. data/test/views/layout2.radius +2 -0
  91. data/test/views/layout2.slim +3 -0
  92. data/test/views/layout2.str +2 -0
  93. data/test/views/nested.str +1 -0
  94. data/test/views/utf8.erb +2 -0
  95. data/test/yajl_test.rb +80 -0
  96. metadata +126 -91
  97. data/lib/sinatra/tilt.rb +0 -746
  98. data/test/erubis_test.rb +0 -82
  99. data/test/views/error.erubis +0 -3
  100. data/test/views/hello.erubis +0 -1
  101. data/test/views/layout2.erubis +0 -2
@@ -0,0 +1,65 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ begin
4
+ require 'redcloth'
5
+
6
+ class TextileTest < Test::Unit::TestCase
7
+ def textile_app(&block)
8
+ mock_app do
9
+ set :views, File.dirname(__FILE__) + '/views'
10
+ get '/', &block
11
+ end
12
+ get '/'
13
+ end
14
+
15
+ it 'renders inline textile strings' do
16
+ textile_app { textile 'h1. Hiya' }
17
+ assert ok?
18
+ assert_equal "<h1>Hiya</h1>", body
19
+ end
20
+
21
+ it 'renders .textile files in views path' do
22
+ textile_app { textile :hello }
23
+ assert ok?
24
+ assert_equal "<h1>Hello From Textile</h1>", body
25
+ end
26
+
27
+ it "raises error if template not found" do
28
+ mock_app { get('/') { textile :no_such_template } }
29
+ assert_raise(Errno::ENOENT) { get('/') }
30
+ end
31
+
32
+ it "renders with inline layouts" do
33
+ mock_app do
34
+ layout { 'THIS. IS. #{yield.upcase}!' }
35
+ get('/') { textile 'Sparta', :layout_engine => :str }
36
+ end
37
+ get '/'
38
+ assert ok?
39
+ assert_like 'THIS. IS. <P>SPARTA</P>!', body
40
+ end
41
+
42
+ it "renders with file layouts" do
43
+ textile_app { textile 'Hello World', :layout => :layout2, :layout_engine => :erb }
44
+ assert ok?
45
+ assert_body "ERB Layout!\n<p>Hello World</p>"
46
+ end
47
+
48
+ it "can be used in a nested fashion for partials and whatnot" do
49
+ mock_app do
50
+ template(:inner) { "hi" }
51
+ template(:outer) { "<outer><%= textile :inner %></outer>" }
52
+ get '/' do
53
+ erb :outer
54
+ end
55
+ end
56
+
57
+ get '/'
58
+ assert ok?
59
+ assert_like '<outer><p>hi</p></outer>', body
60
+ end
61
+ end
62
+
63
+ rescue LoadError
64
+ warn "#{$!.to_s}: skipping textile tests"
65
+ end
@@ -0,0 +1 @@
1
+ Gimme an A!
@@ -0,0 +1,2 @@
1
+ This file has no unicode in it!
2
+ <%= value %>
@@ -0,0 +1 @@
1
+ Gimme a B!
@@ -0,0 +1 @@
1
+ <%= 1 + 1 %>
@@ -0,0 +1 @@
1
+ <content>#{render :str, :hello, :layout => :layout2}</content>
@@ -0,0 +1 @@
1
+ alert "Aye!"
@@ -0,0 +1 @@
1
+ = Hello From Creole
@@ -0,0 +1 @@
1
+ <h1>Hello From Liquid</h1>
@@ -0,0 +1 @@
1
+ h1 "Hello From Markaby"
@@ -0,0 +1 @@
1
+ # Hello From Markdown
@@ -0,0 +1 @@
1
+ xml.exclaim "You're my boy, #{@name}!"
@@ -0,0 +1 @@
1
+ <h1>Hello From Radius</h1>
@@ -0,0 +1 @@
1
+ = Hello From RDoc
@@ -1,2 +1,2 @@
1
1
  #sass
2
- :background-color #FFF
2
+ :background-color white
@@ -0,0 +1,3 @@
1
+ #scss {
2
+ background-color: white
3
+ }
@@ -0,0 +1 @@
1
+ h1 Hello From Slim
@@ -0,0 +1 @@
1
+ <h1>Hello From String</h1>
@@ -0,0 +1 @@
1
+ h1. Hello From Textile
@@ -0,0 +1 @@
1
+ json = { :yajl => "hello" }
@@ -0,0 +1,2 @@
1
+ <h1>Liquid Layout!</h1>
2
+ <p>{{ yield }}</p>
@@ -0,0 +1,2 @@
1
+ h1 "Markaby Layout!"
2
+ p { yield }
@@ -0,0 +1,3 @@
1
+ xml.layout do
2
+ xml << yield
3
+ end
@@ -0,0 +1,2 @@
1
+ <h1>Radius Layout!</h1>
2
+ <p><r:yield /></p>
@@ -0,0 +1,3 @@
1
+ h1 Slim Layout!
2
+ p
3
+ == yield
@@ -0,0 +1,2 @@
1
+ <h1>String Layout!</h1>
2
+ #{yield}
@@ -0,0 +1 @@
1
+ <content>#{render :str, :hello}</content>
@@ -0,0 +1,2 @@
1
+ <h1><%= value %></h1>
2
+ Ingen vill veta var du köpt din tröja.
@@ -0,0 +1,80 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ begin
4
+ require 'yajl'
5
+
6
+ class YajlTest < Test::Unit::TestCase
7
+ def yajl_app(&block)
8
+ mock_app {
9
+ set :views, File.dirname(__FILE__) + '/views'
10
+ get '/', &block
11
+ }
12
+ get '/'
13
+ end
14
+
15
+ it 'renders inline Yajl strings' do
16
+ yajl_app { yajl 'json = { :foo => "bar" }' }
17
+ assert ok?
18
+ assert_body '{"foo":"bar"}'
19
+ end
20
+
21
+ it 'renders .yajl files in views path' do
22
+ yajl_app { yajl :hello }
23
+ assert ok?
24
+ assert_body '{"yajl":"hello"}'
25
+ end
26
+
27
+ it 'raises error if template not found' do
28
+ mock_app {
29
+ get('/') { yajl :no_such_template }
30
+ }
31
+ assert_raise(Errno::ENOENT) { get('/') }
32
+ end
33
+
34
+ it 'accepts a :locals option' do
35
+ yajl_app {
36
+ locals = { :object => { :foo => 'bar' } }
37
+ yajl 'json = object', :locals => locals
38
+ }
39
+ assert ok?
40
+ assert_body '{"foo":"bar"}'
41
+ end
42
+
43
+ it 'accepts a :scope option' do
44
+ yajl_app {
45
+ scope = { :object => { :foo => 'bar' } }
46
+ yajl 'json = self[:object]', :scope => scope
47
+ }
48
+ assert ok?
49
+ assert_body '{"foo":"bar"}'
50
+ end
51
+
52
+ it 'decorates the json with a callback' do
53
+ yajl_app {
54
+ yajl 'json = { :foo => "bar" }', { :callback => 'baz' }
55
+ }
56
+ assert ok?
57
+ assert_body 'baz({"foo":"bar"});'
58
+ end
59
+
60
+ it 'decorates the json with a variable' do
61
+ yajl_app {
62
+ yajl 'json = { :foo => "bar" }', { :variable => 'qux' }
63
+ }
64
+ assert ok?
65
+ assert_body 'var qux = {"foo":"bar"};'
66
+ end
67
+
68
+ it 'decorates the json with a callback and a variable' do
69
+ yajl_app {
70
+ yajl 'json = { :foo => "bar" }',
71
+ { :callback => 'baz', :variable => 'qux' }
72
+ }
73
+ assert ok?
74
+ assert_body 'var qux = {"foo":"bar"}; baz(qux);'
75
+ end
76
+ end
77
+
78
+ rescue LoadError
79
+ warn "#{$!.to_s}: skipping yajl tests"
80
+ end
metadata CHANGED
@@ -1,22 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-base
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
+ - 4
8
9
  - 0
9
- version: "1.0"
10
+ version: 1.4.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Blake Mizerany
13
14
  - Ryan Tomayko
14
15
  - Simon Rozet
16
+ - Konstantin Haase
15
17
  autorequire:
16
18
  bindir: bin
17
19
  cert_chain: []
18
20
 
19
- date: 2010-03-23 00:00:00 Z
21
+ date: 2012-03-13 00:00:00 Z
20
22
  dependencies:
21
23
  - !ruby/object:Gem::Dependency
22
24
  name: rack
@@ -24,177 +26,193 @@ dependencies:
24
26
  requirement: &id001 !ruby/object:Gem::Requirement
25
27
  none: false
26
28
  requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ hash: 9
32
+ segments:
33
+ - 1
34
+ - 3
35
+ version: "1.3"
27
36
  - - ">="
28
37
  - !ruby/object:Gem::Version
29
- hash: 15
38
+ hash: 23
30
39
  segments:
31
40
  - 1
32
- - 0
33
- version: "1.0"
41
+ - 3
42
+ - 6
43
+ version: 1.3.6
34
44
  type: :runtime
35
45
  version_requirements: *id001
36
46
  - !ruby/object:Gem::Dependency
37
- name: shotgun
47
+ name: rack-protection
38
48
  prerelease: false
39
49
  requirement: &id002 !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 7
45
- segments:
46
- - 0
47
- - 6
48
- version: "0.6"
49
- - - <
52
+ - - ~>
50
53
  - !ruby/object:Gem::Version
51
- hash: 15
54
+ hash: 11
52
55
  segments:
53
56
  - 1
54
- - 0
55
- version: "1.0"
56
- type: :development
57
+ - 2
58
+ version: "1.2"
59
+ type: :runtime
57
60
  version_requirements: *id002
58
61
  - !ruby/object:Gem::Dependency
59
- name: rack-test
62
+ name: tilt
60
63
  prerelease: false
61
64
  requirement: &id003 !ruby/object:Gem::Requirement
62
65
  none: false
63
66
  requirements:
64
- - - ">="
67
+ - - ~>
65
68
  - !ruby/object:Gem::Version
66
- hash: 19
69
+ hash: 9
67
70
  segments:
68
- - 0
71
+ - 1
69
72
  - 3
70
- - 0
71
- version: 0.3.0
72
- type: :development
73
- version_requirements: *id003
74
- - !ruby/object:Gem::Dependency
75
- name: haml
76
- prerelease: false
77
- requirement: &id004 !ruby/object:Gem::Requirement
78
- none: false
79
- requirements:
73
+ version: "1.3"
80
74
  - - ">="
81
75
  - !ruby/object:Gem::Version
82
- hash: 3
76
+ hash: 29
83
77
  segments:
84
- - 0
85
- version: "0"
86
- type: :development
87
- version_requirements: *id004
88
- - !ruby/object:Gem::Dependency
89
- name: builder
90
- prerelease: false
91
- requirement: &id005 !ruby/object:Gem::Requirement
92
- none: false
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- hash: 3
97
- segments:
98
- - 0
99
- version: "0"
100
- type: :development
101
- version_requirements: *id005
102
- - !ruby/object:Gem::Dependency
103
- name: erubis
104
- prerelease: false
105
- requirement: &id006 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- hash: 3
111
- segments:
112
- - 0
113
- version: "0"
114
- type: :development
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: less
118
- prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- hash: 3
125
- segments:
126
- - 0
127
- version: "0"
128
- type: :development
129
- version_requirements: *id007
130
- description: Classy web-development dressed in a DSL
78
+ - 1
79
+ - 3
80
+ - 3
81
+ version: 1.3.3
82
+ type: :runtime
83
+ version_requirements: *id003
84
+ description: Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.
131
85
  email: sinatrarb@googlegroups.com
132
86
  executables: []
133
87
 
134
88
  extensions: []
135
89
 
136
90
  extra_rdoc_files:
91
+ - README.de.rdoc
92
+ - README.es.rdoc
93
+ - README.fr.rdoc
94
+ - README.hu.rdoc
95
+ - README.jp.rdoc
96
+ - README.pt-br.rdoc
97
+ - README.pt-pt.rdoc
137
98
  - README.rdoc
99
+ - README.ru.rdoc
100
+ - README.zh.rdoc
138
101
  - LICENSE
139
102
  files:
103
+ - .yardopts
140
104
  - AUTHORS
141
105
  - CHANGES
106
+ - Gemfile
142
107
  - LICENSE
108
+ - README.de.rdoc
109
+ - README.es.rdoc
110
+ - README.fr.rdoc
111
+ - README.hu.rdoc
143
112
  - README.jp.rdoc
113
+ - README.pt-br.rdoc
114
+ - README.pt-pt.rdoc
144
115
  - README.rdoc
116
+ - README.ru.rdoc
117
+ - README.zh.rdoc
145
118
  - Rakefile
119
+ - examples/chat.rb
120
+ - examples/simple.rb
121
+ - examples/stream.ru
146
122
  - lib/sinatra.rb
147
123
  - lib/sinatra/base.rb
148
124
  - lib/sinatra/images/404.png
149
125
  - lib/sinatra/images/500.png
150
126
  - lib/sinatra/main.rb
151
127
  - lib/sinatra/showexceptions.rb
152
- - lib/sinatra/tilt.rb
128
+ - lib/sinatra/version.rb
153
129
  - sinatra-base.gemspec
154
130
  - test/base_test.rb
155
131
  - test/builder_test.rb
132
+ - test/coffee_test.rb
156
133
  - test/contest.rb
134
+ - test/creole_test.rb
135
+ - test/delegator_test.rb
136
+ - test/encoding_test.rb
157
137
  - test/erb_test.rb
158
- - test/erubis_test.rb
159
138
  - test/extensions_test.rb
160
139
  - test/filter_test.rb
161
140
  - test/haml_test.rb
162
141
  - test/helper.rb
163
142
  - test/helpers_test.rb
143
+ - test/integration/app.rb
144
+ - test/integration_helper.rb
145
+ - test/integration_test.rb
164
146
  - test/less_test.rb
147
+ - test/liquid_test.rb
165
148
  - test/mapped_error_test.rb
149
+ - test/markaby_test.rb
150
+ - test/markdown_test.rb
166
151
  - test/middleware_test.rb
152
+ - test/nokogiri_test.rb
167
153
  - test/public/favicon.ico
154
+ - test/rack_test.rb
155
+ - test/radius_test.rb
156
+ - test/rdoc_test.rb
157
+ - test/readme_test.rb
168
158
  - test/request_test.rb
169
159
  - test/response_test.rb
170
160
  - test/result_test.rb
171
161
  - test/route_added_hook_test.rb
172
162
  - test/routing_test.rb
173
163
  - test/sass_test.rb
164
+ - test/scss_test.rb
174
165
  - test/server_test.rb
175
166
  - test/settings_test.rb
176
167
  - test/sinatra_test.rb
168
+ - test/slim_test.rb
177
169
  - test/static_test.rb
170
+ - test/streaming_test.rb
178
171
  - test/templates_test.rb
172
+ - test/textile_test.rb
173
+ - test/views/a/in_a.str
174
+ - test/views/ascii.erb
175
+ - test/views/b/in_b.str
176
+ - test/views/calc.html.erb
179
177
  - test/views/error.builder
180
178
  - test/views/error.erb
181
- - test/views/error.erubis
182
179
  - test/views/error.haml
183
180
  - test/views/error.sass
181
+ - test/views/explicitly_nested.str
184
182
  - test/views/foo/hello.test
185
183
  - test/views/hello.builder
184
+ - test/views/hello.coffee
185
+ - test/views/hello.creole
186
186
  - test/views/hello.erb
187
- - test/views/hello.erubis
188
187
  - test/views/hello.haml
189
188
  - test/views/hello.less
189
+ - test/views/hello.liquid
190
+ - test/views/hello.mab
191
+ - test/views/hello.md
192
+ - test/views/hello.nokogiri
193
+ - test/views/hello.radius
194
+ - test/views/hello.rdoc
190
195
  - test/views/hello.sass
196
+ - test/views/hello.scss
197
+ - test/views/hello.slim
198
+ - test/views/hello.str
191
199
  - test/views/hello.test
200
+ - test/views/hello.textile
201
+ - test/views/hello.yajl
192
202
  - test/views/layout2.builder
193
203
  - test/views/layout2.erb
194
- - test/views/layout2.erubis
195
204
  - test/views/layout2.haml
205
+ - test/views/layout2.liquid
206
+ - test/views/layout2.mab
207
+ - test/views/layout2.nokogiri
208
+ - test/views/layout2.radius
209
+ - test/views/layout2.slim
210
+ - test/views/layout2.str
196
211
  - test/views/layout2.test
197
- homepage: http://sinatra.rubyforge.org
212
+ - test/views/nested.str
213
+ - test/views/utf8.erb
214
+ - test/yajl_test.rb
215
+ homepage: http://www.sinatrarb.com/
198
216
  licenses: []
199
217
 
200
218
  post_install_message:
@@ -227,31 +245,48 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
245
  version: "0"
228
246
  requirements: []
229
247
 
230
- rubyforge_project: sinatra
231
- rubygems_version: 1.8.18
248
+ rubyforge_project:
249
+ rubygems_version: 1.8.15
232
250
  signing_key:
233
- specification_version: 2
251
+ specification_version: 3
234
252
  summary: Classy web-development dressed in a DSL
235
253
  test_files:
236
254
  - test/base_test.rb
237
255
  - test/builder_test.rb
256
+ - test/coffee_test.rb
257
+ - test/creole_test.rb
258
+ - test/delegator_test.rb
259
+ - test/encoding_test.rb
238
260
  - test/erb_test.rb
239
- - test/erubis_test.rb
240
261
  - test/extensions_test.rb
241
262
  - test/filter_test.rb
242
263
  - test/haml_test.rb
243
264
  - test/helpers_test.rb
265
+ - test/integration_test.rb
244
266
  - test/less_test.rb
267
+ - test/liquid_test.rb
245
268
  - test/mapped_error_test.rb
269
+ - test/markaby_test.rb
270
+ - test/markdown_test.rb
246
271
  - test/middleware_test.rb
272
+ - test/nokogiri_test.rb
273
+ - test/rack_test.rb
274
+ - test/radius_test.rb
275
+ - test/rdoc_test.rb
276
+ - test/readme_test.rb
247
277
  - test/request_test.rb
248
278
  - test/response_test.rb
249
279
  - test/result_test.rb
250
280
  - test/route_added_hook_test.rb
251
281
  - test/routing_test.rb
252
282
  - test/sass_test.rb
283
+ - test/scss_test.rb
253
284
  - test/server_test.rb
254
285
  - test/settings_test.rb
255
286
  - test/sinatra_test.rb
287
+ - test/slim_test.rb
256
288
  - test/static_test.rb
289
+ - test/streaming_test.rb
257
290
  - test/templates_test.rb
291
+ - test/textile_test.rb
292
+ - test/yajl_test.rb