markaby 0.7.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/.gitignore +21 -0
  2. data/{spec/spec.opts → .rspec} +0 -0
  3. data/Gemfile +8 -0
  4. data/Markaby.gemspec +20 -105
  5. data/README.rdoc +12 -94
  6. data/Rakefile +19 -50
  7. data/lib/markaby.rb +1 -5
  8. data/lib/markaby/builder.rb +15 -1
  9. data/lib/markaby/builder_tags.rb +22 -2
  10. data/lib/markaby/kernel_method.rb +1 -0
  11. data/lib/markaby/tags.rb +91 -2
  12. data/lib/markaby/version.rb +3 -0
  13. data/spec/markaby/{css_proxy_test.rb → css_proxy_spec.rb} +12 -17
  14. data/spec/markaby/{fragment_test.rb → fragment_spec.rb} +0 -0
  15. data/spec/markaby/html5_spec.rb +100 -0
  16. data/spec/markaby/markaby_spec.rb +1 -1
  17. data/spec/markaby/{markaby_test.rb → markaby_test_unit_spec.rb} +1 -1
  18. data/spec/spec_helper.rb +0 -5
  19. metadata +70 -76
  20. data/garlic.rb +0 -29
  21. data/init.rb +0 -6
  22. data/lib/markaby/rails.rb +0 -75
  23. data/lib/markaby/rails/current.rb +0 -85
  24. data/lib/markaby/rails/deprecated.rb +0 -124
  25. data/lib/markaby/rails/rails_builder.rb +0 -91
  26. data/lib/markaby/sinatra.rb +0 -18
  27. data/lib/markaby/tilt.rb +0 -8
  28. data/spec/markaby/markaby_other_static.mab +0 -1
  29. data/spec/markaby/rails/spec_helper.rb +0 -29
  30. data/spec/markaby/rails/views/layouts/layout.mab +0 -11
  31. data/spec/markaby/rails/views/markaby/_a_partial.mab +0 -3
  32. data/spec/markaby/rails/views/markaby/_form_for_with_body_in_erb.erb +0 -1
  33. data/spec/markaby/rails/views/markaby/_partial_child_with_locals.mab +0 -1
  34. data/spec/markaby/rails/views/markaby/access_to_helpers.mab +0 -1
  35. data/spec/markaby/rails/views/markaby/broken.mab +0 -7
  36. data/spec/markaby/rails/views/markaby/commented_out_template.mab +0 -1
  37. data/spec/markaby/rails/views/markaby/correct_template_values.mab +0 -5
  38. data/spec/markaby/rails/views/markaby/double_output.mab +0 -8
  39. data/spec/markaby/rails/views/markaby/form_for.mab +0 -2
  40. data/spec/markaby/rails/views/markaby/form_for_with_fields.mab +0 -3
  41. data/spec/markaby/rails/views/markaby/form_for_with_multiple_fields.mab +0 -4
  42. data/spec/markaby/rails/views/markaby/no_values_passed.mab +0 -3
  43. data/spec/markaby/rails/views/markaby/partial_parent.mab +0 -1
  44. data/spec/markaby/rails/views/markaby/partial_parent_with_locals.mab +0 -7
  45. data/spec/markaby/rails/views/markaby/render_erb_without_explicit_render_call.erb +0 -1
  46. data/spec/markaby/rails/views/markaby/render_explicit_but_empty_markaby_layout.mab +0 -0
  47. data/spec/markaby/rails/views/markaby/render_mab_without_explicit_render_call.mab +0 -3
  48. data/spec/markaby/rails/views/markaby/render_with_ivar.mab +0 -3
  49. data/spec/markaby/rails/views/markaby/renders_erb.rhtml +0 -1
  50. data/spec/markaby/rails/views/markaby/renders_form_for_with_erb_body.mab +0 -3
  51. data/spec/markaby/rails/views/markaby/routes.mab +0 -1
  52. data/spec/markaby/rails/views/markaby/yielding.mab +0 -3
  53. data/spec/markaby/rails/views/markaby/yielding_content_for_with_block_helper.mab +0 -5
  54. data/spec/markaby/rails/views/markaby/yielding_two.mab +0 -7
  55. data/spec/markaby/rails/views/markaby/yielding_with_content_for.mab +0 -3
  56. data/spec/markaby/rails_test.rb +0 -380
  57. data/spec/markaby/rails_version_spec.rb +0 -37
  58. data/spec/markaby/sinatra/app.rb +0 -49
  59. data/spec/markaby/sinatra/sinatra_spec.rb +0 -67
  60. data/spec/markaby/sinatra/views/helpers.mab +0 -1
  61. data/spec/markaby/sinatra/views/layout.mab +0 -7
  62. data/spec/markaby/sinatra/views/markaby_template.mab +0 -0
  63. data/spec/markaby/sinatra/views/scope_instance_variables.mab +0 -3
  64. data/spec/markaby/sinatra/views/simple_html.mab +0 -4
  65. data/spec/markaby/sinatra/views/variables.mab +0 -3
  66. data/spec/markaby/tilt/erb.erb +0 -1
  67. data/spec/markaby/tilt/locals.mab +0 -1
  68. data/spec/markaby/tilt/markaby.mab +0 -1
  69. data/spec/markaby/tilt/markaby_other_static.mab +0 -1
  70. data/spec/markaby/tilt/render_twice.mab +0 -1
  71. data/spec/markaby/tilt/scope.mab +0 -1
  72. data/spec/markaby/tilt/yielding.mab +0 -2
  73. data/spec/markaby/tilt_spec.rb +0 -75
@@ -1,29 +0,0 @@
1
- require 'test/unit'
2
-
3
- unless defined?(RUNNING_RAILS)
4
- MARKABY_ROOT = File.join(File.dirname(__FILE__), "..", "..", "..")
5
- rails_root = File.join(MARKABY_ROOT, "..", "..", "..")
6
- RAILS_BOOT_FILE = File.join(rails_root, "config", "boot.rb")
7
-
8
- RUNNING_RAILS = File.exists?(RAILS_BOOT_FILE) ? true : false
9
- end
10
-
11
- if RUNNING_RAILS
12
- ENV["RAILS_ENV"] ||= "test"
13
- require RAILS_BOOT_FILE
14
- Rails::Initializer.run
15
- require 'action_controller/test_process'
16
-
17
- $:.unshift MARKABY_ROOT
18
- require 'init'
19
-
20
- ActionController::Routing::Routes.draw do |map|
21
- map.new_user "/users/new", :controller => "users", :action => "new"
22
-
23
- # default routes
24
- map.connect ':controller/:action/:id.:format'
25
- map.connect ':controller/:action/:id'
26
- end
27
- else
28
- warn "Skipping rails specific tests"
29
- end
@@ -1,11 +0,0 @@
1
- div :id => "main" do
2
- yield
3
- end
4
-
5
- str = yield(:foo)
6
-
7
- unless str.blank?
8
- div :id => "foo" do
9
- str
10
- end
11
- end
@@ -1,3 +0,0 @@
1
- ul do
2
- li "smtlaissezfaire"
3
- end
@@ -1 +0,0 @@
1
- <%= f.text_field :foo %>
@@ -1 +0,0 @@
1
- link_to "bar", "/foo"
@@ -1,7 +0,0 @@
1
- div {
2
- ul {
3
- li 'one'
4
- li 'two'
5
- li supercalifragilisticexpialidocious
6
- }
7
- }
@@ -1 +0,0 @@
1
- # <!-- raise an ruby error -->
@@ -1,5 +0,0 @@
1
- ul do
2
- li "smt"
3
- li "joho"
4
- li "spox"
5
- end
@@ -1,8 +0,0 @@
1
- content_for :foo do
2
- form_for :foo do |f|
3
- p :class => "foo" do
4
- f.text_field :foo
5
- f.submit "foo"
6
- end
7
- end
8
- end
@@ -1,2 +0,0 @@
1
- form_for :obj do
2
- end
@@ -1,3 +0,0 @@
1
- form_for :foo do |f|
2
- f.text_field :foo
3
- end
@@ -1,4 +0,0 @@
1
- form_for :foo do |f|
2
- f.text_field :foo
3
- f.text_field :baz
4
- end
@@ -1,3 +0,0 @@
1
- ul do
2
- li "Scott"
3
- end
@@ -1 +0,0 @@
1
- render :partial => "a_partial"
@@ -1,7 +0,0 @@
1
- ul do
2
- authors = ["smtlaissezfaire"]
3
-
4
- authors.each do |author|
5
- render :partial => "partial_child_with_locals", :locals => {:author => author}
6
- end
7
- end
@@ -1,3 +0,0 @@
1
- ul do
2
- li "smtlaissezfaire"
3
- end
@@ -1,3 +0,0 @@
1
- ul do
2
- li @user
3
- end
@@ -1 +0,0 @@
1
- Hello, from erb!
@@ -1,3 +0,0 @@
1
- form_for :foo do |f|
2
- render :partial => "form_for_with_body_in_erb", :locals => { :f => f }
3
- end
@@ -1 +0,0 @@
1
- link_to("Foo", new_user_path)
@@ -1,3 +0,0 @@
1
- p :class => "hey" do
2
- "hi there"
3
- end
@@ -1,5 +0,0 @@
1
- content_for :foo do
2
- form_for :foo do |f|
3
- f.text_field :foo
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- p :class => "hi" do
2
- "hi there"
3
- end
4
-
5
- p :class => "hi" do
6
- "hi again"
7
- end
@@ -1,3 +0,0 @@
1
- content_for :foo do
2
- p "in foo content_for"
3
- end
@@ -1,380 +0,0 @@
1
- require File.expand_path('../rails/spec_helper', __FILE__)
2
-
3
- if RUNNING_RAILS
4
- class NonSpecificTestController < ActionController::Base
5
- VIEW_PATH = File.expand_path(File.join(File.dirname(__FILE__), 'rails', 'views'))
6
-
7
- around_filter :catch_exceptions
8
-
9
- attr_reader :last_exception
10
-
11
- def catch_exceptions
12
- yield
13
- rescue Exception => @last_exception
14
- raise @last_exception
15
- end
16
- end
17
-
18
- if Markaby::Rails.deprecated_rails_version?
19
- class ActionController::TestCase < Test::Unit::TestCase; end
20
-
21
- class TestController < NonSpecificTestController
22
- self.template_root = VIEW_PATH
23
- end
24
- else
25
- class TestController < NonSpecificTestController
26
- append_view_path(VIEW_PATH)
27
- end
28
- end
29
-
30
- class MarkabyController < TestController
31
- def renders_nothing
32
- render :text => ""
33
- end
34
-
35
- def renders_erb_with_explicit_template
36
- render :template => "markaby/renders_erb"
37
- end
38
-
39
- def render_inline_content
40
- mab_content = mab do
41
- ul do
42
- li "Scott"
43
- end
44
- end
45
-
46
- render :inline => mab_content
47
- end
48
-
49
- def render_explicit_but_empty_markaby_layout
50
- render :template => "markaby/render_explicit_but_empty_markaby_layout.mab"
51
- end
52
-
53
- def no_values_passed
54
- render :template => "markaby/no_values_passed"
55
- end
56
-
57
- def correct_template_values
58
- render :template => "markaby/correct_template_values"
59
- end
60
-
61
- def render_erb_without_explicit_render_call
62
- end
63
-
64
- def render_mab_without_explicit_render_call
65
- end
66
-
67
- def render_with_ivar
68
- @user = "smtlaissezfaire"
69
- render :template => "markaby/render_with_ivar"
70
- end
71
-
72
- def access_to_helpers
73
- render :template => "markaby/access_to_helpers"
74
- end
75
-
76
- def renders_partial
77
- render :template => "markaby/partial_parent"
78
- end
79
-
80
- def renders_partial_with_locals
81
- render :template => "markaby/partial_parent_with_locals"
82
- end
83
-
84
- def render_which_raises_error
85
- render :template => "markaby/broken"
86
- end
87
-
88
- def renders_form_for
89
- @obj = Object.new
90
- render :template => "markaby/form_for"
91
- end
92
-
93
- def render_form_for_with_fields
94
- @obj = Object.new
95
- def @obj.foo
96
- "bar"
97
- end
98
-
99
- render :template => "markaby/form_for_with_fields"
100
- end
101
-
102
- def render_form_for_with_multiple_fields
103
- @obj = Object.new
104
-
105
- def @obj.foo
106
- "bar"
107
- end
108
-
109
- def @obj.baz
110
- "quxx"
111
- end
112
-
113
- render :template => "markaby/form_for_with_multiple_fields"
114
- end
115
-
116
- def routes
117
- end
118
-
119
- def commented_out_template
120
- end
121
-
122
- def render_with_yielding
123
- render :layout => "layout.mab",
124
- :template => "markaby/yielding"
125
- end
126
-
127
- def render_with_yielding_where_template_has_two_elements
128
- render :layout => "layout.mab",
129
- :template => "markaby/yielding_two"
130
- end
131
-
132
- def render_with_yielding_content_for_block
133
- render :layout => "layout.mab",
134
- :template => "markaby/yielding_with_content_for"
135
- end
136
-
137
- def render_content_for_with_block_helper
138
- @obj = Object.new
139
- def @obj.foo
140
- "bar"
141
- end
142
-
143
- render :layout => "layout.mab",
144
- :template => "markaby/yielding_content_for_with_block_helper"
145
- end
146
-
147
- def renders_content_for_with_form_for_without_double_render
148
- @obj = Object.new
149
- def @obj.foo
150
- "bar"
151
- end
152
-
153
- render :layout => "layout.mab",
154
- :template => "markaby/double_output"
155
- end
156
-
157
- def renders_form_for_with_erb_body
158
- @obj = Object.new
159
-
160
- def @obj.foo
161
- "bar"
162
- end
163
- end
164
- end
165
-
166
- class MarkabyOnRailsTest < ActionController::TestCase
167
- def setup
168
- Markaby::Builder.restore_defaults!
169
-
170
- @request = ActionController::TestRequest.new
171
- @response = ActionController::TestResponse.new
172
- @controller = MarkabyController.new
173
- end
174
-
175
- def test_renders_nothing
176
- get :renders_nothing
177
- assert_response :success
178
- end
179
-
180
- def test_renders_erb_with_explicit_template
181
- get :renders_erb_with_explicit_template
182
- assert_response :success
183
- # TODO: - fix this test environment issue so that assert_template works
184
- # correctly in these tests
185
- # assert_template "renders_erb.erb"
186
- end
187
-
188
- def test_renders_explicit_but_empty_markaby_layout
189
- get :render_explicit_but_empty_markaby_layout
190
- assert_response :success
191
-
192
- assert_equal "", @response.body
193
- # TODO:
194
- # assert_template "markaby/render_explicit_but_empty_markaby_layout"
195
- end
196
-
197
- def test_renders_inline_markaby_content
198
- get :render_inline_content
199
- assert_response :success
200
- assert_equal "<ul><li>Scott</li></ul>", @response.body
201
- end
202
-
203
- def test_renders_mab_template_with_no_values_passed
204
- get :no_values_passed
205
- assert_response :success
206
- assert_equal "<ul><li>Scott</li></ul>", @response.body
207
- end
208
-
209
- def test_renders_mab_template_with_correct_values
210
- get :correct_template_values
211
- assert_response :success
212
-
213
- assert_equal "<ul><li>smt</li><li>joho</li><li>spox</li></ul>", @response.body
214
- end
215
-
216
- def test_renders_without_explicit_render_call
217
- get :render_mab_without_explicit_render_call
218
- assert_response :success
219
-
220
- assert_equal @response.body, "<ul><li>smtlaissezfaire</li></ul>"
221
- end
222
-
223
- def test_renders_with_ivar
224
- get :render_with_ivar
225
- assert_response :success
226
-
227
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
228
- end
229
-
230
- def test_access_to_helpers
231
- get :access_to_helpers
232
- assert_response :success
233
-
234
- assert_equal '<a href="/foo">bar</a>', @response.body
235
- end
236
-
237
- def test_renders_partial_from_template
238
- get :renders_partial
239
- assert_response :success
240
-
241
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
242
- end
243
-
244
- def test_renders_partial_with_locals
245
- get :renders_partial_with_locals
246
- assert_response :success
247
-
248
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
249
- end
250
-
251
- def test_raises_error_when_template_raises_error
252
- get :render_which_raises_error
253
-
254
- assert_response :error
255
-
256
- assert_equal ActionView::TemplateError, @controller.last_exception.class
257
- assert %r(undefined local variable or method `supercalifragilisticexpialidocious' for #<Markaby::.*Builder.*) =~
258
- @controller.last_exception.message.to_s
259
- end
260
-
261
- def test_routes_work
262
- get :routes
263
- assert_response :success
264
-
265
- expected_output = '<a href="/users/new">Foo</a>'
266
- assert_equal expected_output, @response.body
267
- end
268
-
269
- def test_commented_out_template_cant_raise_errors
270
- get :commented_out_template
271
- assert_response :success
272
-
273
- expected_output = ""
274
- assert_equal expected_output, @response.body
275
- end
276
-
277
- if Rails::VERSION::MAJOR >= 2
278
- def test_renders_form_for_properly
279
- get :renders_form_for
280
-
281
- assert_response :success
282
-
283
- assert %r(<form.*></form>) =~ @response.body
284
- end
285
-
286
- def test_renders_form_for_with_fields_for
287
- get :render_form_for_with_fields
288
-
289
- assert_response :success
290
-
291
- assert_equal '<form action="/markaby/render_form_for_with_fields" method="post"><input id="foo_foo" name="foo[foo]" size="30" type="text" /></form>',
292
- @response.body
293
- end
294
-
295
- def test_renders_form_for_with_multiple_fields
296
- get :render_form_for_with_multiple_fields
297
-
298
- assert_response :success
299
-
300
- expected_output = '<form action="/markaby/render_form_for_with_multiple_fields" method="post">'
301
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
302
- expected_output << '<input id="foo_baz" name="foo[baz]" size="30" type="text" />'
303
- expected_output << '</form>'
304
-
305
- assert_equal expected_output,
306
- @response.body
307
- end
308
-
309
- def test_rendering_with_yield_works
310
- get :render_with_yielding
311
- assert_response :success
312
-
313
- expected_output = '<div id="main"><p class="hey">hi there</p></div>'
314
- assert_equal expected_output, @response.body
315
- end
316
-
317
- def test_render_with_yielding_where_template_has_two_elements
318
- get :render_with_yielding_where_template_has_two_elements
319
- assert_response :success
320
-
321
- expected_output = '<div id="main"><p class="hi">hi there</p><p class="hi">hi again</p></div>'
322
- assert_equal expected_output, @response.body
323
- end
324
-
325
- def test_render_with_yielding_content_for_block
326
- get :render_with_yielding_content_for_block
327
- assert_response :success
328
-
329
- expected_output = '<div id="main"></div><div id="foo"><p>in foo content_for</p></div>'
330
- assert_equal expected_output, @response.body
331
- end
332
-
333
- def test_render_content_for_with_block_helper
334
- get :render_content_for_with_block_helper
335
- assert_response :success
336
-
337
- expected_output = '<div id="main"></div><div id="foo">'
338
- expected_output << '<form action="/markaby/render_content_for_with_block_helper" method="post">'
339
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
340
- expected_output << '</form>'
341
- expected_output << '</div>'
342
-
343
- assert_equal expected_output, @response.body
344
- end
345
-
346
- def test_renders_content_for_with_form_for_without_double_render
347
- get :renders_content_for_with_form_for_without_double_render
348
- assert_response :success
349
-
350
- expected_output = '<div id="main"></div><div id="foo">'
351
- expected_output << '<form action="/markaby/renders_content_for_with_form_for_without_double_render" method="post">'
352
- expected_output << '<p class="foo">'
353
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
354
- expected_output << '<input id="foo_submit" name="commit" type="submit" value="foo" />'
355
- expected_output << '</p>'
356
- expected_output << '</form>'
357
- expected_output << '</div>'
358
-
359
- assert_equal expected_output, @response.body
360
- end
361
-
362
- def test_renders_form_for_with_erb_render_in_body
363
- get :renders_form_for_with_erb_body
364
- assert_response :success
365
-
366
- str = '<form action="/markaby/renders_form_for_with_erb_body" method="post">'
367
- str << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
368
- str << '</form>'
369
-
370
- assert_equal str, @response.body
371
- end
372
- end
373
- end
374
-
375
- describe "rails version" do
376
- it "should support the current rails version" do
377
- Markaby::Rails::SUPPORTED_RAILS_VERSIONS.should include(::Rails::VERSION::STRING)
378
- end
379
- end
380
- end