devcenter 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. data/CONTRIBUTING.md +14 -0
  2. data/Gemfile +0 -4
  3. data/devcenter.gemspec +2 -1
  4. data/lib/devcenter.rb +0 -1
  5. data/lib/devcenter/previewer/web_app.rb +3 -2
  6. data/lib/devcenter/version.rb +1 -1
  7. metadata +19 -124
  8. data/vendor/sinatra/.gitignore +0 -6
  9. data/vendor/sinatra/.travis.yml +0 -16
  10. data/vendor/sinatra/.yardopts +0 -4
  11. data/vendor/sinatra/AUTHORS +0 -61
  12. data/vendor/sinatra/Gemfile +0 -91
  13. data/vendor/sinatra/LICENSE +0 -22
  14. data/vendor/sinatra/README.de.rdoc +0 -2116
  15. data/vendor/sinatra/README.es.rdoc +0 -2106
  16. data/vendor/sinatra/README.fr.rdoc +0 -2133
  17. data/vendor/sinatra/README.hu.rdoc +0 -608
  18. data/vendor/sinatra/README.jp.rdoc +0 -1056
  19. data/vendor/sinatra/README.ko.rdoc +0 -1932
  20. data/vendor/sinatra/README.pt-br.rdoc +0 -778
  21. data/vendor/sinatra/README.pt-pt.rdoc +0 -647
  22. data/vendor/sinatra/README.rdoc +0 -2049
  23. data/vendor/sinatra/README.ru.rdoc +0 -2033
  24. data/vendor/sinatra/README.zh.rdoc +0 -1816
  25. data/vendor/sinatra/Rakefile +0 -182
  26. data/vendor/sinatra/examples/chat.rb +0 -61
  27. data/vendor/sinatra/examples/simple.rb +0 -3
  28. data/vendor/sinatra/examples/stream.ru +0 -26
  29. data/vendor/sinatra/lib/sinatra.rb +0 -5
  30. data/vendor/sinatra/lib/sinatra/base.rb +0 -1820
  31. data/vendor/sinatra/lib/sinatra/images/404.png +0 -0
  32. data/vendor/sinatra/lib/sinatra/images/500.png +0 -0
  33. data/vendor/sinatra/lib/sinatra/main.rb +0 -30
  34. data/vendor/sinatra/lib/sinatra/showexceptions.rb +0 -345
  35. data/vendor/sinatra/lib/sinatra/version.rb +0 -3
  36. data/vendor/sinatra/sinatra.gemspec +0 -18
  37. data/vendor/sinatra/test/base_test.rb +0 -172
  38. data/vendor/sinatra/test/builder_test.rb +0 -91
  39. data/vendor/sinatra/test/coffee_test.rb +0 -90
  40. data/vendor/sinatra/test/compile_test.rb +0 -139
  41. data/vendor/sinatra/test/contest.rb +0 -98
  42. data/vendor/sinatra/test/creole_test.rb +0 -65
  43. data/vendor/sinatra/test/delegator_test.rb +0 -160
  44. data/vendor/sinatra/test/encoding_test.rb +0 -20
  45. data/vendor/sinatra/test/erb_test.rb +0 -98
  46. data/vendor/sinatra/test/extensions_test.rb +0 -98
  47. data/vendor/sinatra/test/filter_test.rb +0 -437
  48. data/vendor/sinatra/test/haml_test.rb +0 -91
  49. data/vendor/sinatra/test/helper.rb +0 -123
  50. data/vendor/sinatra/test/helpers_test.rb +0 -1768
  51. data/vendor/sinatra/test/integration/app.rb +0 -62
  52. data/vendor/sinatra/test/integration_helper.rb +0 -222
  53. data/vendor/sinatra/test/integration_test.rb +0 -87
  54. data/vendor/sinatra/test/less_test.rb +0 -69
  55. data/vendor/sinatra/test/liquid_test.rb +0 -59
  56. data/vendor/sinatra/test/mapped_error_test.rb +0 -305
  57. data/vendor/sinatra/test/markaby_test.rb +0 -80
  58. data/vendor/sinatra/test/markdown_test.rb +0 -82
  59. data/vendor/sinatra/test/middleware_test.rb +0 -68
  60. data/vendor/sinatra/test/nokogiri_test.rb +0 -67
  61. data/vendor/sinatra/test/public/favicon.ico +0 -0
  62. data/vendor/sinatra/test/rabl_test.rb +0 -89
  63. data/vendor/sinatra/test/rack_test.rb +0 -45
  64. data/vendor/sinatra/test/radius_test.rb +0 -59
  65. data/vendor/sinatra/test/rdoc_test.rb +0 -66
  66. data/vendor/sinatra/test/readme_test.rb +0 -120
  67. data/vendor/sinatra/test/request_test.rb +0 -45
  68. data/vendor/sinatra/test/response_test.rb +0 -64
  69. data/vendor/sinatra/test/result_test.rb +0 -76
  70. data/vendor/sinatra/test/route_added_hook_test.rb +0 -59
  71. data/vendor/sinatra/test/routing_test.rb +0 -1175
  72. data/vendor/sinatra/test/sass_test.rb +0 -116
  73. data/vendor/sinatra/test/scss_test.rb +0 -89
  74. data/vendor/sinatra/test/server_test.rb +0 -48
  75. data/vendor/sinatra/test/settings_test.rb +0 -561
  76. data/vendor/sinatra/test/sinatra_test.rb +0 -12
  77. data/vendor/sinatra/test/slim_test.rb +0 -84
  78. data/vendor/sinatra/test/static_test.rb +0 -219
  79. data/vendor/sinatra/test/streaming_test.rb +0 -149
  80. data/vendor/sinatra/test/templates_test.rb +0 -333
  81. data/vendor/sinatra/test/textile_test.rb +0 -65
  82. data/vendor/sinatra/test/views/a/in_a.str +0 -1
  83. data/vendor/sinatra/test/views/ascii.erb +0 -2
  84. data/vendor/sinatra/test/views/b/in_b.str +0 -1
  85. data/vendor/sinatra/test/views/calc.html.erb +0 -1
  86. data/vendor/sinatra/test/views/error.builder +0 -3
  87. data/vendor/sinatra/test/views/error.erb +0 -3
  88. data/vendor/sinatra/test/views/error.haml +0 -3
  89. data/vendor/sinatra/test/views/error.sass +0 -2
  90. data/vendor/sinatra/test/views/explicitly_nested.str +0 -1
  91. data/vendor/sinatra/test/views/foo/hello.test +0 -1
  92. data/vendor/sinatra/test/views/hello.builder +0 -1
  93. data/vendor/sinatra/test/views/hello.coffee +0 -1
  94. data/vendor/sinatra/test/views/hello.creole +0 -1
  95. data/vendor/sinatra/test/views/hello.erb +0 -1
  96. data/vendor/sinatra/test/views/hello.haml +0 -1
  97. data/vendor/sinatra/test/views/hello.less +0 -5
  98. data/vendor/sinatra/test/views/hello.liquid +0 -1
  99. data/vendor/sinatra/test/views/hello.mab +0 -1
  100. data/vendor/sinatra/test/views/hello.md +0 -1
  101. data/vendor/sinatra/test/views/hello.nokogiri +0 -1
  102. data/vendor/sinatra/test/views/hello.rabl +0 -2
  103. data/vendor/sinatra/test/views/hello.radius +0 -1
  104. data/vendor/sinatra/test/views/hello.rdoc +0 -1
  105. data/vendor/sinatra/test/views/hello.sass +0 -2
  106. data/vendor/sinatra/test/views/hello.scss +0 -3
  107. data/vendor/sinatra/test/views/hello.slim +0 -1
  108. data/vendor/sinatra/test/views/hello.str +0 -1
  109. data/vendor/sinatra/test/views/hello.test +0 -1
  110. data/vendor/sinatra/test/views/hello.textile +0 -1
  111. data/vendor/sinatra/test/views/hello.wlang +0 -1
  112. data/vendor/sinatra/test/views/hello.yajl +0 -1
  113. data/vendor/sinatra/test/views/layout2.builder +0 -3
  114. data/vendor/sinatra/test/views/layout2.erb +0 -2
  115. data/vendor/sinatra/test/views/layout2.haml +0 -2
  116. data/vendor/sinatra/test/views/layout2.liquid +0 -2
  117. data/vendor/sinatra/test/views/layout2.mab +0 -2
  118. data/vendor/sinatra/test/views/layout2.nokogiri +0 -3
  119. data/vendor/sinatra/test/views/layout2.rabl +0 -3
  120. data/vendor/sinatra/test/views/layout2.radius +0 -2
  121. data/vendor/sinatra/test/views/layout2.slim +0 -3
  122. data/vendor/sinatra/test/views/layout2.str +0 -2
  123. data/vendor/sinatra/test/views/layout2.test +0 -1
  124. data/vendor/sinatra/test/views/layout2.wlang +0 -2
  125. data/vendor/sinatra/test/views/nested.str +0 -1
  126. data/vendor/sinatra/test/views/utf8.erb +0 -2
  127. data/vendor/sinatra/test/wlang_test.rb +0 -70
  128. data/vendor/sinatra/test/yajl_test.rb +0 -86
@@ -1,333 +0,0 @@
1
- # encoding: UTF-8
2
- require File.expand_path('../helper', __FILE__)
3
- File.delete(File.dirname(__FILE__) + '/views/layout.test') rescue nil
4
-
5
- class TestTemplate < Tilt::Template
6
- def prepare
7
- end
8
-
9
- def evaluate(scope, locals={}, &block)
10
- inner = block ? block.call : ''
11
- data + inner
12
- end
13
-
14
- Tilt.register 'test', self
15
- end
16
-
17
- class TemplatesTest < Test::Unit::TestCase
18
- def render_app(base=Sinatra::Base, options = {}, &block)
19
- base, options = Sinatra::Base, base if base.is_a? Hash
20
- mock_app(base) do
21
- set :views, File.dirname(__FILE__) + '/views'
22
- set options
23
- get('/', &block)
24
- template(:layout3) { "Layout 3!\n" }
25
- end
26
- get '/'
27
- end
28
-
29
- def with_default_layout
30
- layout = File.dirname(__FILE__) + '/views/layout.test'
31
- File.open(layout, 'wb') { |io| io.write "Layout!\n" }
32
- yield
33
- ensure
34
- File.unlink(layout) rescue nil
35
- end
36
-
37
- it 'falls back to engine layout' do
38
- mock_app do
39
- template(:layout3) { 'Layout 3!<%= yield %>' }
40
- set :erb, :layout => :layout3
41
-
42
- get('/') do
43
- erb('Hello World!', { :layout => true })
44
- end
45
- end
46
-
47
- get '/'
48
- assert ok?
49
- assert_equal "Layout 3!Hello World!", body
50
- end
51
-
52
- it 'falls back to default layout if engine layout is true' do
53
- mock_app do
54
- template(:layout) { 'Layout!!! <%= yield %>' }
55
- set :erb, :layout => true
56
-
57
- get('/') do
58
- erb('Hello World!', { :layout => true })
59
- end
60
- end
61
-
62
- get '/'
63
- assert ok?
64
- assert_equal "Layout!!! Hello World!", body
65
- end
66
-
67
- it 'renders String templates directly' do
68
- render_app { render(:test, 'Hello World') }
69
- assert ok?
70
- assert_equal 'Hello World', body
71
- end
72
-
73
- it 'renders Proc templates using the call result' do
74
- render_app { render(:test, Proc.new {'Hello World'}) }
75
- assert ok?
76
- assert_equal 'Hello World', body
77
- end
78
-
79
- it 'looks up Symbol templates in views directory' do
80
- render_app { render(:test, :hello) }
81
- assert ok?
82
- assert_equal "Hello World!\n", body
83
- end
84
-
85
- it 'uses the default layout template if not explicitly overridden' do
86
- with_default_layout do
87
- render_app { render(:test, :hello) }
88
- assert ok?
89
- assert_equal "Layout!\nHello World!\n", body
90
- end
91
- end
92
-
93
- it 'uses the default layout template if not really overriden' do
94
- with_default_layout do
95
- render_app { render(:test, :hello, :layout => true) }
96
- assert ok?
97
- assert_equal "Layout!\nHello World!\n", body
98
- end
99
- end
100
-
101
- it 'uses the layout template specified' do
102
- render_app { render(:test, :hello, :layout => :layout2) }
103
- assert ok?
104
- assert_equal "Layout 2!\nHello World!\n", body
105
- end
106
-
107
- it 'uses layout templates defined with the #template method' do
108
- render_app { render(:test, :hello, :layout => :layout3) }
109
- assert ok?
110
- assert_equal "Layout 3!\nHello World!\n", body
111
- end
112
-
113
- it 'avoids wrapping layouts around nested templates' do
114
- render_app { render(:str, :nested, :layout => :layout2) }
115
- assert ok?
116
- assert_equal(
117
- "<h1>String Layout!</h1>\n<content><h1>Hello From String</h1></content>",
118
- body
119
- )
120
- end
121
-
122
- it 'allows explicitly wrapping layouts around nested templates' do
123
- render_app { render(:str, :explicitly_nested, :layout => :layout2) }
124
- assert ok?
125
- assert_equal(
126
- "<h1>String Layout!</h1>\n<content><h1>String Layout!</h1>\n<h1>Hello From String</h1></content>",
127
- body
128
- )
129
- end
130
-
131
- it 'two independent render calls do not disable layouts' do
132
- render_app do
133
- render :str, :explicitly_nested, :layout => :layout2
134
- render :str, :nested, :layout => :layout2
135
- end
136
- assert ok?
137
- assert_equal(
138
- "<h1>String Layout!</h1>\n<content><h1>Hello From String</h1></content>",
139
- body
140
- )
141
- end
142
-
143
- it 'is possible to use partials in layouts' do
144
- render_app do
145
- settings.layout { "<%= erb 'foo' %><%= yield %>" }
146
- erb 'bar'
147
- end
148
- assert ok?
149
- assert_equal "foobar", body
150
- end
151
-
152
- it 'loads templates from source file' do
153
- mock_app { enable(:inline_templates) }
154
- assert_equal "this is foo\n\n", @app.templates[:foo][0]
155
- assert_equal "X\n= yield\nX\n", @app.templates[:layout][0]
156
- end
157
-
158
- it 'ignores spaces after names of inline templates' do
159
- mock_app { enable(:inline_templates) }
160
- assert_equal "There's a space after 'bar'!\n\n", @app.templates[:bar][0]
161
- assert_equal "this is not foo\n\n", @app.templates[:"foo bar"][0]
162
- end
163
-
164
- it 'loads templates from given source file' do
165
- mock_app { set(:inline_templates, __FILE__) }
166
- assert_equal "this is foo\n\n", @app.templates[:foo][0]
167
- end
168
-
169
- test 'inline_templates ignores IO errors' do
170
- assert_nothing_raised { mock_app { set(:inline_templates, '/foo/bar') } }
171
-
172
- assert @app.templates.empty?
173
- end
174
-
175
- it 'allows unicode in inline templates' do
176
- mock_app { set(:inline_templates, __FILE__) }
177
- assert_equal(
178
- "Den som tror at hemma det är där man bor har aldrig vart hos mig.\n\n",
179
- @app.templates[:umlaut][0]
180
- )
181
- end
182
-
183
- it 'loads templates from specified views directory' do
184
- render_app { render( :test, :hello, :views => settings.views + '/foo') }
185
-
186
- assert_equal "from another views directory\n", body
187
- end
188
-
189
- it 'passes locals to the layout' do
190
- mock_app do
191
- template(:my_layout) { 'Hello <%= name %>!<%= yield %>' }
192
-
193
- get('/') do
194
- erb('<p>content</p>', { :layout => :my_layout }, { :name => 'Mike'})
195
- end
196
- end
197
-
198
- get '/'
199
- assert ok?
200
- assert_equal 'Hello Mike!<p>content</p>', body
201
- end
202
-
203
- it 'loads templates defined in subclasses' do
204
- base = Class.new(Sinatra::Base)
205
- base.template(:foo) { 'bar' }
206
- render_app(base) { render(:test, :foo) }
207
- assert ok?
208
- assert_equal 'bar', body
209
- end
210
-
211
- it 'allows setting default content type per template engine' do
212
- render_app(:str => { :content_type => :txt }) {
213
- render :str, 'foo'
214
- }
215
- assert_equal 'text/plain;charset=utf-8', response['Content-Type']
216
- end
217
-
218
- it 'setting default content type does not affect other template engines' do
219
- render_app(:str => { :content_type => :txt }) {
220
- render :test, 'foo'
221
- }
222
- assert_equal 'text/html;charset=utf-8', response['Content-Type']
223
- end
224
-
225
- it 'setting default content type per template engine does not override content_type' do
226
- render_app :str => { :content_type => :txt } do
227
- content_type :html
228
- render :str, 'foo'
229
- end
230
- assert_equal 'text/html;charset=utf-8', response['Content-Type']
231
- end
232
-
233
- it 'uses templates in superclasses before subclasses' do
234
- base = Class.new(Sinatra::Base)
235
- base.template(:foo) { 'template in superclass' }
236
- assert_equal 'template in superclass', base.templates[:foo].first.call
237
-
238
- mock_app(base) do
239
- set :views, File.dirname(__FILE__) + '/views'
240
- template(:foo) { 'template in subclass' }
241
- get('/') { render :test, :foo }
242
- end
243
- assert_equal 'template in subclass', @app.templates[:foo].first.call
244
-
245
- get '/'
246
- assert ok?
247
- assert_equal 'template in subclass', body
248
- end
249
-
250
- it "is possible to use a different engine for the layout than for the template itself explicitely" do
251
- render_app do
252
- settings.template(:layout) { 'Hello <%= yield %>!' }
253
- render :str, "<%= 'World' %>", :layout_engine => :erb
254
- end
255
- assert_equal "Hello <%= 'World' %>!", body
256
- end
257
-
258
- it "is possible to use a different engine for the layout than for the template itself globally" do
259
- render_app :str => { :layout_engine => :erb } do
260
- settings.template(:layout) { 'Hello <%= yield %>!' }
261
- render :str, "<%= 'World' %>"
262
- end
263
- assert_equal "Hello <%= 'World' %>!", body
264
- end
265
-
266
- it "does not leak the content type to the template" do
267
- render_app :str => { :layout_engine => :erb } do
268
- settings.template(:layout) { 'Hello <%= yield %>!' }
269
- render :str, "<%= 'World' %>", :content_type => :txt
270
- end
271
- assert_equal "text/html;charset=utf-8", headers['Content-Type']
272
- end
273
-
274
- it "is possible to register another template" do
275
- Tilt.register "html.erb", Tilt[:erb]
276
- render_app { render :erb, :calc }
277
- assert_equal '2', body
278
- end
279
-
280
- it "passes scope to the template" do
281
- mock_app do
282
- template(:scoped) { 'Hello <%= foo %>' }
283
-
284
- get('/') do
285
- some_scope = Object.new
286
- def some_scope.foo() 'World!' end
287
- erb :scoped, :scope => some_scope
288
- end
289
- end
290
-
291
- get '/'
292
- assert ok?
293
- assert_equal 'Hello World!', body
294
- end
295
-
296
- it "is possible to use custom logic for finding template files" do
297
- mock_app do
298
- set :views, ["a", "b"].map { |d| File.dirname(__FILE__) + '/views/' + d }
299
- def find_template(views, name, engine, &block)
300
- Array(views).each { |v| super(v, name, engine, &block) }
301
- end
302
-
303
- get('/:name') { render(:str, params[:name].to_sym) }
304
- end
305
-
306
- get '/in_a'
307
- assert_body 'Gimme an A!'
308
-
309
- get '/in_b'
310
- assert_body 'Gimme a B!'
311
- end
312
- end
313
-
314
- # __END__ : this is not the real end of the script.
315
-
316
- __END__
317
-
318
- @@ foo
319
- this is foo
320
-
321
- @@ bar
322
- There's a space after 'bar'!
323
-
324
- @@ foo bar
325
- this is not foo
326
-
327
- @@ umlaut
328
- Den som tror at hemma det är där man bor har aldrig vart hos mig.
329
-
330
- @@ layout
331
- X
332
- = yield
333
- X
@@ -1,65 +0,0 @@
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 {
44
- textile('Hello World', :layout => :layout2, :layout_engine => :erb)
45
- }
46
- assert ok?
47
- assert_body "ERB Layout!\n<p>Hello World</p>"
48
- end
49
-
50
- it "can be used in a nested fashion for partials and whatnot" do
51
- mock_app do
52
- template(:inner) { "hi" }
53
- template(:outer) { "<outer><%= textile :inner %></outer>" }
54
- get('/') { erb :outer }
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
@@ -1 +0,0 @@
1
- Gimme an A!
@@ -1,2 +0,0 @@
1
- This file has no unicode in it!
2
- <%= value %>
@@ -1 +0,0 @@
1
- Gimme a B!
@@ -1 +0,0 @@
1
- <%= 1 + 1 %>
@@ -1,3 +0,0 @@
1
- xml.error do
2
- raise "goodbye"
3
- end
@@ -1,3 +0,0 @@
1
- Hello <%= 'World' %>
2
- <% raise 'Goodbye' unless defined?(french) && french %>
3
- <% raise 'Au revoir' if defined?(french) && french %>
@@ -1,3 +0,0 @@
1
- %h1 Hello From Haml
2
- = raise 'goodbye' unless defined?(french) && french
3
- = raise 'au revoir' if defined?(french) && french
@@ -1,2 +0,0 @@
1
- #sass
2
- +argle-bargle
@@ -1 +0,0 @@
1
- <content>#{render :str, :hello, :layout => :layout2}</content>
@@ -1 +0,0 @@
1
- from another views directory
@@ -1 +0,0 @@
1
- xml.exclaim "You're my boy, #{@name}!"
@@ -1 +0,0 @@
1
- alert "Aye!"
@@ -1 +0,0 @@
1
- = Hello From Creole