markaby 0.7.0 → 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 +19 -3
  2. data/CHANGELOG.rdoc +4 -0
  3. data/Gemfile +8 -0
  4. data/Gemfile.lock +22 -0
  5. data/Markaby.gemspec +20 -118
  6. data/README.rdoc +20 -96
  7. data/Rakefile +20 -50
  8. data/VERSION +1 -1
  9. data/lib/markaby/builder.rb +25 -4
  10. data/lib/markaby/builder_tags.rb +22 -2
  11. data/lib/markaby/kernel_method.rb +1 -0
  12. data/lib/markaby/tags.rb +97 -1
  13. data/lib/markaby/version.rb +3 -0
  14. data/lib/markaby.rb +2 -6
  15. data/spec/markaby/css_proxy_spec.rb +12 -17
  16. data/spec/markaby/html5_spec.rb +100 -0
  17. data/spec/markaby/markaby_spec.rb +10 -69
  18. data/spec/markaby/markaby_test_unit_spec.rb +251 -0
  19. data/spec/spec_helper.rb +4 -6
  20. metadata +85 -124
  21. data/garlic.rb +0 -29
  22. data/init.rb +0 -6
  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 -74
  26. data/lib/markaby/rails.rb +0 -75
  27. data/lib/markaby/sinatra.rb +0 -18
  28. data/lib/markaby/tilt.rb +0 -42
  29. data/spec/markaby/markaby_other_static.mab +0 -1
  30. data/spec/markaby/rails/spec_helper.rb +0 -29
  31. data/spec/markaby/rails/views/layouts/layout.mab +0 -11
  32. data/spec/markaby/rails/views/markaby/_a_partial.mab +0 -3
  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/routes.mab +0 -1
  51. data/spec/markaby/rails/views/markaby/yielding.mab +0 -3
  52. data/spec/markaby/rails/views/markaby/yielding_content_for_with_block_helper.mab +0 -5
  53. data/spec/markaby/rails/views/markaby/yielding_two.mab +0 -7
  54. data/spec/markaby/rails/views/markaby/yielding_with_content_for.mab +0 -3
  55. data/spec/markaby/rails_spec.rb +0 -361
  56. data/spec/markaby/rails_version_spec.rb +0 -37
  57. data/spec/markaby/sinatra/app.rb +0 -49
  58. data/spec/markaby/sinatra/sinatra_spec.rb +0 -64
  59. data/spec/markaby/sinatra/views/helpers.mab +0 -1
  60. data/spec/markaby/sinatra/views/layout.mab +0 -7
  61. data/spec/markaby/sinatra/views/markaby_template.mab +0 -0
  62. data/spec/markaby/sinatra/views/scope_instance_variables.mab +0 -3
  63. data/spec/markaby/sinatra/views/simple_html.mab +0 -4
  64. data/spec/markaby/sinatra/views/variables.mab +0 -3
  65. data/spec/markaby/tilt/erb.erb +0 -1
  66. data/spec/markaby/tilt/locals.mab +0 -1
  67. data/spec/markaby/tilt/markaby.mab +0 -1
  68. data/spec/markaby/tilt/markaby_other_static.mab +0 -1
  69. data/spec/markaby/tilt/render_twice.mab +0 -1
  70. data/spec/markaby/tilt/scope.mab +0 -1
  71. data/spec/markaby/tilt/yielding.mab +0 -2
  72. data/spec/markaby/tilt_spec.rb +0 -75
  73. /data/{spec/spec.opts → .rspec} +0 -0
data/lib/markaby/tilt.rb DELETED
@@ -1,42 +0,0 @@
1
- require 'markaby'
2
- require 'tilt'
3
-
4
- module Markaby
5
- module Tilt
6
- class Template < ::Tilt::Template
7
- class TiltBuilder < Markaby::Builder
8
- def __capture_markaby_tilt__(&block)
9
- __run_markaby_tilt__ do
10
- text capture(&block)
11
- end
12
- end
13
- end
14
-
15
- def evaluate(scope, locals, &block)
16
- builder = TiltBuilder.new({}, scope)
17
- builder.locals = locals
18
-
19
- if block
20
- builder.instance_eval <<-CODE, __FILE__, __LINE__
21
- def __run_markaby_tilt__
22
- #{data}
23
- end
24
- CODE
25
-
26
- builder.__capture_markaby_tilt__(&block)
27
- else
28
- builder.instance_eval(data, __FILE__, __LINE__)
29
- end
30
-
31
- builder.to_s
32
- end
33
-
34
- def prepare; end
35
- end
36
- end
37
- end
38
-
39
- module Tilt
40
- MarkabyTemplate = Markaby::Tilt::Template
41
- register :mab, MarkabyTemplate
42
- end
@@ -1 +0,0 @@
1
- text "_why?"
@@ -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
- 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 +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,361 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'rails', 'spec_helper')
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
- end
157
-
158
- class MarkabyOnRailsTest < ActionController::TestCase
159
- def setup
160
- Markaby::Builder.restore_defaults!
161
-
162
- @request = ActionController::TestRequest.new
163
- @response = ActionController::TestResponse.new
164
- @controller = MarkabyController.new
165
- end
166
-
167
- def test_renders_nothing
168
- get :renders_nothing
169
- assert_response :success
170
- end
171
-
172
- def test_renders_erb_with_explicit_template
173
- get :renders_erb_with_explicit_template
174
- assert_response :success
175
- # TODO: - fix this test environment issue so that assert_template works
176
- # correctly in these tests
177
- # assert_template "renders_erb.erb"
178
- end
179
-
180
- def test_renders_explicit_but_empty_markaby_layout
181
- get :render_explicit_but_empty_markaby_layout
182
- assert_response :success
183
-
184
- assert_equal "", @response.body
185
- # TODO:
186
- # assert_template "markaby/render_explicit_but_empty_markaby_layout"
187
- end
188
-
189
- def test_renders_inline_markaby_content
190
- get :render_inline_content
191
- assert_response :success
192
- assert_equal "<ul><li>Scott</li></ul>", @response.body
193
- end
194
-
195
- def test_renders_mab_template_with_no_values_passed
196
- get :no_values_passed
197
- assert_response :success
198
- assert_equal "<ul><li>Scott</li></ul>", @response.body
199
- end
200
-
201
- def test_renders_mab_template_with_correct_values
202
- get :correct_template_values
203
- assert_response :success
204
-
205
- assert_equal "<ul><li>smt</li><li>joho</li><li>spox</li></ul>", @response.body
206
- end
207
-
208
- def test_renders_without_explicit_render_call
209
- get :render_mab_without_explicit_render_call
210
- assert_response :success
211
-
212
- assert_equal @response.body, "<ul><li>smtlaissezfaire</li></ul>"
213
- end
214
-
215
- def test_renders_with_ivar
216
- get :render_with_ivar
217
- assert_response :success
218
-
219
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
220
- end
221
-
222
- def test_access_to_helpers
223
- get :access_to_helpers
224
- assert_response :success
225
-
226
- assert_equal '<a href="/foo">bar</a>', @response.body
227
- end
228
-
229
- def test_renders_partial_from_template
230
- get :renders_partial
231
- assert_response :success
232
-
233
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
234
- end
235
-
236
- def test_renders_partial_with_locals
237
- get :renders_partial_with_locals
238
- assert_response :success
239
-
240
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
241
- end
242
-
243
- def test_raises_error_when_template_raises_error
244
- get :render_which_raises_error
245
-
246
- assert_response :error
247
-
248
- assert_equal ActionView::TemplateError, @controller.last_exception.class
249
- assert %r(undefined local variable or method `supercalifragilisticexpialidocious' for #<Markaby::.*Builder.*) =~
250
- @controller.last_exception.message.to_s
251
- end
252
-
253
- def test_routes_work
254
- get :routes
255
- assert_response :success
256
-
257
- expected_output = "<a href=\"/users/new\">Foo</a>"
258
- assert_equal expected_output, @response.body
259
- end
260
-
261
- def test_commented_out_template_cant_raise_errors
262
- get :commented_out_template
263
- assert_response :success
264
-
265
- expected_output = ""
266
- assert_equal expected_output, @response.body
267
- end
268
-
269
- if Rails::VERSION::MAJOR >= 2
270
- def test_renders_form_for_properly
271
- get :renders_form_for
272
-
273
- assert_response :success
274
-
275
- assert %r(<form.*></form>) =~ @response.body
276
- end
277
-
278
- def test_renders_form_for_with_fields_for
279
- get :render_form_for_with_fields
280
-
281
- assert_response :success
282
-
283
- assert_equal "<form action=\"/markaby/render_form_for_with_fields\" method=\"post\"><input id=\"foo_foo\" name=\"foo[foo]\" size=\"30\" type=\"text\" /></form>",
284
- @response.body
285
- end
286
-
287
- def test_renders_form_for_with_multiple_fields
288
- get :render_form_for_with_multiple_fields
289
-
290
- assert_response :success
291
-
292
- expected_output = "<form action=\"/markaby/render_form_for_with_multiple_fields\" method=\"post\">"
293
- expected_output << "<input id=\"foo_foo\" name=\"foo[foo]\" size=\"30\" type=\"text\" />"
294
- expected_output << "<input id=\"foo_baz\" name=\"foo[baz]\" size=\"30\" type=\"text\" />"
295
- expected_output << "</form>"
296
-
297
- assert_equal expected_output,
298
- @response.body
299
- end
300
-
301
- def test_rendering_with_yield_works
302
- get :render_with_yielding
303
- assert_response :success
304
-
305
- expected_output = '<div id="main"><p class="hey">hi there</p></div>'
306
- assert_equal expected_output, @response.body
307
- end
308
-
309
- def test_render_with_yielding_where_template_has_two_elements
310
- get :render_with_yielding_where_template_has_two_elements
311
- assert_response :success
312
-
313
- expected_output = '<div id="main"><p class="hi">hi there</p><p class="hi">hi again</p></div>'
314
- assert_equal expected_output, @response.body
315
- end
316
-
317
- def test_render_with_yielding_content_for_block
318
- get :render_with_yielding_content_for_block
319
- assert_response :success
320
-
321
- expected_output = '<div id="main"></div><div id="foo"><p>in foo content_for</p></div>'
322
- assert_equal expected_output, @response.body
323
- end
324
-
325
- def test_render_content_for_with_block_helper
326
- get :render_content_for_with_block_helper
327
- assert_response :success
328
-
329
- expected_output = '<div id="main"></div><div id="foo">'
330
- expected_output << '<form action="/markaby/render_content_for_with_block_helper" method="post">'
331
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
332
- expected_output << '</form>'
333
- expected_output << '</div>'
334
-
335
- assert_equal expected_output, @response.body
336
- end
337
-
338
- def test_renders_content_for_with_form_for_without_double_render
339
- get :renders_content_for_with_form_for_without_double_render
340
- assert_response :success
341
-
342
- expected_output = '<div id="main"></div><div id="foo">'
343
- expected_output << '<form action="/markaby/renders_content_for_with_form_for_without_double_render" method="post">'
344
- expected_output << '<p class="foo">'
345
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
346
- expected_output << '<input id="foo_submit" name="commit" type="submit" value="foo" />'
347
- expected_output << '</p>'
348
- expected_output << '</form>'
349
- expected_output << '</div>'
350
-
351
- assert_equal expected_output, @response.body
352
- end
353
- end
354
- end
355
-
356
- describe "rails version" do
357
- it "should support the current rails version" do
358
- Markaby::Rails::SUPPORTED_RAILS_VERSIONS.should include(::Rails::VERSION::STRING)
359
- end
360
- end
361
- end
@@ -1,37 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'rails', 'spec_helper')
2
-
3
- unless RUNNING_RAILS
4
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
5
-
6
- describe "when rails is loaded, but is not a supported version" do
7
- module MockRails
8
- module VERSION
9
- STRING = ::Markaby::Rails::UNSUPPORTED_RAILS_VERSIONS.first
10
- end
11
- end
12
-
13
- def install_mock_rails
14
- Object.const_set(:Rails, MockRails)
15
- end
16
-
17
- def remove_mock_rails
18
- Object.class_eval do
19
- remove_const(:Rails)
20
- end
21
- end
22
-
23
- before do
24
- install_mock_rails
25
- end
26
-
27
- after do
28
- remove_mock_rails
29
- end
30
-
31
- it "should raise" do
32
- lambda {
33
- ::Markaby::Rails.load
34
- }.should raise_error(LoadError, "Cannot load markaby under rails version 2.0.0. See Markaby::Rails::SUPPORTED_RAILS_VERSIONS for exactly that, or redefine this constant.")
35
- end
36
- end
37
- end
@@ -1,49 +0,0 @@
1
- set :views, lambda { File.join(File.dirname(__FILE__), "views") }
2
-
3
- get '/empty_action' do
4
- "hi there"
5
- end
6
-
7
- get '/markaby_template' do
8
- mab :markaby_template
9
- end
10
-
11
- get '/simple_html' do
12
- mab :simple_html
13
- end
14
-
15
- get '/variables' do
16
- mab :variables, {}, :name => "Scott Taylor"
17
- end
18
-
19
- get '/variables_with_locals' do
20
- mab :variables, :locals => { :name => "Scott Taylor" }
21
- end
22
-
23
- get '/scope_instance_variables' do
24
- @name = "Scott Taylor"
25
- mab :variables
26
- end
27
-
28
- template :layout_index do
29
- 'div.title "Hello World!"'
30
- end
31
-
32
- get "/named_template" do
33
- mab :layout_index
34
- end
35
-
36
- get "/layout" do
37
- @display_layout = true
38
- mab :layout_index
39
- end
40
-
41
- helpers do
42
- def chunky
43
- "bacon"
44
- end
45
- end
46
-
47
- get "/helpers" do
48
- mab :helpers
49
- end