sinatra-base 1.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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