slim 1.3.6 → 1.3.8

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.
@@ -104,4 +104,46 @@ div
104
104
  'This is the menu'
105
105
  end
106
106
  end
107
+
108
+ def test_render_with_begin_rescue
109
+ source = %q{
110
+ - begin
111
+ p Begin
112
+ - rescue
113
+ p Rescue
114
+ p After
115
+ }
116
+
117
+ assert_html '<p>Begin</p><p>After</p>', source
118
+ end
119
+
120
+ def test_render_with_begin_rescue_exception
121
+ source = %q{
122
+ - begin
123
+ p Begin
124
+ - raise 'Boom'
125
+ p After Boom
126
+ - rescue => ex
127
+ p = ex.message
128
+ p After
129
+ }
130
+
131
+ assert_html '<p>Begin</p><p>Boom</p><p>After</p>', source
132
+ end
133
+
134
+ def test_render_with_begin_rescue_ensure
135
+ source = %q{
136
+ - begin
137
+ p Begin
138
+ - raise 'Boom'
139
+ p After Boom
140
+ - rescue => ex
141
+ p = ex.message
142
+ - ensure
143
+ p Ensure
144
+ p After
145
+ }
146
+
147
+ assert_html '<p>Begin</p><p>Boom</p><p>Ensure</p><p>After</p>', source
148
+ end
107
149
  end
@@ -14,6 +14,57 @@ p
14
14
  assert_html "<p><b>Hello from BEFORE ERB BLOCK!</b>\nSecond Line!\ntrue</p>", source
15
15
  end
16
16
 
17
+ def test_wip_render_with_asciidoc
18
+ source = %q{
19
+ asciidoc:
20
+ == Header
21
+ Hello from #{"AsciiDoc!"}
22
+
23
+ #{1+2}
24
+
25
+ * one
26
+ * two
27
+ }
28
+
29
+ expected = <<-EOS
30
+ <div class="sect1">
31
+ <h2 id="_header">Header</h2>
32
+ <div class="sectionbody">
33
+ <div class="paragraph">
34
+ <p>Hello from AsciiDoc!</p>
35
+ </div>
36
+ <div class="paragraph">
37
+ <p>3</p>
38
+ </div>
39
+ <div class="ulist">
40
+ <ul>
41
+ <li>
42
+ <p>one</p>
43
+ </li>
44
+ <li>
45
+ <p>two</p>
46
+ </li>
47
+ </ul>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ EOS
52
+ # render, then remove blank lines and unindent the remaining lines
53
+ output = render(source).gsub(/^ *(\n|(?=[^ ]))/, '')
54
+
55
+ assert_equal expected, output
56
+
57
+ Slim::Embedded.with_options(:asciidoc => {:compact => true, :attributes => {'sectids!' => ''}}) do
58
+ # render, then unindent lines
59
+ output = render(source).gsub(/^ *(?=[^ ])/, '')
60
+ assert_equal expected.gsub('<h2 id="_header">', '<h2>'), output
61
+ end
62
+
63
+ # render again, then remove blank lines and unindent the remaining lines
64
+ output = render(source).gsub(/^ *(\n|(?=[^ ]))/, '')
65
+ assert_equal expected, output
66
+ end
67
+
17
68
  def test_render_with_markdown
18
69
  source = %q{
19
70
  markdown:
@@ -90,6 +141,34 @@ javascript:
90
141
  assert_html %q|<script type="text/javascript">$(function() { alert('hello'); });</script>|, source
91
142
  end
92
143
 
144
+ def test_render_with_javascript_with_explicit_html_comment
145
+ Slim::Engine.with_options(:js_wrapper => :comment) do
146
+ source = "javascript:\n\t$(function() {});\n\talert('hello')\np Hi"
147
+ assert_html "<script type=\"text/javascript\"><!--\n$(function() {});\nalert('hello')\n//--></script><p>Hi</p>", source
148
+ end
149
+ end
150
+
151
+ def test_render_with_javascript_with_explicit_cdata_comment
152
+ Slim::Engine.with_options(:js_wrapper => :cdata) do
153
+ source = "javascript:\n\t$(function() {});\n\talert('hello')\np Hi"
154
+ assert_html "<script type=\"text/javascript\">\n//<![CDATA[\n$(function() {});\nalert('hello')\n//]]>\n</script><p>Hi</p>", source
155
+ end
156
+ end
157
+
158
+ def test_render_with_javascript_with_format_xhtml_comment
159
+ Slim::Engine.with_options(:js_wrapper => :guess, :format => :xhtml) do
160
+ source = "javascript:\n\t$(function() {});\n\talert('hello')\np Hi"
161
+ assert_html "<script type=\"text/javascript\">\n//<![CDATA[\n$(function() {});\nalert('hello')\n//]]>\n</script><p>Hi</p>", source
162
+ end
163
+ end
164
+
165
+ def test_render_with_javascript_with_format_html_comment
166
+ Slim::Engine.with_options(:js_wrapper => :guess, :format => :html) do
167
+ source = "javascript:\n\t$(function() {});\n\talert('hello')\np Hi"
168
+ assert_html "<script type=\"text/javascript\"><!--\n$(function() {});\nalert('hello')\n//--></script><p>Hi</p>", source
169
+ end
170
+ end
171
+
93
172
  def test_render_with_ruby
94
173
  source = %q{
95
174
  ruby:
@@ -52,6 +52,20 @@ p id=(false ? 'notshown' : 'shown') = output_number
52
52
  assert_html '<div id="alpha-beta">Test it</div>', source, :attr_delimiter => {'class' => ' ', 'id' => '-' }
53
53
  end
54
54
 
55
+ def test_id_attribute_merging3
56
+ source = %{
57
+ #alpha id="beta" Test it
58
+ }
59
+ assert_html '<div id="alpha_beta">Test it</div>', source, :merge_attrs => {'class' => ' ', 'id' => '_' }
60
+ end
61
+
62
+ def test_id_attribute_merging4
63
+ source = %{
64
+ #alpha id="beta" Test it
65
+ }
66
+ assert_html '<div id="alpha-beta">Test it</div>', source, :merge_attrs => {'class' => ' ', 'id' => '-' }
67
+ end
68
+
55
69
  def test_boolean_attribute_false
56
70
  source = %{
57
71
  - cond=false
@@ -143,7 +157,7 @@ h1 *hash This is my title
143
157
 
144
158
  def test_closed_splat_tag
145
159
  source = %q{
146
- *hash / This is my title
160
+ *hash /
147
161
  }
148
162
 
149
163
  assert_html '<div a="The letter a" b="The letter b"/>', source
@@ -231,4 +245,12 @@ p(id="marvin" class=nil nonempty=("".to_s) data-info="Illudium Q-36")= output_nu
231
245
 
232
246
  assert_html '<p data-info="Illudium Q-36" id="marvin" nonempty="">1337</p>', source
233
247
  end
248
+
249
+ def test_double_escape_warning
250
+ source = %q{
251
+ a href='http://slim-lang.com?a=1&amp;b=2'
252
+ }
253
+
254
+ assert_html '<a href="http://slim-lang.com?a=1&amp;b=2"></a>', source
255
+ end
234
256
  end
@@ -149,4 +149,12 @@ html: body:/comment
149
149
  }
150
150
  assert_syntax_error "Expected tag\n (__TEMPLATE__), Line 2, Column 11\n html: body:/comment\n ^\n", source
151
151
  end
152
+
153
+ def test_unexpected_text_after_closed
154
+ source = %{
155
+ img / text
156
+ }
157
+
158
+ assert_syntax_error "Unexpected text after closed tag\n (__TEMPLATE__), Line 2, Column 6\n img / text\n ^\n", source
159
+ end
152
160
  end
@@ -41,7 +41,9 @@ html
41
41
  result = %q{<!DOCTYPE html>
42
42
  <html>
43
43
  <head>
44
- <title>Hello World!</title>
44
+ <title>
45
+ Hello World!
46
+ </title>
45
47
  <!--Meta tags
46
48
  with long explanatory
47
49
  multiline comment-->
@@ -52,24 +54,51 @@ html
52
54
  <!--Javascripts-->
53
55
  <script src="jquery.js"></script>
54
56
  <script src="jquery.ui.js"></script>
55
- <!--[if lt IE 9]><script src="old-ie1.js"></script>
56
- <script src="old-ie2.js"></script><![endif]-->
57
+ <!--[if lt IE 9]>
58
+ <script src="old-ie1.js"></script>
59
+ <script src="old-ie2.js"></script>
60
+ <![endif]-->
57
61
  <style type="text/css">
58
62
  body {
59
63
  background-color: red;
60
64
  }
61
- </style>
65
+ </style>
62
66
  </head>
63
67
  <body>
64
68
  <div id="container">
65
- <p>Hello
66
- World!</p>
67
- <p>dynamic text with
68
- newline</p>
69
+ <p>
70
+ Hello
71
+ World!
72
+ </p>
73
+ <p>
74
+ dynamic text with
75
+ newline
76
+ </p>
69
77
  </div>
70
78
  </body>
71
79
  </html>}
72
80
 
73
81
  assert_html result, source
74
82
  end
83
+
84
+ def test_partials
85
+ body = %q{body
86
+ == render content}
87
+
88
+ content = %q{div
89
+ | content}
90
+
91
+ source = %q{html
92
+ == render body, :scope => self, :locals => { :content => content }}
93
+
94
+ result = %q{<html>
95
+ <body>
96
+ <div>
97
+ content
98
+ </div>
99
+ </body>
100
+ </html>}
101
+
102
+ assert_html result, source, :scope => self, :locals => {:body => body, :content => content }
103
+ end
75
104
  end
@@ -161,7 +161,9 @@ p
161
161
  - test = 123
162
162
  = "Hello from within a block! "
163
163
  }
164
- assert_ruby_syntax_error "(__TEMPLATE__):5", source
164
+ # FIXME: Tilt add stupid end;end;end at the end, this leads to wrong line numbers
165
+ # See also #342
166
+ assert_ruby_syntax_error "(__TEMPLATE__):7", source
165
167
  end
166
168
 
167
169
  def test_invalid_nested_output
@@ -170,7 +172,9 @@ p
170
172
  = "Hello Ruby!"
171
173
  = "Hello from within a block! "
172
174
  }
173
- assert_ruby_syntax_error "(__TEMPLATE__):5", source
175
+ # FIXME: Tilt add stupid end;end;end at the end, this leads to wrong line numbers
176
+ # See also #342
177
+ assert_ruby_syntax_error "(__TEMPLATE__):7", source
174
178
  end
175
179
 
176
180
  def test_invalid_embedded_engine
@@ -0,0 +1,169 @@
1
+ require 'helper'
2
+
3
+ class TestSlimTabs < TestSlim
4
+
5
+ def teardown
6
+ Slim::Engine.set_default_options :tabsize => 4
7
+ end
8
+
9
+ def test_single_tab1_expansion
10
+
11
+ Slim::Engine.set_default_options :tabsize => 1
12
+
13
+ source = %Q{
14
+ |
15
+ \t0
16
+ \t1
17
+ \t2
18
+ \t3
19
+ \t4
20
+ \t5
21
+ \t6
22
+ \t7
23
+ \t8
24
+ }
25
+
26
+ result = %q{
27
+ 0
28
+ 1
29
+ 2
30
+ 3
31
+ 4
32
+ 5
33
+ 6
34
+ 7
35
+ 8
36
+ }.strip
37
+
38
+ assert_html result, source
39
+ end
40
+
41
+ def test_single_tab4_expansion
42
+
43
+ Slim::Engine.set_default_options :tabsize => 4
44
+
45
+ source = %Q{
46
+ |
47
+ \t0
48
+ \t1
49
+ \t2
50
+ \t3
51
+ \t4
52
+ \t5
53
+ \t6
54
+ \t7
55
+ \t8
56
+ }
57
+
58
+ result = %q{
59
+ 0
60
+ 1
61
+ 2
62
+ 3
63
+ 4
64
+ 5
65
+ 6
66
+ 7
67
+ 8
68
+ }.strip
69
+
70
+ assert_html result, source
71
+ end
72
+
73
+ def test_multi_tab1_expansion
74
+
75
+ Slim::Engine.set_default_options :tabsize => 1
76
+
77
+ source = %Q{
78
+ |
79
+ \t0
80
+ \t\t1
81
+ \t \t2
82
+ \t \t3
83
+ \t \t4
84
+ \t\t1
85
+ \t \t2
86
+ \t \t3
87
+ \t \t4
88
+ \t\t1
89
+ \t \t2
90
+ \t \t3
91
+ \t \t4
92
+ \t\t1
93
+ \t \t2
94
+ \t \t3
95
+ \t \t4
96
+ }
97
+
98
+ result = %q{
99
+ 0
100
+ 1
101
+ 2
102
+ 3
103
+ 4
104
+ 1
105
+ 2
106
+ 3
107
+ 4
108
+ 1
109
+ 2
110
+ 3
111
+ 4
112
+ 1
113
+ 2
114
+ 3
115
+ 4
116
+ }.strip
117
+
118
+ assert_html result, source
119
+ end
120
+
121
+ def test_multi_tab4_expansion
122
+
123
+ Slim::Engine.set_default_options :tabsize => 4
124
+
125
+ source = %Q{
126
+ |
127
+ \t0
128
+ \t\t1
129
+ \t \t2
130
+ \t \t3
131
+ \t \t4
132
+ \t\t1
133
+ \t \t2
134
+ \t \t3
135
+ \t \t4
136
+ \t\t1
137
+ \t \t2
138
+ \t \t3
139
+ \t \t4
140
+ \t\t1
141
+ \t \t2
142
+ \t \t3
143
+ \t \t4
144
+ }
145
+
146
+ result = %q{
147
+ 0
148
+ 1
149
+ 2
150
+ 3
151
+ 4
152
+ 1
153
+ 2
154
+ 3
155
+ 4
156
+ 1
157
+ 2
158
+ 3
159
+ 4
160
+ 1
161
+ 2
162
+ 3
163
+ 4
164
+ }.strip
165
+
166
+ assert_html result, source
167
+ end
168
+
169
+ end