sinatra 1.1.4 → 1.2.0.a
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sinatra might be problematic. Click here for more details.
- data/AUTHORS +0 -9
- data/CHANGES +6 -29
- data/README.de.rdoc +23 -0
- data/README.es.rdoc +87 -205
- data/README.fr.rdoc +13 -0
- data/README.jp.rdoc +13 -0
- data/README.rdoc +86 -258
- data/README.ru.rdoc +63 -95
- data/README.zh.rdoc +13 -0
- data/Rakefile +21 -55
- data/lib/sinatra/base.rb +43 -44
- data/sinatra.gemspec +7 -4
- data/test/filter_test.rb +105 -1
- data/test/helpers_test.rb +7 -3
- data/test/markaby_test.rb +21 -0
- data/test/routing_test.rb +6 -18
- data/test/slim_test.rb +97 -0
- data/test/templates_test.rb +14 -4
- data/test/views/hello.slim +1 -0
- data/test/views/layout2.slim +3 -0
- metadata +98 -12
- data/test/views/calc.html.erb +0 -1
data/sinatra.gemspec
CHANGED
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
|
|
3
3
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
4
4
|
|
5
5
|
s.name = 'sinatra'
|
6
|
-
s.version = '1.
|
7
|
-
s.date = '
|
6
|
+
s.version = '1.2.0.a'
|
7
|
+
s.date = '2010-12-25'
|
8
8
|
|
9
9
|
s.description = "Classy web-development dressed in a DSL"
|
10
10
|
s.summary = "Classy web-development dressed in a DSL"
|
@@ -67,11 +67,11 @@ Gem::Specification.new do |s|
|
|
67
67
|
test/server_test.rb
|
68
68
|
test/settings_test.rb
|
69
69
|
test/sinatra_test.rb
|
70
|
+
test/slim_test.rb
|
70
71
|
test/static_test.rb
|
71
72
|
test/templates_test.rb
|
72
73
|
test/textile_test.rb
|
73
74
|
test/views/ascii.haml
|
74
|
-
test/views/calc.html.erb
|
75
75
|
test/views/error.builder
|
76
76
|
test/views/error.erb
|
77
77
|
test/views/error.erubis
|
@@ -93,6 +93,7 @@ Gem::Specification.new do |s|
|
|
93
93
|
test/views/hello.rdoc
|
94
94
|
test/views/hello.sass
|
95
95
|
test/views/hello.scss
|
96
|
+
test/views/hello.slim
|
96
97
|
test/views/hello.str
|
97
98
|
test/views/hello.test
|
98
99
|
test/views/hello.textile
|
@@ -104,6 +105,7 @@ Gem::Specification.new do |s|
|
|
104
105
|
test/views/layout2.mab
|
105
106
|
test/views/layout2.nokogiri
|
106
107
|
test/views/layout2.radius
|
108
|
+
test/views/layout2.slim
|
107
109
|
test/views/layout2.str
|
108
110
|
test/views/layout2.test
|
109
111
|
test/views/nested.str
|
@@ -115,7 +117,7 @@ Gem::Specification.new do |s|
|
|
115
117
|
|
116
118
|
s.extra_rdoc_files = %w[README.rdoc README.de.rdoc README.jp.rdoc README.fr.rdoc README.es.rdoc README.hu.rdoc README.zh.rdoc LICENSE]
|
117
119
|
s.add_dependency 'rack', '~> 1.1'
|
118
|
-
s.add_dependency 'tilt', '
|
120
|
+
s.add_dependency 'tilt', '~> 1.2'
|
119
121
|
s.add_development_dependency 'rake'
|
120
122
|
s.add_development_dependency 'shotgun', '~> 0.6'
|
121
123
|
s.add_development_dependency 'rack-test', '>= 0.5.6'
|
@@ -131,6 +133,7 @@ Gem::Specification.new do |s|
|
|
131
133
|
s.add_development_dependency 'coffee-script', '>= 2.0'
|
132
134
|
s.add_development_dependency 'rdoc'
|
133
135
|
s.add_development_dependency 'nokogiri'
|
136
|
+
s.add_development_dependency 'slim'
|
134
137
|
|
135
138
|
s.has_rdoc = true
|
136
139
|
s.homepage = "http://sinatra.rubyforge.org"
|
data/test/filter_test.rb
CHANGED
@@ -274,7 +274,7 @@ class AfterFilterTest < Test::Unit::TestCase
|
|
274
274
|
get '/foo/bar'
|
275
275
|
assert_equal subpath, 'bar'
|
276
276
|
end
|
277
|
-
|
277
|
+
|
278
278
|
it 'is possible to access url params from the route param' do
|
279
279
|
ran = false
|
280
280
|
mock_app do
|
@@ -287,4 +287,108 @@ class AfterFilterTest < Test::Unit::TestCase
|
|
287
287
|
get '/foo/bar'
|
288
288
|
assert ran
|
289
289
|
end
|
290
|
+
|
291
|
+
it 'is possible to apply host_name conditions to before filters with no path' do
|
292
|
+
ran = false
|
293
|
+
mock_app do
|
294
|
+
before(:host_name => 'example.com') { ran = true }
|
295
|
+
get('/') { 'welcome' }
|
296
|
+
end
|
297
|
+
get '/', {}, { 'HTTP_HOST' => 'example.org' }
|
298
|
+
assert !ran
|
299
|
+
get '/', {}, { 'HTTP_HOST' => 'example.com' }
|
300
|
+
assert ran
|
301
|
+
end
|
302
|
+
|
303
|
+
it 'is possible to apply host_name conditions to before filters with a path' do
|
304
|
+
ran = false
|
305
|
+
mock_app do
|
306
|
+
before('/foo', :host_name => 'example.com') { ran = true }
|
307
|
+
get('/') { 'welcome' }
|
308
|
+
end
|
309
|
+
get '/', {}, { 'HTTP_HOST' => 'example.com' }
|
310
|
+
assert !ran
|
311
|
+
get '/foo', {}, { 'HTTP_HOST' => 'example.org' }
|
312
|
+
assert !ran
|
313
|
+
get '/foo', {}, { 'HTTP_HOST' => 'example.com' }
|
314
|
+
assert ran
|
315
|
+
end
|
316
|
+
|
317
|
+
it 'is possible to apply host_name conditions to after filters with no path' do
|
318
|
+
ran = false
|
319
|
+
mock_app do
|
320
|
+
after(:host_name => 'example.com') { ran = true }
|
321
|
+
get('/') { 'welcome' }
|
322
|
+
end
|
323
|
+
get '/', {}, { 'HTTP_HOST' => 'example.org' }
|
324
|
+
assert !ran
|
325
|
+
get '/', {}, { 'HTTP_HOST' => 'example.com' }
|
326
|
+
assert ran
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'is possible to apply host_name conditions to after filters with a path' do
|
330
|
+
ran = false
|
331
|
+
mock_app do
|
332
|
+
after('/foo', :host_name => 'example.com') { ran = true }
|
333
|
+
get('/') { 'welcome' }
|
334
|
+
end
|
335
|
+
get '/', {}, { 'HTTP_HOST' => 'example.com' }
|
336
|
+
assert !ran
|
337
|
+
get '/foo', {}, { 'HTTP_HOST' => 'example.org' }
|
338
|
+
assert !ran
|
339
|
+
get '/foo', {}, { 'HTTP_HOST' => 'example.com' }
|
340
|
+
assert ran
|
341
|
+
end
|
342
|
+
|
343
|
+
it 'is possible to apply user_agent conditions to before filters with no path' do
|
344
|
+
ran = false
|
345
|
+
mock_app do
|
346
|
+
before(:user_agent => /foo/) { ran = true }
|
347
|
+
get('/') { 'welcome' }
|
348
|
+
end
|
349
|
+
get '/', {}, { 'HTTP_USER_AGENT' => 'bar' }
|
350
|
+
assert !ran
|
351
|
+
get '/', {}, { 'HTTP_USER_AGENT' => 'foo' }
|
352
|
+
assert ran
|
353
|
+
end
|
354
|
+
|
355
|
+
it 'is possible to apply user_agent conditions to before filters with a path' do
|
356
|
+
ran = false
|
357
|
+
mock_app do
|
358
|
+
before('/foo', :user_agent => /foo/) { ran = true }
|
359
|
+
get('/') { 'welcome' }
|
360
|
+
end
|
361
|
+
get '/', {}, { 'HTTP_USER_AGENT' => 'foo' }
|
362
|
+
assert !ran
|
363
|
+
get '/foo', {}, { 'HTTP_USER_AGENT' => 'bar' }
|
364
|
+
assert !ran
|
365
|
+
get '/foo', {}, { 'HTTP_USER_AGENT' => 'foo' }
|
366
|
+
assert ran
|
367
|
+
end
|
368
|
+
|
369
|
+
it 'is possible to apply user_agent conditions to after filters with no path' do
|
370
|
+
ran = false
|
371
|
+
mock_app do
|
372
|
+
after(:user_agent => /foo/) { ran = true }
|
373
|
+
get('/') { 'welcome' }
|
374
|
+
end
|
375
|
+
get '/', {}, { 'HTTP_USER_AGENT' => 'bar' }
|
376
|
+
assert !ran
|
377
|
+
get '/', {}, { 'HTTP_USER_AGENT' => 'foo' }
|
378
|
+
assert ran
|
379
|
+
end
|
380
|
+
|
381
|
+
it 'is possible to apply user_agent conditions to before filters with a path' do
|
382
|
+
ran = false
|
383
|
+
mock_app do
|
384
|
+
after('/foo', :user_agent => /foo/) { ran = true }
|
385
|
+
get('/') { 'welcome' }
|
386
|
+
end
|
387
|
+
get '/', {}, { 'HTTP_USER_AGENT' => 'foo' }
|
388
|
+
assert !ran
|
389
|
+
get '/foo', {}, { 'HTTP_USER_AGENT' => 'bar' }
|
390
|
+
assert !ran
|
391
|
+
get '/foo', {}, { 'HTTP_USER_AGENT' => 'foo' }
|
392
|
+
assert ran
|
393
|
+
end
|
290
394
|
end
|
data/test/helpers_test.rb
CHANGED
@@ -419,6 +419,13 @@ class HelpersTest < Test::Unit::TestCase
|
|
419
419
|
assert_equal File.mtime(@file).httpdate, response['Last-Modified']
|
420
420
|
end
|
421
421
|
|
422
|
+
it 'allows passing in a differen Last-Modified response header with :last_modified' do
|
423
|
+
time = Time.now
|
424
|
+
send_file_app :last_modified => time
|
425
|
+
get '/file.txt'
|
426
|
+
assert_equal time.httpdate, response['Last-Modified']
|
427
|
+
end
|
428
|
+
|
422
429
|
it "returns a 404 when not found" do
|
423
430
|
mock_app {
|
424
431
|
get '/' do
|
@@ -592,9 +599,6 @@ class HelpersTest < Test::Unit::TestCase
|
|
592
599
|
get '/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2010 23:43:52 GMT' }
|
593
600
|
assert_equal 200, status
|
594
601
|
assert_equal 'foo', body
|
595
|
-
get '/compare', {}, { 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 26 Sep 2100 23:43:52 GMT' }
|
596
|
-
assert_equal 304, status
|
597
|
-
assert_equal '', body
|
598
602
|
end
|
599
603
|
end
|
600
604
|
|
data/test/markaby_test.rb
CHANGED
@@ -40,6 +40,27 @@ class MarkabyTest < Test::Unit::TestCase
|
|
40
40
|
assert_equal "<h1>Markaby Layout!</h1><p>Hello World</p>", body
|
41
41
|
end
|
42
42
|
|
43
|
+
it 'renders inline markaby blocks' do
|
44
|
+
markaby_app { markaby { h1 'Hiya' } }
|
45
|
+
assert ok?
|
46
|
+
assert_equal "<h1>Hiya</h1>", body
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'renders inline markaby blocks with inline layouts' do
|
50
|
+
markaby_app do
|
51
|
+
settings.layout { 'h1 { text "THIS. IS. "; yield }' }
|
52
|
+
markaby { em 'SPARTA' }
|
53
|
+
end
|
54
|
+
assert ok?
|
55
|
+
assert_equal "<h1>THIS. IS. <em>SPARTA</em></h1>", body
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'renders inline markaby blocks with file layouts' do
|
59
|
+
markaby_app { markaby(:layout => :layout2) { text "Hello World" } }
|
60
|
+
assert ok?
|
61
|
+
assert_equal "<h1>Markaby Layout!</h1><p>Hello World</p>", body
|
62
|
+
end
|
63
|
+
|
43
64
|
it "raises error if template not found" do
|
44
65
|
mock_app { get('/') { markaby :no_such_template } }
|
45
66
|
assert_raise(Errno::ENOENT) { get('/') }
|
data/test/routing_test.rb
CHANGED
@@ -23,7 +23,7 @@ class RegexpLookAlike
|
|
23
23
|
end
|
24
24
|
|
25
25
|
class RoutingTest < Test::Unit::TestCase
|
26
|
-
%w[get put post delete].each do |verb|
|
26
|
+
%w[get put post delete options].each do |verb|
|
27
27
|
it "defines #{verb.upcase} request handlers with #{verb}" do
|
28
28
|
mock_app {
|
29
29
|
send verb, '/hello' do
|
@@ -247,7 +247,7 @@ class RoutingTest < Test::Unit::TestCase
|
|
247
247
|
assert_equal 'right on', body
|
248
248
|
end
|
249
249
|
|
250
|
-
it "literally matches
|
250
|
+
it "literally matches . in paths" do
|
251
251
|
route_def '/test.bar'
|
252
252
|
|
253
253
|
get '/test.bar'
|
@@ -256,14 +256,14 @@ class RoutingTest < Test::Unit::TestCase
|
|
256
256
|
assert not_found?
|
257
257
|
end
|
258
258
|
|
259
|
-
it "literally matches
|
259
|
+
it "literally matches $ in paths" do
|
260
260
|
route_def '/test$/'
|
261
261
|
|
262
262
|
get '/test$/'
|
263
263
|
assert ok?
|
264
264
|
end
|
265
265
|
|
266
|
-
it "literally matches
|
266
|
+
it "literally matches + in paths" do
|
267
267
|
route_def '/te+st/'
|
268
268
|
|
269
269
|
get '/te%2Bst/'
|
@@ -272,7 +272,7 @@ class RoutingTest < Test::Unit::TestCase
|
|
272
272
|
assert not_found?
|
273
273
|
end
|
274
274
|
|
275
|
-
it "literally matches
|
275
|
+
it "literally matches () in paths" do
|
276
276
|
route_def '/test(bar)/'
|
277
277
|
|
278
278
|
get '/test(bar)/'
|
@@ -611,18 +611,6 @@ class RoutingTest < Test::Unit::TestCase
|
|
611
611
|
assert_equal 'Hello World', body
|
612
612
|
end
|
613
613
|
|
614
|
-
it "treats missing user agent like an empty string" do
|
615
|
-
mock_app do
|
616
|
-
user_agent(/.*/)
|
617
|
-
get '/' do
|
618
|
-
"Hello World"
|
619
|
-
end
|
620
|
-
end
|
621
|
-
get '/'
|
622
|
-
assert_equal 200, status
|
623
|
-
assert_equal 'Hello World', body
|
624
|
-
end
|
625
|
-
|
626
614
|
it "makes captures in user agent pattern available in params[:agent]" do
|
627
615
|
mock_app {
|
628
616
|
user_agent(/Foo (.*)/)
|
@@ -648,7 +636,7 @@ class RoutingTest < Test::Unit::TestCase
|
|
648
636
|
get '/', {}, { 'HTTP_ACCEPT' => 'application/xml' }
|
649
637
|
assert ok?
|
650
638
|
assert_equal 'application/xml', body
|
651
|
-
assert_equal 'application/xml
|
639
|
+
assert_equal 'application/xml', response.headers['Content-Type']
|
652
640
|
|
653
641
|
get '/', {}, { :accept => 'text/html' }
|
654
642
|
assert !ok?
|
data/test/slim_test.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'slim'
|
5
|
+
|
6
|
+
class SlimTest < Test::Unit::TestCase
|
7
|
+
def slim_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 slim strings' do
|
16
|
+
slim_app { slim "h1 Hiya\n" }
|
17
|
+
assert ok?
|
18
|
+
assert_equal "<h1>Hiya</h1>", body
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'renders .slim files in views path' do
|
22
|
+
slim_app { slim :hello }
|
23
|
+
assert ok?
|
24
|
+
assert_equal "<h1>Hello From Slim</h1>", body
|
25
|
+
end
|
26
|
+
|
27
|
+
it "renders with inline layouts" do
|
28
|
+
mock_app {
|
29
|
+
layout { %(h1\n | THIS. IS. \n == yield.upcase ) }
|
30
|
+
get('/') { slim 'em Sparta' }
|
31
|
+
}
|
32
|
+
get '/'
|
33
|
+
assert ok?
|
34
|
+
assert_equal "<h1>THIS. IS. <EM>SPARTA</EM></h1>", body
|
35
|
+
end
|
36
|
+
|
37
|
+
it "renders with file layouts" do
|
38
|
+
slim_app {
|
39
|
+
slim '| Hello World', :layout => :layout2
|
40
|
+
}
|
41
|
+
assert ok?
|
42
|
+
assert_equal "<h1>Slim Layout!</h1><p>Hello World</p>", body
|
43
|
+
end
|
44
|
+
|
45
|
+
it "raises error if template not found" do
|
46
|
+
mock_app {
|
47
|
+
get('/') { slim :no_such_template }
|
48
|
+
}
|
49
|
+
assert_raise(Errno::ENOENT) { get('/') }
|
50
|
+
end
|
51
|
+
|
52
|
+
HTML4_DOCTYPE = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"
|
53
|
+
|
54
|
+
it "passes slim options to the slim engine" do
|
55
|
+
mock_app {
|
56
|
+
get '/' do
|
57
|
+
slim "! doctype html\nh1 Hello World", :format => :html4
|
58
|
+
end
|
59
|
+
}
|
60
|
+
get '/'
|
61
|
+
assert ok?
|
62
|
+
assert_equal "#{HTML4_DOCTYPE}<h1>Hello World</h1>", body
|
63
|
+
end
|
64
|
+
|
65
|
+
it "passes default slim options to the slim engine" do
|
66
|
+
mock_app {
|
67
|
+
set :slim, {:format => :html4}
|
68
|
+
get '/' do
|
69
|
+
slim "! doctype html\nh1 Hello World"
|
70
|
+
end
|
71
|
+
}
|
72
|
+
get '/'
|
73
|
+
assert ok?
|
74
|
+
assert_equal "#{HTML4_DOCTYPE}<h1>Hello World</h1>", body
|
75
|
+
end
|
76
|
+
|
77
|
+
it "merges the default slim options with the overrides and passes them to the slim engine" do
|
78
|
+
mock_app {
|
79
|
+
set :slim, {:format => :html4}
|
80
|
+
get '/' do
|
81
|
+
slim "! doctype html\nh1.header Hello World"
|
82
|
+
end
|
83
|
+
get '/html5' do
|
84
|
+
slim "! doctype html\nh1.header Hello World", :format => :html5
|
85
|
+
end
|
86
|
+
}
|
87
|
+
get '/'
|
88
|
+
assert ok?
|
89
|
+
assert_match(/^#{HTML4_DOCTYPE}/, body)
|
90
|
+
get '/html5'
|
91
|
+
assert ok?
|
92
|
+
assert_equal "<!DOCTYPE html><h1 class=\"header\">Hello World</h1>", body
|
93
|
+
end
|
94
|
+
end
|
95
|
+
rescue
|
96
|
+
warn "#{$!.to_s}: skipping slim tests"
|
97
|
+
end
|
data/test/templates_test.rb
CHANGED
@@ -208,10 +208,20 @@ class TemplatesTest < Test::Unit::TestCase
|
|
208
208
|
assert_equal 'template in subclass', body
|
209
209
|
end
|
210
210
|
|
211
|
-
it "is possible to
|
212
|
-
|
213
|
-
|
214
|
-
|
211
|
+
it "is possible to use a different engine for the layout than for the template itself explicitely" do
|
212
|
+
render_app do
|
213
|
+
settings.template(:layout) { 'Hello <%= yield %>!' }
|
214
|
+
render :str, "<%= 'World' %>", :layout_engine => :erb
|
215
|
+
end
|
216
|
+
assert_equal "Hello <%= 'World' %>!", body
|
217
|
+
end
|
218
|
+
|
219
|
+
it "is possible to use a different engine for the layout than for the template itself globally" do
|
220
|
+
render_app :str => { :layout_engine => :erb } do
|
221
|
+
settings.template(:layout) { 'Hello <%= yield %>!' }
|
222
|
+
render :str, "<%= 'World' %>"
|
223
|
+
end
|
224
|
+
assert_equal "Hello <%= 'World' %>!", body
|
215
225
|
end
|
216
226
|
end
|
217
227
|
|
@@ -0,0 +1 @@
|
|
1
|
+
h1 Hello From Slim
|
metadata
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: 42
|
5
|
+
prerelease: true
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
- a
|
11
|
+
version: 1.2.0.a
|
6
12
|
platform: ruby
|
7
13
|
authors:
|
8
14
|
- Blake Mizerany
|
@@ -13,7 +19,7 @@ autorequire:
|
|
13
19
|
bindir: bin
|
14
20
|
cert_chain: []
|
15
21
|
|
16
|
-
date:
|
22
|
+
date: 2010-12-25 00:00:00 +01:00
|
17
23
|
default_executable:
|
18
24
|
dependencies:
|
19
25
|
- !ruby/object:Gem::Dependency
|
@@ -24,6 +30,10 @@ dependencies:
|
|
24
30
|
requirements:
|
25
31
|
- - ~>
|
26
32
|
- !ruby/object:Gem::Version
|
33
|
+
hash: 13
|
34
|
+
segments:
|
35
|
+
- 1
|
36
|
+
- 1
|
27
37
|
version: "1.1"
|
28
38
|
type: :runtime
|
29
39
|
version_requirements: *id001
|
@@ -33,12 +43,13 @@ dependencies:
|
|
33
43
|
requirement: &id002 !ruby/object:Gem::Requirement
|
34
44
|
none: false
|
35
45
|
requirements:
|
36
|
-
- -
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: 1.2.2
|
39
|
-
- - <
|
46
|
+
- - ~>
|
40
47
|
- !ruby/object:Gem::Version
|
41
|
-
|
48
|
+
hash: 11
|
49
|
+
segments:
|
50
|
+
- 1
|
51
|
+
- 2
|
52
|
+
version: "1.2"
|
42
53
|
type: :runtime
|
43
54
|
version_requirements: *id002
|
44
55
|
- !ruby/object:Gem::Dependency
|
@@ -49,6 +60,9 @@ dependencies:
|
|
49
60
|
requirements:
|
50
61
|
- - ">="
|
51
62
|
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
52
66
|
version: "0"
|
53
67
|
type: :development
|
54
68
|
version_requirements: *id003
|
@@ -60,6 +74,10 @@ dependencies:
|
|
60
74
|
requirements:
|
61
75
|
- - ~>
|
62
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 7
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
- 6
|
63
81
|
version: "0.6"
|
64
82
|
type: :development
|
65
83
|
version_requirements: *id004
|
@@ -71,6 +89,11 @@ dependencies:
|
|
71
89
|
requirements:
|
72
90
|
- - ">="
|
73
91
|
- !ruby/object:Gem::Version
|
92
|
+
hash: 7
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
- 5
|
96
|
+
- 6
|
74
97
|
version: 0.5.6
|
75
98
|
type: :development
|
76
99
|
version_requirements: *id005
|
@@ -82,6 +105,10 @@ dependencies:
|
|
82
105
|
requirements:
|
83
106
|
- - ">="
|
84
107
|
- !ruby/object:Gem::Version
|
108
|
+
hash: 7
|
109
|
+
segments:
|
110
|
+
- 3
|
111
|
+
- 0
|
85
112
|
version: "3.0"
|
86
113
|
type: :development
|
87
114
|
version_requirements: *id006
|
@@ -93,6 +120,9 @@ dependencies:
|
|
93
120
|
requirements:
|
94
121
|
- - ">="
|
95
122
|
- !ruby/object:Gem::Version
|
123
|
+
hash: 3
|
124
|
+
segments:
|
125
|
+
- 0
|
96
126
|
version: "0"
|
97
127
|
type: :development
|
98
128
|
version_requirements: *id007
|
@@ -104,6 +134,9 @@ dependencies:
|
|
104
134
|
requirements:
|
105
135
|
- - ">="
|
106
136
|
- !ruby/object:Gem::Version
|
137
|
+
hash: 3
|
138
|
+
segments:
|
139
|
+
- 0
|
107
140
|
version: "0"
|
108
141
|
type: :development
|
109
142
|
version_requirements: *id008
|
@@ -115,6 +148,9 @@ dependencies:
|
|
115
148
|
requirements:
|
116
149
|
- - ">="
|
117
150
|
- !ruby/object:Gem::Version
|
151
|
+
hash: 3
|
152
|
+
segments:
|
153
|
+
- 0
|
118
154
|
version: "0"
|
119
155
|
type: :development
|
120
156
|
version_requirements: *id009
|
@@ -126,6 +162,9 @@ dependencies:
|
|
126
162
|
requirements:
|
127
163
|
- - ">="
|
128
164
|
- !ruby/object:Gem::Version
|
165
|
+
hash: 3
|
166
|
+
segments:
|
167
|
+
- 0
|
129
168
|
version: "0"
|
130
169
|
type: :development
|
131
170
|
version_requirements: *id010
|
@@ -137,6 +176,9 @@ dependencies:
|
|
137
176
|
requirements:
|
138
177
|
- - ">="
|
139
178
|
- !ruby/object:Gem::Version
|
179
|
+
hash: 3
|
180
|
+
segments:
|
181
|
+
- 0
|
140
182
|
version: "0"
|
141
183
|
type: :development
|
142
184
|
version_requirements: *id011
|
@@ -148,6 +190,9 @@ dependencies:
|
|
148
190
|
requirements:
|
149
191
|
- - ">="
|
150
192
|
- !ruby/object:Gem::Version
|
193
|
+
hash: 3
|
194
|
+
segments:
|
195
|
+
- 0
|
151
196
|
version: "0"
|
152
197
|
type: :development
|
153
198
|
version_requirements: *id012
|
@@ -159,6 +204,9 @@ dependencies:
|
|
159
204
|
requirements:
|
160
205
|
- - ">="
|
161
206
|
- !ruby/object:Gem::Version
|
207
|
+
hash: 3
|
208
|
+
segments:
|
209
|
+
- 0
|
162
210
|
version: "0"
|
163
211
|
type: :development
|
164
212
|
version_requirements: *id013
|
@@ -170,6 +218,9 @@ dependencies:
|
|
170
218
|
requirements:
|
171
219
|
- - ">="
|
172
220
|
- !ruby/object:Gem::Version
|
221
|
+
hash: 3
|
222
|
+
segments:
|
223
|
+
- 0
|
173
224
|
version: "0"
|
174
225
|
type: :development
|
175
226
|
version_requirements: *id014
|
@@ -181,6 +232,10 @@ dependencies:
|
|
181
232
|
requirements:
|
182
233
|
- - ">="
|
183
234
|
- !ruby/object:Gem::Version
|
235
|
+
hash: 3
|
236
|
+
segments:
|
237
|
+
- 2
|
238
|
+
- 0
|
184
239
|
version: "2.0"
|
185
240
|
type: :development
|
186
241
|
version_requirements: *id015
|
@@ -192,6 +247,9 @@ dependencies:
|
|
192
247
|
requirements:
|
193
248
|
- - ">="
|
194
249
|
- !ruby/object:Gem::Version
|
250
|
+
hash: 3
|
251
|
+
segments:
|
252
|
+
- 0
|
195
253
|
version: "0"
|
196
254
|
type: :development
|
197
255
|
version_requirements: *id016
|
@@ -203,9 +261,26 @@ dependencies:
|
|
203
261
|
requirements:
|
204
262
|
- - ">="
|
205
263
|
- !ruby/object:Gem::Version
|
264
|
+
hash: 3
|
265
|
+
segments:
|
266
|
+
- 0
|
206
267
|
version: "0"
|
207
268
|
type: :development
|
208
269
|
version_requirements: *id017
|
270
|
+
- !ruby/object:Gem::Dependency
|
271
|
+
name: slim
|
272
|
+
prerelease: false
|
273
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
274
|
+
none: false
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
hash: 3
|
279
|
+
segments:
|
280
|
+
- 0
|
281
|
+
version: "0"
|
282
|
+
type: :development
|
283
|
+
version_requirements: *id018
|
209
284
|
description: Classy web-development dressed in a DSL
|
210
285
|
email: sinatrarb@googlegroups.com
|
211
286
|
executables: []
|
@@ -275,11 +350,11 @@ files:
|
|
275
350
|
- test/server_test.rb
|
276
351
|
- test/settings_test.rb
|
277
352
|
- test/sinatra_test.rb
|
353
|
+
- test/slim_test.rb
|
278
354
|
- test/static_test.rb
|
279
355
|
- test/templates_test.rb
|
280
356
|
- test/textile_test.rb
|
281
357
|
- test/views/ascii.haml
|
282
|
-
- test/views/calc.html.erb
|
283
358
|
- test/views/error.builder
|
284
359
|
- test/views/error.erb
|
285
360
|
- test/views/error.erubis
|
@@ -301,6 +376,7 @@ files:
|
|
301
376
|
- test/views/hello.rdoc
|
302
377
|
- test/views/hello.sass
|
303
378
|
- test/views/hello.scss
|
379
|
+
- test/views/hello.slim
|
304
380
|
- test/views/hello.str
|
305
381
|
- test/views/hello.test
|
306
382
|
- test/views/hello.textile
|
@@ -312,6 +388,7 @@ files:
|
|
312
388
|
- test/views/layout2.mab
|
313
389
|
- test/views/layout2.nokogiri
|
314
390
|
- test/views/layout2.radius
|
391
|
+
- test/views/layout2.slim
|
315
392
|
- test/views/layout2.str
|
316
393
|
- test/views/layout2.test
|
317
394
|
- test/views/nested.str
|
@@ -335,17 +412,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
335
412
|
requirements:
|
336
413
|
- - ">="
|
337
414
|
- !ruby/object:Gem::Version
|
415
|
+
hash: 3
|
416
|
+
segments:
|
417
|
+
- 0
|
338
418
|
version: "0"
|
339
419
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
340
420
|
none: false
|
341
421
|
requirements:
|
342
|
-
- - "
|
422
|
+
- - ">"
|
343
423
|
- !ruby/object:Gem::Version
|
344
|
-
|
424
|
+
hash: 25
|
425
|
+
segments:
|
426
|
+
- 1
|
427
|
+
- 3
|
428
|
+
- 1
|
429
|
+
version: 1.3.1
|
345
430
|
requirements: []
|
346
431
|
|
347
432
|
rubyforge_project: sinatra
|
348
|
-
rubygems_version: 1.
|
433
|
+
rubygems_version: 1.3.7
|
349
434
|
signing_key:
|
350
435
|
specification_version: 2
|
351
436
|
summary: Classy web-development dressed in a DSL
|
@@ -379,6 +464,7 @@ test_files:
|
|
379
464
|
- test/server_test.rb
|
380
465
|
- test/settings_test.rb
|
381
466
|
- test/sinatra_test.rb
|
467
|
+
- test/slim_test.rb
|
382
468
|
- test/static_test.rb
|
383
469
|
- test/templates_test.rb
|
384
470
|
- test/textile_test.rb
|