masterview 0.2.5 → 0.3.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 (155) hide show
  1. data/CHANGELOG +31 -1
  2. data/README +70 -69
  3. data/RELEASE_NOTES +70 -64
  4. data/Rakefile +26 -27
  5. data/TODO +13 -29
  6. data/doc/about.html +246 -0
  7. data/doc/configuration.html +49 -36
  8. data/doc/developer.html +423 -41
  9. data/doc/directives.html +139 -51
  10. data/doc/guide.html +19 -9
  11. data/doc/index.html +90 -224
  12. data/doc/installation.html +36 -28
  13. data/doc/media_list.html +30 -20
  14. data/doc/simple_diagram.html +3 -5
  15. data/doc/stylesheets/masterview.css +16 -1
  16. data/examples/rails_app_config/masterview/settings.rb +2 -1
  17. data/init.rb +1 -1
  18. data/lib/#ChangeLog# +6 -0
  19. data/lib/masterview/analyzer.rb +48 -34
  20. data/lib/masterview/attr_string_parser.rb +5 -1
  21. data/lib/masterview/case_insensitive_hash.rb +69 -0
  22. data/lib/masterview/{pathname_extensions.rb → core_ext/pathname.rb} +0 -0
  23. data/lib/masterview/{string_extensions.rb → core_ext/string.rb} +0 -0
  24. data/lib/masterview/deprecated/directive_base.rb +362 -0
  25. data/lib/masterview/directive_base.rb +201 -179
  26. data/lib/masterview/directive_dsl.rb +457 -0
  27. data/lib/masterview/directive_helpers.rb +28 -141
  28. data/lib/masterview/directive_load_path.rb +388 -0
  29. data/lib/masterview/directive_metadata.rb +377 -0
  30. data/lib/masterview/directive_registry.rb +259 -69
  31. data/lib/masterview/directives/.metadata +16 -0
  32. data/lib/masterview/directives/attr.rb +9 -8
  33. data/lib/masterview/directives/block.rb +11 -14
  34. data/lib/masterview/directives/check_box.rb +13 -18
  35. data/lib/masterview/directives/collection_select.rb +15 -29
  36. data/lib/masterview/directives/content.rb +9 -3
  37. data/lib/masterview/directives/else.rb +15 -13
  38. data/lib/masterview/directives/elsif.rb +14 -13
  39. data/lib/masterview/directives/eval.rb +20 -0
  40. data/lib/masterview/directives/form.rb +56 -9
  41. data/lib/masterview/directives/form_remote.rb +26 -0
  42. data/lib/masterview/directives/global_inline_erb.rb +10 -14
  43. data/lib/masterview/directives/hidden_field.rb +11 -20
  44. data/lib/masterview/directives/if.rb +13 -12
  45. data/lib/masterview/directives/image_tag.rb +20 -28
  46. data/lib/masterview/directives/import.rb +5 -12
  47. data/lib/masterview/directives/import_render.rb +7 -19
  48. data/lib/masterview/directives/insert_generated_comment.rb +8 -11
  49. data/lib/masterview/directives/javascript_include.rb +21 -12
  50. data/lib/masterview/directives/link_to.rb +14 -8
  51. data/lib/masterview/directives/link_to_function.rb +22 -0
  52. data/lib/masterview/directives/link_to_if.rb +15 -13
  53. data/lib/masterview/directives/link_to_remote.rb +13 -8
  54. data/lib/masterview/directives/omit_tag.rb +32 -16
  55. data/lib/masterview/directives/password_field.rb +10 -22
  56. data/lib/masterview/directives/radio_button.rb +11 -22
  57. data/lib/masterview/directives/replace.rb +7 -8
  58. data/lib/masterview/directives/select.rb +11 -24
  59. data/lib/masterview/directives/stylesheet_link.rb +20 -12
  60. data/lib/masterview/directives/submit.rb +11 -5
  61. data/lib/masterview/directives/text_area.rb +10 -23
  62. data/lib/masterview/directives/text_field.rb +10 -22
  63. data/lib/masterview/exceptions.rb +21 -0
  64. data/lib/masterview/extras/app/controllers/masterview_controller.rb +102 -75
  65. data/lib/masterview/extras/app/views/layouts/masterview_admin.rhtml +24 -23
  66. data/lib/masterview/extras/app/views/layouts/masterview_admin_config.rhtml +81 -0
  67. data/lib/masterview/extras/app/views/masterview/admin/configuration.rhtml +5 -1
  68. data/lib/masterview/extras/app/views/masterview/admin/create.rhtml +2 -2
  69. data/lib/masterview/extras/app/views/masterview/admin/directives.rhtml +5 -0
  70. data/lib/masterview/extras/app/views/masterview/admin/features.rhtml +5 -79
  71. data/lib/masterview/extras/app/views/masterview/admin/interact.rhtml +5 -0
  72. data/lib/masterview/extras/app/views/masterview/admin/list.rhtml +3 -71
  73. data/lib/masterview/extras/init_mv_admin_pages.rb +42 -23
  74. data/lib/masterview/filter_helpers.rb +26 -0
  75. data/lib/masterview/initializer.rb +99 -53
  76. data/lib/masterview/io.rb +19 -15
  77. data/lib/masterview/keyword_expander.rb +7 -2
  78. data/lib/masterview/masterview_info.rb +229 -23
  79. data/lib/masterview/masterview_version.rb +2 -2
  80. data/lib/masterview/parser.rb +275 -105
  81. data/lib/masterview/parser_helpers.rb +54 -0
  82. data/lib/masterview/rails_ext/action_controller_erb_direct.rb +29 -0
  83. data/lib/masterview/rails_ext/action_controller_reparse_checking.rb +27 -0
  84. data/lib/masterview/{extras/init_rails_erb_mv_direct.rb → rails_ext/action_view_erb_direct.rb} +12 -59
  85. data/lib/masterview/template_spec.rb +3 -2
  86. data/lib/masterview.rb +21 -12
  87. data/lib/rexml/parsers/baseparser_with_doctype_fix.rb +473 -0
  88. data/lib/rexml/parsers/sax2parser_with_doctype_fix.rb +243 -0
  89. data/test/directive_test_helper.rb +135 -0
  90. data/test/fixtures/directives/id_check.rb +18 -0
  91. data/test/fixtures/directives/test_directive_events.rb +70 -0
  92. data/test/test_helper.rb +18 -5
  93. data/test/tmp/views/layouts/product.rhtml +10 -10
  94. data/test/tmp/views/product/_form.rhtml +4 -4
  95. data/test/tmp/views/product/_product.rhtml +3 -3
  96. data/test/tmp/views/product/destroy.rhtml +5 -5
  97. data/test/tmp/views/product/edit.rhtml +4 -4
  98. data/test/tmp/views/product/list.rhtml +3 -3
  99. data/test/tmp/views/product/new.rhtml +4 -4
  100. data/test/tmp/views/product/show.rhtml +2 -2
  101. data/test/unit/attr_string_parser_test.rb +105 -0
  102. data/test/unit/case_insensitive_hash_mod_test.rb +104 -0
  103. data/test/unit/config_settings_test.rb +13 -1
  104. data/test/unit/default_generate_mio_filter_test.rb +3 -3
  105. data/test/unit/deprecated_directive_base_test.rb +30 -0
  106. data/test/unit/directive_attr_test.rb +111 -35
  107. data/test/unit/directive_base_test.rb +520 -1
  108. data/test/unit/directive_block_test.rb +30 -22
  109. data/test/unit/directive_content_test.rb +24 -11
  110. data/test/unit/directive_else_test.rb +18 -15
  111. data/test/unit/directive_elsif_test.rb +17 -15
  112. data/test/unit/directive_form_remote_test.rb +59 -0
  113. data/test/unit/directive_form_test.rb +31 -39
  114. data/test/unit/directive_global_inline_erb_test.rb +28 -17
  115. data/test/unit/directive_grid_test_notready.rb +38 -0
  116. data/test/unit/directive_helpers_test.rb +39 -0
  117. data/test/unit/directive_hidden_field_test.rb +44 -29
  118. data/test/unit/directive_if_test.rb +10 -7
  119. data/test/unit/directive_image_tag_test.rb +69 -61
  120. data/test/unit/directive_import_render_test.rb +28 -38
  121. data/test/unit/directive_import_test.rb +16 -14
  122. data/test/unit/directive_insert_generated_comment_test.rb +32 -0
  123. data/test/unit/directive_javascript_include_test.rb +40 -43
  124. data/test/unit/directive_link_to_function_test.rb +40 -0
  125. data/test/unit/directive_link_to_if_test.rb +52 -12
  126. data/test/unit/directive_link_to_remote_test.rb +58 -0
  127. data/test/unit/directive_link_to_test.rb +46 -31
  128. data/test/unit/directive_load_path_test.rb +257 -0
  129. data/test/unit/directive_metadata_test.rb +313 -0
  130. data/test/unit/directive_omit_tag_test.rb +73 -21
  131. data/test/unit/directive_password_field_test.rb +44 -38
  132. data/test/unit/directive_registry_test.rb +44 -0
  133. data/test/unit/directive_replace_test.rb +28 -12
  134. data/test/unit/directive_stylesheet_link_test.rb +43 -36
  135. data/test/unit/directive_submit_test.rb +29 -30
  136. data/test/unit/directive_text_area_test.rb +40 -36
  137. data/test/unit/directive_text_field_test.rb +44 -38
  138. data/test/unit/example_directive_child_events_test.rb +41 -0
  139. data/test/unit/example_test.rb +31 -4
  140. data/test/unit/file_mio_test.rb +18 -13
  141. data/test/unit/filter_helpers_test.rb +10 -8
  142. data/test/unit/find_directive_parent_test.rb +174 -0
  143. data/test/unit/keyword_expander_test.rb +4 -2
  144. data/test/unit/mio_test.rb +18 -11
  145. data/test/unit/mtime_string_hash_mio_tree_test.rb +5 -1
  146. data/test/unit/parser_test.rb +41 -29
  147. data/test/unit/pathname_extensions_test.rb +1 -1
  148. data/test/unit/run_parser_test.rb +2 -2
  149. data/test/unit/simplified_directive_base_test.rb +256 -0
  150. data/test/unit/string_hash_mio_test.rb +5 -1
  151. data/test/unit/template_file_watcher_test.rb +2 -2
  152. data/test/unit/template_test.rb +221 -46
  153. metadata +86 -45
  154. data/lib/masterview/directives/testfilter.rb +0 -55
  155. data/lib/masterview/extras/init_rails_reparse_checking.rb +0 -62
@@ -6,10 +6,88 @@ require File.join( currentPath, '../../lib/masterview' )
6
6
  require File.join( currentPath, '../test_helper' )
7
7
 
8
8
  class TestTemplate < Test::Unit::TestCase
9
+ DEBUG_DIRECTIVES_REGISTRY = false
9
10
  def setup
10
- MasterView::IOMgr.erb = MasterView::StringHashMIOTree.new({}, '.rhtml', :logging => true)
11
+ MasterView::IOMgr.erb = MasterView::MIO::StringHashMIOTree.new({}, '.rhtml', :logging => true)
12
+ # ensure that the system load path and directives registry are in standard state
13
+ MasterView::DirectiveLoadPath.reset_current()
14
+ MasterView::DirectiveRegistry.current.process_directives_load_path(MasterView::DirectiveLoadPath.current) # load directives and build maps
15
+ if DEBUG_DIRECTIVES_REGISTRY
16
+ STDOUT.puts "\n###TestTemplate reset load path and directives registry"
17
+ STDOUT.puts "...DirectiveLoadPath.current=#{MasterView::DirectiveLoadPath.current.inspect}"
18
+ STDOUT.puts "...DirectiveRegistry.current.mv_namespace_prefix: #{MasterView::DirectiveRegistry.current.mv_namespace_prefix}"
19
+ STDOUT.puts "...DirectiveRegistry.current.loaded_classes: #{MasterView::DirectiveRegistry.current.loaded_classes.size}"
20
+ STDOUT.puts "...DirectiveRegistry.current.loaded_namespaces: #{MasterView::DirectiveRegistry.current.loaded_namespaces.inspect}"
21
+ problems = []
22
+ nBuiltins = 0
23
+ MasterView::DirectiveRegistry.current.registered_directives.each { |dc|
24
+ if dc.default_namespace_prefix == 'mv:' or dc.name.starts_with?('MasterView::Directives::')
25
+ nBuiltins += 1
26
+ problems << dc.name.split(':').last if dc.namespace != 'mv'
27
+ end
28
+ }
29
+ problems.sort!
30
+ STDOUT.puts problems.empty? ? "...all #{nBuiltins} builtin directives ok" : "*****#{problems.size} of #{nBuiltins} MIS-REGISTERED: #{problems}"
31
+ STDOUT.puts ""
32
+ end
33
+ end
34
+
35
+ # test that xml declaration is retained in output
36
+ def test_xml_decl_basic
37
+ template = %Q{<?xml version="1.0" ?>\n<greeting mv:generate="foo/bar"><hello>World</hello></greeting>}
38
+ expected = {
39
+ 'foo/bar' => %Q{<?xml version="1.0" ?>\n<greeting><hello>World</hello></greeting>}
40
+ }
41
+ assert_template_result expected, template, {}, nil, false # lets not normalize whitespace so we can see if newlines are in there
42
+ end
43
+
44
+ # test that xml declaration is retained in output with encoding
45
+ def test_xml_decl_encoding
46
+ template = <<-END
47
+ <?xml version="1.0" encoding="UTF-8" ?>
48
+ <greeting mv:generate="foo/bar"><hello>World</hello></greeting>
49
+ END
50
+ expected = {
51
+ 'foo/bar' => %q{<?xml version="1.0" encoding="UTF-8" ?><greeting><hello>World</hello></greeting>}
52
+ }
53
+ assert_template_result expected, template
54
+ end
55
+
56
+ # test that xml declaration is retained in output with encoding and standalone attribute
57
+ def test_xml_decl_encoding_standalone
58
+ template = <<-END
59
+ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
60
+ <greeting mv:generate="foo/bar"><hello>World</hello></greeting>
61
+ END
62
+ expected = {
63
+ 'foo/bar' => %q{<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><greeting><hello>World</hello></greeting>}
64
+ }
65
+ assert_template_result expected, template
66
+ end
67
+
68
+ # test that xml declaration is retained in output with encoding
69
+ def test_xml_doctype_external
70
+ template = <<-END
71
+ <?xml version="1.0" encoding="UTF-8" ?>
72
+ <!DOCTYPE greeting SYSTEM "Hello DTD" "http://foo/hello.dtd">
73
+ <greeting mv:generate="foo/bar"><hello>World</hello></greeting>
74
+ END
75
+ expected = {
76
+ 'foo/bar' => %q{<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE greeting SYSTEM "Hello DTD" "http://foo/hello.dtd"><greeting><hello>World</hello></greeting>}
77
+ }
78
+ assert_template_result expected, template
11
79
  end
12
80
 
81
+ # test that xml doctype is retained in output
82
+ def test_xml_doctype_external_check_newlines
83
+ template = %Q{<?xml version="1.0" ?>\n<!DOCTYPE greeting SYSTEM "Hello DTD" "hello.dtd">\n<greeting mv:generate="foo/bar"><hello>World</hello></greeting>}
84
+ expected = {
85
+ 'foo/bar' => %Q{<?xml version="1.0" ?>\n<!DOCTYPE greeting SYSTEM "Hello DTD" "hello.dtd">\n<greeting><hello>World</hello></greeting>}
86
+ }
87
+ assert_template_result expected, template, {}, nil, false # lets not normalize whitespace so we can see if newlines are in there
88
+ end
89
+
90
+
13
91
  def test_attr
14
92
  template = <<-END
15
93
  <div mv:generate='foo/bar'>
@@ -93,7 +171,7 @@ class TestTemplate < Test::Unit::TestCase
93
171
  def test_block_and_content
94
172
  template = <<-END
95
173
  <div mv:generate='foo/bar'>
96
- <table>
174
+ <table>
97
175
  <tr mv:block="@products.each do |product|">
98
176
  <td>Name:</td><td mv:content="product.name">hello world</td>
99
177
  </tr>
@@ -101,7 +179,31 @@ class TestTemplate < Test::Unit::TestCase
101
179
  </div>
102
180
  END
103
181
  expected = {
104
- 'foo/bar' => "<div><table><% @products.each do |product| %><tr><td>Name:</td><td><%= product.name %></td></tr><% end %></table></div>"
182
+ 'foo/bar' => "<div><table><% @products.each do |product| -%><tr><td>Name:</td><td><%= product.name %></td></tr><% end -%></table></div>"
183
+ }
184
+ assert_template_result expected, template
185
+ end
186
+
187
+ def test_eval
188
+ template = <<-END
189
+ <div mv:generate='foo/bar'>
190
+ <span mv:eval="i = 1">foo bar</span>
191
+ </div>
192
+ END
193
+ expected = {
194
+ 'foo/bar' => "<div><% i = 1 -%><span>foo bar</span></div>"
195
+ }
196
+ assert_template_result expected, template
197
+ end
198
+
199
+ def test_eval_and_if
200
+ template = <<-END
201
+ <div mv:generate='foo/bar'>
202
+ <span mv:if="cat == 'blue'" mv:eval="i = 1">foo bar</span>
203
+ </div>
204
+ END
205
+ expected = {
206
+ 'foo/bar' => "<div><% if( cat == 'blue' ) -%><% i = 1 -%><span>foo bar</span><% end -%></div>"
105
207
  }
106
208
  assert_template_result expected, template
107
209
  end
@@ -115,7 +217,7 @@ class TestTemplate < Test::Unit::TestCase
115
217
  </div>
116
218
  END
117
219
  expected = {
118
- 'foo/bar' => "<div><%= form_tag {:action => 'create'}, :method => \"get\" %>hello world <%= end_form_tag %></div>"
220
+ 'foo/bar' => "<div><%= form_tag( { :action => 'create' }, :method => \"get\" ) %>hello world </form></div>"
119
221
  }
120
222
  assert_template_result expected, template
121
223
  end
@@ -127,7 +229,31 @@ class TestTemplate < Test::Unit::TestCase
127
229
  </div>
128
230
  END
129
231
  expected = {
130
- 'foo/bar' => "<div><%= link_to 'Hello World', :action => 'show', :id => @product %></div>"
232
+ 'foo/bar' => "<div><%= link_to( 'Hello World', :action => 'show', :id => @product ) %></div>"
233
+ }
234
+ assert_template_result expected, template
235
+ end
236
+
237
+ def test_link_to_and_if
238
+ template = <<-END
239
+ <div mv:generate='foo/bar'>
240
+ <a href="#" mv:if="@product_pages.current.next" mv:link_to=":page => @product_pages.current.next">Hello World</a>
241
+ </div>
242
+ END
243
+ expected = {
244
+ 'foo/bar' => "<div><% if( @product_pages.current.next ) -%><%= link_to( 'Hello World', :page => @product_pages.current.next ) %><% end -%></div>"
245
+ }
246
+ assert_template_result expected, template
247
+ end
248
+
249
+ def test_link_to_merge
250
+ template = <<-END
251
+ <div mv:generate='foo/bar'>
252
+ <a href="#" mv:link_to=":action => 'show', :id => @product" class="red">Hello World</a>
253
+ </div>
254
+ END
255
+ expected = {
256
+ 'foo/bar' => "<div><%= link_to( 'Hello World', { :action => 'show', :id => @product }, :class => \"red\" ) %></div>"
131
257
  }
132
258
  assert_template_result expected, template
133
259
  end
@@ -139,11 +265,60 @@ class TestTemplate < Test::Unit::TestCase
139
265
  </div>
140
266
  END
141
267
  expected = {
142
- 'foo/bar' => "<div><%= link_to_if @product_pages.current.previous, 'Previous page', {:page => @product_pages.current.previous } %></div>"
268
+ 'foo/bar' => "<div><%= link_to_if( @product_pages.current.previous, 'Previous page', {:page => @product_pages.current.previous } ) %></div>"
269
+ }
270
+ assert_template_result expected, template
271
+ end
272
+
273
+ def test_link_to_if_merge
274
+ template = <<-END
275
+ <div mv:generate='foo/bar'>
276
+ <a href="#" mv:link_to_if="@product_pages.current.previous, {:page => @product_pages.current.previous } " class="red">Previous page</a>
277
+ </div>
278
+ END
279
+ expected = {
280
+ 'foo/bar' => "<div><%= link_to_if( @product_pages.current.previous, 'Previous page', {:page => @product_pages.current.previous }, :class => \"red\" ) %></div>"
281
+ }
282
+ assert_template_result expected, template
283
+ end
284
+
285
+ def test_link_to_function
286
+ template = <<-END
287
+ <div mv:generate='foo/bar'>
288
+ <a href="#" mv:link_to_function="alert('hi there');" id="hw" class="red">Hello World</a>
289
+ </div>
290
+ END
291
+ expected = {
292
+ 'foo/bar' => "<div><%= link_to_function( 'Hello World', \"alert('hi there');\", :class => \"red\", :id => \"hw\" ) %></div>"
293
+ }
294
+ assert_template_result expected, template
295
+ end
296
+
297
+ def test_link_to_function_if_js
298
+ template = <<-END
299
+ <div mv:generate='foo/bar'>
300
+ <a href="#" mv:link_to_function="if(true){ alert('hi there'); }" id="hw" class="red">Hello World</a>
301
+ </div>
302
+ END
303
+ expected = {
304
+ 'foo/bar' => "<div><%= link_to_function( 'Hello World', \"if(true){ alert('hi there'); }\", :class => \"red\", :id => \"hw\" ) %></div>"
143
305
  }
144
306
  assert_template_result expected, template
145
307
  end
146
308
 
309
+ def test_link_to_function_if_js_merged
310
+ template = <<-END
311
+ <div mv:generate='foo/bar'>
312
+ <a href="#" mv:link_to_function="'foobarfun()', :id => 'hw'" class="red">Hello World</a>
313
+ </div>
314
+ END
315
+ expected = {
316
+ 'foo/bar' => "<div><%= link_to_function( 'Hello World', 'foobarfun()', :id => 'hw', :class => \"red\" ) %></div>"
317
+ }
318
+ assert_template_result expected, template
319
+ end
320
+
321
+
147
322
  def test_submit
148
323
  template = <<-END
149
324
  <div mv:generate='foo/bar'>
@@ -151,7 +326,7 @@ class TestTemplate < Test::Unit::TestCase
151
326
  </div>
152
327
  END
153
328
  expected = {
154
- 'foo/bar' => "<div><%= submit_tag 'Hello World', :foo => 'bar' %></div>"
329
+ 'foo/bar' => "<div><%= submit_tag( 'Hello World', :foo => 'bar' ) %></div>"
155
330
  }
156
331
  assert_template_result expected, template
157
332
  end
@@ -163,7 +338,7 @@ class TestTemplate < Test::Unit::TestCase
163
338
  </div>
164
339
  END
165
340
  expected = {
166
- 'foo/bar' => "<div><%= text_field 'product', 'price', :maxlength => 21, :size => 10 %></div>"
341
+ 'foo/bar' => "<div><%= text_field( 'product', 'price', :maxlength => 21, :size => 10 ) %></div>"
167
342
  }
168
343
  assert_template_result expected, template
169
344
  end
@@ -175,7 +350,7 @@ class TestTemplate < Test::Unit::TestCase
175
350
  </div>
176
351
  END
177
352
  expected = {
178
- 'foo/bar' => "<div><%= hidden_field 'product', 'price' %></div>"
353
+ 'foo/bar' => "<div><%= hidden_field( 'product', 'price' ) %></div>"
179
354
  }
180
355
  assert_template_result expected, template
181
356
  end
@@ -187,7 +362,7 @@ class TestTemplate < Test::Unit::TestCase
187
362
  </div>
188
363
  END
189
364
  expected = {
190
- 'foo/bar' => "<div><%= password_field 'product', 'price', :maxlength => 21, :size => 10 %></div>"
365
+ 'foo/bar' => "<div><%= password_field( 'product', 'price', :maxlength => 21, :size => 10 ) %></div>"
191
366
  }
192
367
  assert_template_result expected, template
193
368
  end
@@ -201,7 +376,7 @@ class TestTemplate < Test::Unit::TestCase
201
376
  </div>
202
377
  END
203
378
  expected = {
204
- 'foo/bar' => "<div><%= text_area 'product', 'desc', :class => \"foo\", :cols => 21, :disabled => true, :readonly => true, :rows => 10, :style => \"bar\" %></div>"
379
+ 'foo/bar' => "<div><%= text_area( 'product', 'desc', :class => \"foo\", :cols => 21, :disabled => true, :readonly => true, :rows => 10, :style => \"bar\" ) %></div>"
205
380
  }
206
381
  assert_template_result expected, template
207
382
  end
@@ -224,7 +399,7 @@ class TestTemplate < Test::Unit::TestCase
224
399
  <span mv:replace="h product[:price]">foo bar</span>
225
400
  </div>
226
401
  END
227
- expected = { }
402
+ expected = { }
228
403
  assert_template_result expected, template
229
404
  end
230
405
 
@@ -301,7 +476,7 @@ class TestTemplate < Test::Unit::TestCase
301
476
  </div>
302
477
  END
303
478
  expected = {
304
- 'foo/bar' => "<div><% if @hello %><div><% end %><foo>bar</foo><% if @hello %></div><% end %></div>"
479
+ 'foo/bar' => "<div><% if( @hello ) -%><div><% end -%><foo>bar</foo><% if( @hello ) -%></div><% end -%></div>"
305
480
  }
306
481
  assert_template_result expected, template
307
482
  end
@@ -361,10 +536,10 @@ class TestTemplate < Test::Unit::TestCase
361
536
 
362
537
  # Only simplify elements that are specified in the DTD as being empty, collapsing others can cause parsing
363
538
  # or rendering problems in browsers. Uses constant XHTMLEmptyElementNameSet to find elements that should be
364
- # collapsed.
539
+ # collapsed.
365
540
  # http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict
366
541
  # xhtml-1.0-Strict empty elements are:
367
- # base, meta, link, hr, br, param, img, area, input, col
542
+ # base, meta, link, hr, br, param, img, area, input, col
368
543
  def test_simplify_empty_elements
369
544
  template = <<-END
370
545
  <div mv:generate='foo/bar'>
@@ -475,7 +650,7 @@ class TestTemplate < Test::Unit::TestCase
475
650
  </div>
476
651
  END
477
652
  expected = {
478
- 'foo/bar' => "<div><%= image_tag 'cat.jpg' %></div>"
653
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg' ) %></div>"
479
654
  }
480
655
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
481
656
  end
@@ -487,7 +662,7 @@ class TestTemplate < Test::Unit::TestCase
487
662
  </div>
488
663
  END
489
664
  expected = {
490
- 'foo/bar' => "<div><%= image_tag 'cat.jpg' %></div>"
665
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg' ) %></div>"
491
666
  }
492
667
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
493
668
  end
@@ -499,7 +674,7 @@ class TestTemplate < Test::Unit::TestCase
499
674
  </div>
500
675
  END
501
676
  expected = {
502
- 'foo/bar' => "<div><%= image_tag '/myimages/cat.jpg' %></div>"
677
+ 'foo/bar' => "<div><%= image_tag( '/myimages/cat.jpg' ) %></div>"
503
678
  }
504
679
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
505
680
  end
@@ -511,7 +686,7 @@ class TestTemplate < Test::Unit::TestCase
511
686
  </div>
512
687
  END
513
688
  expected = {
514
- 'foo/bar' => "<div><%= image_tag 'cat.jpg', :size => '20x10' %></div>"
689
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg', :height => 10, :width => 20 ) %></div>"
515
690
  }
516
691
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
517
692
  end
@@ -523,7 +698,7 @@ class TestTemplate < Test::Unit::TestCase
523
698
  </div>
524
699
  END
525
700
  expected = {
526
- 'foo/bar' => "<div><%= image_tag 'cat.jpg', :height => '10' %></div>"
701
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg', :height => 10 ) %></div>"
527
702
  }
528
703
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
529
704
  end
@@ -535,7 +710,7 @@ class TestTemplate < Test::Unit::TestCase
535
710
  </div>
536
711
  END
537
712
  expected = {
538
- 'foo/bar' => "<div><%= image_tag 'cat.jpg', :width => '20' %></div>"
713
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg', :width => 20 ) %></div>"
539
714
  }
540
715
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
541
716
  end
@@ -547,7 +722,7 @@ class TestTemplate < Test::Unit::TestCase
547
722
  </div>
548
723
  END
549
724
  expected = {
550
- 'foo/bar' => "<div><%= image_tag 'cat.jpg', :alt => 'my cat', :size => '20x10' %></div>"
725
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg', :alt => \"my cat\", :height => 10, :width => 20 ) %></div>"
551
726
  }
552
727
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
553
728
  end
@@ -559,7 +734,7 @@ class TestTemplate < Test::Unit::TestCase
559
734
  </div>
560
735
  END
561
736
  expected = {
562
- 'foo/bar' => "<div><%= image_tag 'cat.jpg', :alt => 'my cat' %></div>"
737
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg', :alt => \"my cat\" ) %></div>"
563
738
  }
564
739
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
565
740
  end
@@ -571,7 +746,7 @@ class TestTemplate < Test::Unit::TestCase
571
746
  </div>
572
747
  END
573
748
  expected = {
574
- 'foo/bar' => "<div><%= image_tag 'cat.jpg', :alt => 'my cat', :class => 'blue' %></div>"
749
+ 'foo/bar' => "<div><%= image_tag( 'cat.jpg', :alt => \"my cat\", :class => \"blue\" ) %></div>"
575
750
  }
576
751
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
577
752
  end
@@ -583,7 +758,7 @@ class TestTemplate < Test::Unit::TestCase
583
758
  </div>
584
759
  END
585
760
  expected = {
586
- 'foo/bar' => "<div><%= javascript_include_tag 'cat.js' %></div>"
761
+ 'foo/bar' => "<div><%= javascript_include_tag( 'cat.js' ) %></div>"
587
762
  }
588
763
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
589
764
  end
@@ -595,7 +770,7 @@ class TestTemplate < Test::Unit::TestCase
595
770
  </div>
596
771
  END
597
772
  expected = {
598
- 'foo/bar' => "<div><%= javascript_include_tag :defaults %></div>"
773
+ 'foo/bar' => "<div><%= javascript_include_tag( :defaults ) %></div>"
599
774
  }
600
775
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
601
776
  end
@@ -607,7 +782,7 @@ class TestTemplate < Test::Unit::TestCase
607
782
  </div>
608
783
  END
609
784
  expected = {
610
- 'foo/bar' => "<div><%= javascript_include_tag 'cat.js' %></div>"
785
+ 'foo/bar' => "<div><%= javascript_include_tag( 'cat.js' ) %></div>"
611
786
  }
612
787
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
613
788
  end
@@ -619,7 +794,7 @@ class TestTemplate < Test::Unit::TestCase
619
794
  </div>
620
795
  END
621
796
  expected = {
622
- 'foo/bar' => "<div><%= javascript_include_tag '/myjavascripts/cat.js' %></div>"
797
+ 'foo/bar' => "<div><%= javascript_include_tag( '/myjavascripts/cat.js' ) %></div>"
623
798
  }
624
799
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
625
800
  end
@@ -631,7 +806,7 @@ class TestTemplate < Test::Unit::TestCase
631
806
  </div>
632
807
  END
633
808
  expected = {
634
- 'foo/bar' => "<div><%= check_box 'cat', 'dog', {:egg => 'chicken'}, 'yes', 'no' %></div>"
809
+ 'foo/bar' => "<div><%= check_box( 'cat', 'dog', {:egg => 'chicken'}, 'yes', 'no' ) %></div>"
635
810
  }
636
811
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
637
812
  end
@@ -643,7 +818,7 @@ class TestTemplate < Test::Unit::TestCase
643
818
  </div>
644
819
  END
645
820
  expected = {
646
- 'foo/bar' => "<div><%= check_box 'cat', 'dog' %></div>"
821
+ 'foo/bar' => "<div><%= check_box( 'cat', 'dog' ) %></div>"
647
822
  }
648
823
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
649
824
  end
@@ -655,7 +830,7 @@ class TestTemplate < Test::Unit::TestCase
655
830
  </div>
656
831
  END
657
832
  expected = {
658
- 'foo/bar' => "<div><%= check_box 'cat', 'dog', :egg => 'chicken' %></div>"
833
+ 'foo/bar' => "<div><%= check_box( 'cat', 'dog', :egg => 'chicken' ) %></div>"
659
834
  }
660
835
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
661
836
  end
@@ -667,7 +842,7 @@ class TestTemplate < Test::Unit::TestCase
667
842
  </div>
668
843
  END
669
844
  expected = {
670
- 'foo/bar' => "<div><%= check_box 'cat', 'dog', :class => \"green\", :id => \"boo\" %></div>"
845
+ 'foo/bar' => "<div><%= check_box( 'cat', 'dog', :class => \"green\", :id => \"boo\" ) %></div>"
671
846
  }
672
847
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
673
848
  end
@@ -679,7 +854,7 @@ class TestTemplate < Test::Unit::TestCase
679
854
  </div>
680
855
  END
681
856
  expected = {
682
- 'foo/bar' => "<div><%= check_box 'cat', 'dog', :hello => 'world', :class => \"green\", :id => \"boo\" %></div>"
857
+ 'foo/bar' => "<div><%= check_box( 'cat', 'dog', :hello => 'world', :class => \"green\", :id => \"boo\" ) %></div>"
683
858
  }
684
859
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
685
860
  end
@@ -691,7 +866,7 @@ class TestTemplate < Test::Unit::TestCase
691
866
  </div>
692
867
  END
693
868
  expected = {
694
- 'foo/bar' => "<div><%= radio_button 'cat', 'dog', 'egg' %></div>"
869
+ 'foo/bar' => "<div><%= radio_button( 'cat', 'dog', 'egg' ) %></div>"
695
870
  }
696
871
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
697
872
  end
@@ -703,7 +878,7 @@ class TestTemplate < Test::Unit::TestCase
703
878
  </div>
704
879
  END
705
880
  expected = {
706
- 'foo/bar' => "<div><%= radio_button 'cat', 'dog', 'egg' %></div>"
881
+ 'foo/bar' => "<div><%= radio_button( 'cat', 'dog', 'egg' ) %></div>"
707
882
  }
708
883
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
709
884
  end
@@ -715,7 +890,7 @@ class TestTemplate < Test::Unit::TestCase
715
890
  </div>
716
891
  END
717
892
  expected = {
718
- 'foo/bar' => "<div><%= radio_button 'cat', 'dog', 'egg', :class => \"green\", :id => \"boo\" %></div>"
893
+ 'foo/bar' => "<div><%= radio_button( 'cat', 'dog', 'egg', :class => \"green\", :id => \"boo\" ) %></div>"
719
894
  }
720
895
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
721
896
  end
@@ -727,7 +902,7 @@ class TestTemplate < Test::Unit::TestCase
727
902
  </div>
728
903
  END
729
904
  expected = {
730
- 'foo/bar' => "<div><%= radio_button 'cat', 'dog', 'egg', :hello => 'world', :class => \"green\", :id => \"boo\" %></div>"
905
+ 'foo/bar' => "<div><%= radio_button( 'cat', 'dog', 'egg', :hello => 'world', :class => \"green\", :id => \"boo\" ) %></div>"
731
906
  }
732
907
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
733
908
  end
@@ -742,7 +917,7 @@ class TestTemplate < Test::Unit::TestCase
742
917
  </div>
743
918
  END
744
919
  expected = {
745
- 'foo/bar' => "<div><%= select 'product', 'category_id', ['hardware', 'software'], {:hello => 'world'}, :readonly => true %></div>"
920
+ 'foo/bar' => "<div><%= select( 'product', 'category_id', ['hardware', 'software'], {:hello => 'world'}, :readonly => true ) %></div>"
746
921
  }
747
922
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
748
923
  end
@@ -757,7 +932,7 @@ class TestTemplate < Test::Unit::TestCase
757
932
  </div>
758
933
  END
759
934
  expected = {
760
- 'foo/bar' => "<div><%= select 'product', 'category_id', ['hardware', 'software'] %></div>"
935
+ 'foo/bar' => "<div><%= select( 'product', 'category_id', ['hardware', 'software'] ) %></div>"
761
936
  }
762
937
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
763
938
  end
@@ -772,7 +947,7 @@ class TestTemplate < Test::Unit::TestCase
772
947
  </div>
773
948
  END
774
949
  expected = {
775
- 'foo/bar' => "<div><%= select 'product', 'category_id', Categories.find_all.collect{|c| [c.name, c.id]} %></div>"
950
+ 'foo/bar' => "<div><%= select( 'product', 'category_id', Categories.find_all.collect{|c| [c.name, c.id]} ) %></div>"
776
951
  }
777
952
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
778
953
  end
@@ -787,7 +962,7 @@ class TestTemplate < Test::Unit::TestCase
787
962
  </div>
788
963
  END
789
964
  expected = {
790
- 'foo/bar' => "<div><%= select 'product', 'category_id', Categories.find_all.collect{|c| [c.name, c.id]}, {:hello => :world}, :readonly => true, :class => \"green\", :id => \"sel1\" %></div>"
965
+ 'foo/bar' => "<div><%= select( 'product', 'category_id', Categories.find_all.collect{|c| [c.name, c.id]}, {:hello => :world}, :readonly => true, :class => \"green\", :id => \"sel1\" ) %></div>"
791
966
  }
792
967
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
793
968
  end
@@ -802,7 +977,7 @@ class TestTemplate < Test::Unit::TestCase
802
977
  </div>
803
978
  END
804
979
  expected = {
805
- 'foo/bar' => "<div><%= collection_select 'product', 'category_id', Category.find(:all), 'id', 'name', {:hello => 'world'}, :readonly => true %></div>"
980
+ 'foo/bar' => "<div><%= collection_select( 'product', 'category_id', Category.find(:all), 'id', 'name', {:hello => 'world'}, :readonly => true ) %></div>"
806
981
  }
807
982
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
808
983
  end
@@ -817,7 +992,7 @@ class TestTemplate < Test::Unit::TestCase
817
992
  </div>
818
993
  END
819
994
  expected = {
820
- 'foo/bar' => "<div><%= collection_select 'product', 'category_id', Category.find(:all), 'id', 'name' %></div>"
995
+ 'foo/bar' => "<div><%= collection_select( 'product', 'category_id', Category.find(:all), 'id', 'name' ) %></div>"
821
996
  }
822
997
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
823
998
  end
@@ -832,7 +1007,7 @@ class TestTemplate < Test::Unit::TestCase
832
1007
  </div>
833
1008
  END
834
1009
  expected = {
835
- 'foo/bar' => "<div><%= collection_select 'product', 'category_id', Category.find(:all), :id, :name, {:hello => 'world'}, :readonly => true %></div>"
1010
+ 'foo/bar' => "<div><%= collection_select( 'product', 'category_id', Category.find(:all), :id, :name, {:hello => 'world'}, :readonly => true ) %></div>"
836
1011
  }
837
1012
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
838
1013
  end
@@ -847,7 +1022,7 @@ class TestTemplate < Test::Unit::TestCase
847
1022
  </div>
848
1023
  END
849
1024
  expected = {
850
- 'foo/bar' => "<div><%= collection_select 'product', 'category_id', Category.find(:all), 'id', 'name', {:hello => 'world'}, :readonly => true, :class => \"green\", :id => \"sel1\" %></div>"
1025
+ 'foo/bar' => "<div><%= collection_select( 'product', 'category_id', Category.find(:all), 'id', 'name', {:hello => 'world'}, :readonly => true, :class => \"green\", :id => \"sel1\" ) %></div>"
851
1026
  }
852
1027
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
853
1028
  end
@@ -862,7 +1037,7 @@ class TestTemplate < Test::Unit::TestCase
862
1037
  </div>
863
1038
  END
864
1039
  expected = {
865
- 'foo/bar' => "<div><%= collection_select 'product', 'category_id', Category.find(:all), 'id', 'name', {}, :class => \"green\", :id => \"sel1\" %></div>"
1040
+ 'foo/bar' => "<div><%= collection_select( 'product', 'category_id', Category.find(:all), 'id', 'name', {}, :class => \"green\", :id => \"sel1\" ) %></div>"
866
1041
  }
867
1042
  assert_template_result expected, template, :template_pathname => 'one/two_three.four'
868
1043
  end