markaby 0.7.2 → 0.8.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 (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