sinatra 1.4.8 → 2.0.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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +111 -47
  3. data/CONTRIBUTING.md +1 -1
  4. data/Gemfile +41 -49
  5. data/LICENSE +4 -1
  6. data/MAINTENANCE.md +42 -0
  7. data/README.de.md +644 -436
  8. data/README.es.md +6 -6
  9. data/README.fr.md +9 -9
  10. data/README.hu.md +37 -3
  11. data/README.ja.md +103 -45
  12. data/README.ko.md +8 -8
  13. data/README.md +471 -363
  14. data/README.pt-br.md +3 -3
  15. data/README.pt-pt.md +2 -2
  16. data/README.ru.md +42 -64
  17. data/README.zh.md +8 -8
  18. data/Rakefile +72 -49
  19. data/SECURITY.md +35 -0
  20. data/lib/sinatra/base.rb +137 -195
  21. data/lib/sinatra/indifferent_hash.rb +150 -0
  22. data/lib/sinatra/main.rb +1 -0
  23. data/lib/sinatra/show_exceptions.rb +63 -55
  24. data/lib/sinatra/version.rb +1 -1
  25. data/sinatra.gemspec +19 -7
  26. metadata +30 -164
  27. data/lib/sinatra/ext.rb +0 -17
  28. data/test/asciidoctor_test.rb +0 -72
  29. data/test/base_test.rb +0 -167
  30. data/test/builder_test.rb +0 -91
  31. data/test/coffee_test.rb +0 -96
  32. data/test/compile_test.rb +0 -183
  33. data/test/contest.rb +0 -91
  34. data/test/creole_test.rb +0 -65
  35. data/test/delegator_test.rb +0 -160
  36. data/test/encoding_test.rb +0 -20
  37. data/test/erb_test.rb +0 -116
  38. data/test/extensions_test.rb +0 -98
  39. data/test/filter_test.rb +0 -487
  40. data/test/haml_test.rb +0 -109
  41. data/test/helper.rb +0 -132
  42. data/test/helpers_test.rb +0 -1917
  43. data/test/integration/app.rb +0 -79
  44. data/test/integration_helper.rb +0 -236
  45. data/test/integration_test.rb +0 -104
  46. data/test/less_test.rb +0 -69
  47. data/test/liquid_test.rb +0 -77
  48. data/test/mapped_error_test.rb +0 -285
  49. data/test/markaby_test.rb +0 -80
  50. data/test/markdown_test.rb +0 -85
  51. data/test/mediawiki_test.rb +0 -68
  52. data/test/middleware_test.rb +0 -68
  53. data/test/nokogiri_test.rb +0 -67
  54. data/test/public/favicon.ico +0 -0
  55. data/test/public/hello+world.txt +0 -1
  56. data/test/rabl_test.rb +0 -89
  57. data/test/rack_test.rb +0 -45
  58. data/test/radius_test.rb +0 -59
  59. data/test/rdoc_test.rb +0 -66
  60. data/test/readme_test.rb +0 -130
  61. data/test/request_test.rb +0 -100
  62. data/test/response_test.rb +0 -63
  63. data/test/result_test.rb +0 -76
  64. data/test/route_added_hook_test.rb +0 -59
  65. data/test/routing_test.rb +0 -1456
  66. data/test/sass_test.rb +0 -115
  67. data/test/scss_test.rb +0 -88
  68. data/test/server_test.rb +0 -56
  69. data/test/settings_test.rb +0 -582
  70. data/test/sinatra_test.rb +0 -12
  71. data/test/slim_test.rb +0 -102
  72. data/test/static_test.rb +0 -266
  73. data/test/streaming_test.rb +0 -149
  74. data/test/stylus_test.rb +0 -90
  75. data/test/templates_test.rb +0 -382
  76. data/test/textile_test.rb +0 -65
  77. data/test/views/a/in_a.str +0 -1
  78. data/test/views/ascii.erb +0 -2
  79. data/test/views/b/in_b.str +0 -1
  80. data/test/views/calc.html.erb +0 -1
  81. data/test/views/error.builder +0 -3
  82. data/test/views/error.erb +0 -3
  83. data/test/views/error.haml +0 -3
  84. data/test/views/error.sass +0 -2
  85. data/test/views/explicitly_nested.str +0 -1
  86. data/test/views/foo/hello.test +0 -1
  87. data/test/views/hello.asciidoc +0 -1
  88. data/test/views/hello.builder +0 -1
  89. data/test/views/hello.coffee +0 -1
  90. data/test/views/hello.creole +0 -1
  91. data/test/views/hello.erb +0 -1
  92. data/test/views/hello.haml +0 -1
  93. data/test/views/hello.less +0 -5
  94. data/test/views/hello.liquid +0 -1
  95. data/test/views/hello.mab +0 -1
  96. data/test/views/hello.md +0 -1
  97. data/test/views/hello.mediawiki +0 -1
  98. data/test/views/hello.nokogiri +0 -1
  99. data/test/views/hello.rabl +0 -2
  100. data/test/views/hello.radius +0 -1
  101. data/test/views/hello.rdoc +0 -1
  102. data/test/views/hello.sass +0 -2
  103. data/test/views/hello.scss +0 -3
  104. data/test/views/hello.slim +0 -1
  105. data/test/views/hello.str +0 -1
  106. data/test/views/hello.styl +0 -2
  107. data/test/views/hello.test +0 -1
  108. data/test/views/hello.textile +0 -1
  109. data/test/views/hello.wlang +0 -1
  110. data/test/views/hello.yajl +0 -1
  111. data/test/views/layout2.builder +0 -3
  112. data/test/views/layout2.erb +0 -2
  113. data/test/views/layout2.haml +0 -2
  114. data/test/views/layout2.liquid +0 -2
  115. data/test/views/layout2.mab +0 -2
  116. data/test/views/layout2.nokogiri +0 -3
  117. data/test/views/layout2.rabl +0 -3
  118. data/test/views/layout2.radius +0 -2
  119. data/test/views/layout2.slim +0 -3
  120. data/test/views/layout2.str +0 -2
  121. data/test/views/layout2.test +0 -1
  122. data/test/views/layout2.wlang +0 -2
  123. data/test/views/nested.str +0 -1
  124. data/test/views/utf8.erb +0 -2
  125. data/test/wlang_test.rb +0 -87
  126. data/test/yajl_test.rb +0 -86
data/test/wlang_test.rb DELETED
@@ -1,87 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- begin
4
- require 'wlang'
5
-
6
- class WLangTest < Minitest::Test
7
- def engine
8
- Tilt::WLangTemplate
9
- end
10
-
11
- def wlang_app(&block)
12
- mock_app {
13
- set :views, File.dirname(__FILE__) + '/views'
14
- get '/', &block
15
- }
16
- get '/'
17
- end
18
-
19
- it 'uses the correct engine' do
20
- assert_equal engine, Tilt[:wlang]
21
- end
22
-
23
- it 'renders .wlang files in views path' do
24
- wlang_app { wlang :hello }
25
- assert ok?
26
- assert_equal "Hello from wlang!\n", body
27
- end
28
-
29
- it 'renders in the app instance scope' do
30
- mock_app do
31
- helpers do
32
- def who; "world"; end
33
- end
34
- get('/') { wlang 'Hello +{who}!' }
35
- end
36
- get '/'
37
- assert ok?
38
- assert_equal 'Hello world!', body
39
- end
40
-
41
- it 'takes a :locals option' do
42
- wlang_app do
43
- locals = {:foo => 'Bar'}
44
- wlang 'Hello ${foo}!', :locals => locals
45
- end
46
- assert ok?
47
- assert_equal 'Hello Bar!', body
48
- end
49
-
50
- it "renders with inline layouts" do
51
- mock_app do
52
- layout { 'THIS. IS. +{yield.upcase}!' }
53
- get('/') { wlang 'Sparta' }
54
- end
55
- get '/'
56
- assert ok?
57
- assert_equal 'THIS. IS. SPARTA!', body
58
- end
59
-
60
- it "renders with file layouts" do
61
- wlang_app { wlang 'Hello World', :layout => :layout2 }
62
- assert ok?
63
- assert_body "WLang Layout!\nHello World"
64
- end
65
-
66
- it "can rendered truly nested layouts by accepting a layout and a block with the contents" do
67
- mock_app do
68
- template(:main_outer_layout) { "<h1>Title</h1>\n>{ yield }" }
69
- template(:an_inner_layout) { "<h2>Subtitle</h2>\n>{ yield }" }
70
- template(:a_page) { "<p>Contents.</p>\n" }
71
- get('/') do
72
- wlang :main_outer_layout, :layout => false do
73
- wlang :an_inner_layout do
74
- wlang :a_page
75
- end
76
- end
77
- end
78
- end
79
- get '/'
80
- assert ok?
81
- assert_body "<h1>Title</h1>\n<h2>Subtitle</h2>\n<p>Contents.</p>\n"
82
- end
83
- end
84
-
85
- rescue LoadError
86
- warn "#{$!.to_s}: skipping wlang tests"
87
- end
data/test/yajl_test.rb DELETED
@@ -1,86 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- begin
4
- require 'yajl'
5
-
6
- class YajlTest < Minitest::Test
7
- def yajl_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 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 { get('/') { yajl(:no_such_template) } }
29
- assert_raises(Errno::ENOENT) { get('/') }
30
- end
31
-
32
- it 'accepts a :locals option' do
33
- yajl_app do
34
- locals = { :object => { :foo => 'bar' } }
35
- yajl 'json = object', :locals => locals
36
- end
37
- assert ok?
38
- assert_body '{"foo":"bar"}'
39
- end
40
-
41
- it 'accepts a :scope option' do
42
- yajl_app do
43
- scope = { :object => { :foo => 'bar' } }
44
- yajl 'json = self[:object]', :scope => scope
45
- end
46
- assert ok?
47
- assert_body '{"foo":"bar"}'
48
- end
49
-
50
- it 'decorates the json with a callback' do
51
- yajl_app do
52
- yajl(
53
- 'json = { :foo => "bar" }',
54
- { :callback => 'baz' }
55
- )
56
- end
57
- assert ok?
58
- assert_body 'baz({"foo":"bar"});'
59
- end
60
-
61
- it 'decorates the json with a variable' do
62
- yajl_app do
63
- yajl(
64
- 'json = { :foo => "bar" }',
65
- { :variable => 'qux' }
66
- )
67
- end
68
- assert ok?
69
- assert_body 'var qux = {"foo":"bar"};'
70
- end
71
-
72
- it 'decorates the json with a callback and a variable' do
73
- yajl_app do
74
- yajl(
75
- 'json = { :foo => "bar" }',
76
- { :callback => 'baz', :variable => 'qux' }
77
- )
78
- end
79
- assert ok?
80
- assert_body 'var qux = {"foo":"bar"}; baz(qux);'
81
- end
82
- end
83
-
84
- rescue LoadError
85
- warn "#{$!.to_s}: skipping yajl tests"
86
- end