haml 4.0.6 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/CHANGELOG.md +49 -4
- data/FAQ.md +4 -14
- data/MIT-LICENSE +1 -1
- data/README.md +85 -42
- data/REFERENCE.md +109 -58
- data/Rakefile +46 -54
- data/lib/haml/attribute_builder.rb +163 -0
- data/lib/haml/attribute_compiler.rb +215 -0
- data/lib/haml/attribute_parser.rb +144 -0
- data/lib/haml/buffer.rb +26 -136
- data/lib/haml/compiler.rb +87 -295
- data/lib/haml/engine.rb +25 -41
- data/lib/haml/error.rb +3 -0
- data/lib/haml/escapable.rb +49 -0
- data/lib/haml/exec.rb +33 -19
- data/lib/haml/filters.rb +18 -24
- data/lib/haml/generator.rb +41 -0
- data/lib/haml/helpers/action_view_extensions.rb +3 -2
- data/lib/haml/helpers/action_view_mods.rb +36 -58
- data/lib/haml/helpers/action_view_xss_mods.rb +1 -0
- data/lib/haml/helpers/safe_erubi_template.rb +27 -0
- data/lib/haml/helpers/safe_erubis_template.rb +4 -1
- data/lib/haml/helpers/xss_mods.rb +18 -12
- data/lib/haml/helpers.rb +133 -90
- data/lib/haml/options.rb +38 -47
- data/lib/haml/parser.rb +278 -216
- data/lib/haml/{template/plugin.rb → plugin.rb} +8 -15
- data/lib/haml/railtie.rb +21 -12
- data/lib/haml/sass_rails_filter.rb +17 -4
- data/lib/haml/template/options.rb +12 -2
- data/lib/haml/template.rb +12 -6
- data/lib/haml/temple_engine.rb +120 -0
- data/lib/haml/temple_line_counter.rb +29 -0
- data/lib/haml/util.rb +80 -199
- data/lib/haml/version.rb +2 -1
- data/lib/haml.rb +1 -0
- data/test/attribute_parser_test.rb +101 -0
- data/test/engine_test.rb +287 -176
- data/test/filters_test.rb +32 -19
- data/test/gemfiles/Gemfile.rails-4.0.x +9 -3
- data/test/gemfiles/Gemfile.rails-4.0.x.lock +87 -0
- data/test/gemfiles/Gemfile.rails-4.1.x +5 -0
- data/test/gemfiles/Gemfile.rails-4.2.x +5 -0
- data/test/gemfiles/Gemfile.rails-5.0.x +4 -0
- data/test/helper_test.rb +224 -112
- data/test/options_test.rb +22 -0
- data/test/parser_test.rb +71 -4
- data/test/results/bemit.xhtml +4 -0
- data/test/results/eval_suppressed.xhtml +4 -4
- data/test/results/helpers.xhtml +43 -41
- data/test/results/helpful.xhtml +6 -3
- data/test/results/just_stuff.xhtml +21 -20
- data/test/results/list.xhtml +9 -9
- data/test/results/nuke_inner_whitespace.xhtml +22 -22
- data/test/results/nuke_outer_whitespace.xhtml +84 -92
- data/test/results/original_engine.xhtml +17 -17
- data/test/results/partial_layout.xhtml +4 -3
- data/test/results/partial_layout_erb.xhtml +4 -3
- data/test/results/partials.xhtml +11 -10
- data/test/results/silent_script.xhtml +63 -63
- data/test/results/standard.xhtml +156 -159
- data/test/results/tag_parsing.xhtml +19 -19
- data/test/results/very_basic.xhtml +2 -2
- data/test/results/whitespace_handling.xhtml +77 -76
- data/test/template_test.rb +24 -56
- data/test/template_test_helper.rb +38 -0
- data/test/templates/bemit.haml +3 -0
- data/test/templates/just_stuff.haml +1 -0
- data/test/templates/standard_ugly.haml +1 -0
- data/test/templates/with_bom.haml +1 -0
- data/test/temple_line_counter_test.rb +40 -0
- data/test/test_helper.rb +26 -8
- data/test/util_test.rb +6 -47
- metadata +53 -36
- data/test/gemfiles/Gemfile.rails-3.0.x +0 -5
- data/test/gemfiles/Gemfile.rails-3.1.x +0 -6
- data/test/gemfiles/Gemfile.rails-3.2.x +0 -5
- data/test/templates/_av_partial_1_ugly.haml +0 -9
- data/test/templates/_av_partial_2_ugly.haml +0 -5
- data/test/templates/action_view_ugly.haml +0 -47
- data/test/templates/standard_ugly.haml +0 -43
@@ -1,68 +1,68 @@
|
|
1
1
|
<div>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
2
|
+
<h1>I can count!</h1>
|
3
|
+
1
|
4
|
+
2
|
5
|
+
3
|
6
|
+
4
|
7
|
+
5
|
8
|
+
6
|
9
|
+
7
|
10
|
+
8
|
11
|
+
9
|
12
|
+
10
|
13
|
+
11
|
14
|
+
12
|
15
|
+
13
|
16
|
+
14
|
17
|
+
15
|
18
|
+
16
|
19
|
+
17
|
20
|
+
18
|
21
|
+
19
|
22
|
+
20
|
23
|
+
<h1>I know my ABCs!</h1>
|
24
|
+
<ul>
|
25
|
+
<li>a</li>
|
26
|
+
<li>b</li>
|
27
|
+
<li>c</li>
|
28
|
+
<li>d</li>
|
29
|
+
<li>e</li>
|
30
|
+
<li>f</li>
|
31
|
+
<li>g</li>
|
32
|
+
<li>h</li>
|
33
|
+
<li>i</li>
|
34
|
+
<li>j</li>
|
35
|
+
<li>k</li>
|
36
|
+
<li>l</li>
|
37
|
+
<li>m</li>
|
38
|
+
<li>n</li>
|
39
|
+
<li>o</li>
|
40
|
+
<li>p</li>
|
41
|
+
<li>q</li>
|
42
|
+
<li>r</li>
|
43
|
+
<li>s</li>
|
44
|
+
<li>t</li>
|
45
|
+
<li>u</li>
|
46
|
+
<li>v</li>
|
47
|
+
<li>w</li>
|
48
|
+
<li>x</li>
|
49
|
+
<li>y</li>
|
50
|
+
<li>z</li>
|
51
|
+
</ul>
|
52
|
+
<h1>I can catch errors!</h1>
|
53
|
+
Oh no! "foo" happened!
|
54
|
+
<p>
|
55
|
+
"false" is:
|
56
|
+
false
|
57
|
+
</p>
|
58
|
+
Even!
|
59
|
+
Odd!
|
60
|
+
Even!
|
61
|
+
Odd!
|
62
|
+
Even!
|
63
63
|
</div>
|
64
64
|
<div class='foo'>
|
65
|
-
|
65
|
+
<strong>foobar</strong>
|
66
66
|
</div>
|
67
67
|
<strong>0</strong>
|
68
68
|
<strong>1</strong>
|
@@ -70,5 +70,5 @@
|
|
70
70
|
<strong>3</strong>
|
71
71
|
<strong>4</strong>
|
72
72
|
<div class='test'>
|
73
|
-
|
73
|
+
<p>boom</p>
|
74
74
|
</div>
|
data/test/results/standard.xhtml
CHANGED
@@ -1,162 +1,159 @@
|
|
1
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
2
|
<html lang='en-US' xml:lang='en-US' xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
</strong>
|
160
|
-
</div>
|
161
|
-
</body>
|
3
|
+
<head>
|
4
|
+
<title>Hampton Catlin Is Totally Awesome</title>
|
5
|
+
<meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<!-- You're In my house now! -->
|
9
|
+
<div class='header'>
|
10
|
+
Yes, ladies and gentileman. He is just that egotistical.
|
11
|
+
Fantastic! This should be multi-line output
|
12
|
+
The question is if this would translate! Ahah!
|
13
|
+
20
|
14
|
+
</div>
|
15
|
+
<div id='body'> Quotes should be loved! Just like people!</div>
|
16
|
+
0
|
17
|
+
1
|
18
|
+
2
|
19
|
+
3
|
20
|
+
4
|
21
|
+
5
|
22
|
+
6
|
23
|
+
7
|
24
|
+
8
|
25
|
+
9
|
26
|
+
10
|
27
|
+
11
|
28
|
+
12
|
29
|
+
13
|
30
|
+
14
|
31
|
+
15
|
32
|
+
16
|
33
|
+
17
|
34
|
+
18
|
35
|
+
19
|
36
|
+
20
|
37
|
+
21
|
38
|
+
22
|
39
|
+
23
|
40
|
+
24
|
41
|
+
25
|
42
|
+
26
|
43
|
+
27
|
44
|
+
28
|
45
|
+
29
|
46
|
+
30
|
47
|
+
31
|
48
|
+
32
|
49
|
+
33
|
50
|
+
34
|
51
|
+
35
|
52
|
+
36
|
53
|
+
37
|
54
|
+
38
|
55
|
+
39
|
56
|
+
40
|
57
|
+
41
|
58
|
+
42
|
59
|
+
43
|
60
|
+
44
|
61
|
+
45
|
62
|
+
46
|
63
|
+
47
|
64
|
+
48
|
65
|
+
49
|
66
|
+
50
|
67
|
+
51
|
68
|
+
52
|
69
|
+
53
|
70
|
+
54
|
71
|
+
55
|
72
|
+
56
|
73
|
+
57
|
74
|
+
58
|
75
|
+
59
|
76
|
+
60
|
77
|
+
61
|
78
|
+
62
|
79
|
+
63
|
80
|
+
64
|
81
|
+
65
|
82
|
+
66
|
83
|
+
67
|
84
|
+
68
|
85
|
+
69
|
86
|
+
70
|
87
|
+
71
|
88
|
+
72
|
89
|
+
73
|
90
|
+
74
|
91
|
+
75
|
92
|
+
76
|
93
|
+
77
|
94
|
+
78
|
95
|
+
79
|
96
|
+
80
|
97
|
+
81
|
98
|
+
82
|
99
|
+
83
|
100
|
+
84
|
101
|
+
85
|
102
|
+
86
|
103
|
+
87
|
104
|
+
88
|
105
|
+
89
|
106
|
+
90
|
107
|
+
91
|
108
|
+
92
|
109
|
+
93
|
110
|
+
94
|
111
|
+
95
|
112
|
+
96
|
113
|
+
97
|
114
|
+
98
|
115
|
+
99
|
116
|
+
100
|
117
|
+
101
|
118
|
+
102
|
119
|
+
103
|
120
|
+
104
|
121
|
+
105
|
122
|
+
106
|
123
|
+
107
|
124
|
+
108
|
125
|
+
109
|
126
|
+
110
|
127
|
+
111
|
128
|
+
112
|
129
|
+
113
|
130
|
+
114
|
131
|
+
115
|
132
|
+
116
|
133
|
+
117
|
134
|
+
118
|
135
|
+
119
|
136
|
+
Wow.|
|
137
|
+
<p code='3'>
|
138
|
+
Holy cow multiline tags! A pipe (|) even!
|
139
|
+
PipesIgnored|PipesIgnored|PipesIgnored|
|
140
|
+
1|2|3
|
141
|
+
</p>
|
142
|
+
<div class='silent' foo='17'>
|
143
|
+
this shouldn't evaluate but now it should!
|
144
|
+
</div>
|
145
|
+
<ul class='really cool'>
|
146
|
+
<li>a</li>
|
147
|
+
<li>b</li>
|
148
|
+
<li>c</li>
|
149
|
+
<li>d</li>
|
150
|
+
<li>e</li>
|
151
|
+
<li>f</li>
|
152
|
+
</ul>
|
153
|
+
<div class='of_divs_with_underscore' id='combo'>with this text</div>
|
154
|
+
foo<div class='footer'>
|
155
|
+
<strong class='shout'>This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid.
|
156
|
+
So, I'm just making it *really* long. God, I hope this works</strong>
|
157
|
+
</div>
|
158
|
+
</body>
|
162
159
|
</html>
|
@@ -1,23 +1,23 @@
|
|
1
1
|
<div class='tags'>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
2
|
+
<foo>1</foo>
|
3
|
+
<FOO>2</FOO>
|
4
|
+
<fooBAR>3</fooBAR>
|
5
|
+
<fooBar>4</fooBar>
|
6
|
+
<foo_bar>5</foo_bar>
|
7
|
+
<foo-bar>6</foo-bar>
|
8
|
+
<foo:bar>7</foo:bar>
|
9
|
+
<foo class='bar'>8</foo>
|
10
|
+
<fooBAr_baz:boom_bar>9</fooBAr_baz:boom_bar>
|
11
|
+
<foo13>10</foo13>
|
12
|
+
<foo2u>11</foo2u>
|
13
13
|
</div>
|
14
14
|
<div class='classes'>
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
15
|
+
<p class='foo bar' id='boom'></p>
|
16
|
+
<div class='fooBar'>a</div>
|
17
|
+
<div class='foo-bar'>b</div>
|
18
|
+
<div class='foo_bar'>c</div>
|
19
|
+
<div class='FOOBAR'>d</div>
|
20
|
+
<div class='foo16'>e</div>
|
21
|
+
<div class='123'>f</div>
|
22
|
+
<div class='foo2u'>g</div>
|
23
23
|
</div>
|