haml 1.8.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of haml might be problematic. Click here for more details.
- data/FAQ +138 -0
- data/MIT-LICENSE +1 -1
- data/{README → README.rdoc} +66 -3
- data/Rakefile +111 -147
- data/VERSION +1 -1
- data/bin/css2sass +0 -0
- data/bin/haml +0 -0
- data/bin/html2haml +0 -0
- data/bin/sass +0 -0
- data/init.rb +6 -1
- data/lib/haml.rb +464 -201
- data/lib/haml/buffer.rb +117 -63
- data/lib/haml/engine.rb +63 -44
- data/lib/haml/error.rb +16 -6
- data/lib/haml/exec.rb +37 -7
- data/lib/haml/filters.rb +213 -68
- data/lib/haml/helpers.rb +95 -60
- data/lib/haml/helpers/action_view_extensions.rb +1 -1
- data/lib/haml/helpers/action_view_mods.rb +54 -6
- data/lib/haml/html.rb +6 -6
- data/lib/haml/precompiler.rb +254 -133
- data/lib/haml/template.rb +3 -6
- data/lib/haml/template/patch.rb +9 -2
- data/lib/haml/template/plugin.rb +52 -23
- data/lib/sass.rb +157 -12
- data/lib/sass/constant.rb +22 -22
- data/lib/sass/constant/color.rb +13 -13
- data/lib/sass/constant/literal.rb +7 -7
- data/lib/sass/constant/number.rb +9 -9
- data/lib/sass/constant/operation.rb +4 -4
- data/lib/sass/constant/string.rb +3 -3
- data/lib/sass/css.rb +104 -31
- data/lib/sass/engine.rb +120 -39
- data/lib/sass/error.rb +1 -1
- data/lib/sass/plugin.rb +14 -3
- data/lib/sass/plugin/merb.rb +6 -2
- data/lib/sass/tree/attr_node.rb +5 -5
- data/lib/sass/tree/directive_node.rb +2 -7
- data/lib/sass/tree/node.rb +1 -12
- data/lib/sass/tree/rule_node.rb +39 -31
- data/lib/sass/tree/value_node.rb +1 -1
- data/test/benchmark.rb +67 -80
- data/test/haml/engine_test.rb +284 -84
- data/test/haml/helper_test.rb +51 -15
- data/test/haml/results/content_for_layout.xhtml +1 -2
- data/test/haml/results/eval_suppressed.xhtml +2 -4
- data/test/haml/results/filters.xhtml +44 -15
- data/test/haml/results/helpers.xhtml +2 -3
- data/test/haml/results/just_stuff.xhtml +2 -6
- data/test/haml/results/nuke_inner_whitespace.xhtml +34 -0
- data/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
- data/test/haml/results/original_engine.xhtml +3 -7
- data/test/haml/results/partials.xhtml +1 -0
- data/test/haml/results/tag_parsing.xhtml +1 -6
- data/test/haml/results/very_basic.xhtml +2 -4
- data/test/haml/results/whitespace_handling.xhtml +13 -21
- data/test/haml/template_test.rb +8 -15
- data/test/haml/templates/_partial.haml +1 -0
- data/test/haml/templates/filters.haml +48 -7
- data/test/haml/templates/just_stuff.haml +1 -2
- data/test/haml/templates/nuke_inner_whitespace.haml +26 -0
- data/test/haml/templates/nuke_outer_whitespace.haml +144 -0
- data/test/haml/templates/tag_parsing.haml +0 -3
- data/test/haml/test_helper.rb +15 -0
- data/test/sass/engine_test.rb +80 -34
- data/test/sass/plugin_test.rb +1 -1
- data/test/sass/results/import.css +2 -2
- data/test/sass/results/mixins.css +95 -0
- data/test/sass/results/multiline.css +24 -0
- data/test/sass/templates/import.sass +4 -1
- data/test/sass/templates/importee.sass +4 -0
- data/test/sass/templates/mixins.sass +76 -0
- data/test/sass/templates/multiline.sass +20 -0
- metadata +65 -51
- data/lib/haml/util.rb +0 -18
- data/test/haml/runner.rb +0 -16
- data/test/profile.rb +0 -65
@@ -4,9 +4,7 @@
|
|
4
4
|
<title>Stop. haml time</title>
|
5
5
|
<div id='content'>
|
6
6
|
<h1>This is a title!</h1>
|
7
|
-
<p>
|
8
|
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit
|
9
|
-
</p>
|
7
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>
|
10
8
|
<p class='foo'>Cigarettes!</p>
|
11
9
|
<h2>Man alive!</h2>
|
12
10
|
<ul class='things'>
|
@@ -15,10 +13,8 @@
|
|
15
13
|
<li>Bathrobe</li>
|
16
14
|
<li>Coffee</li>
|
17
15
|
</ul>
|
18
|
-
<pre>
|
19
|
-
|
20
|
-
Let's see what happens when it's rendered! What about now, since we're on a new line?
|
21
|
-
</pre>
|
16
|
+
<pre>This is some text that's in a pre block!
|
17
|
+
Let's see what happens when it's rendered! What about now, since we're on a new line?</pre>
|
22
18
|
</div>
|
23
19
|
</head>
|
24
20
|
</html>
|
@@ -12,8 +12,7 @@
|
|
12
12
|
<foo2u>11</foo2u>
|
13
13
|
</div>
|
14
14
|
<div class='classes'>
|
15
|
-
<p class='foo bar' id='boom'>
|
16
|
-
</p>
|
15
|
+
<p class='foo bar' id='boom'></p>
|
17
16
|
<div class='fooBar'>a</div>
|
18
17
|
<div class='foo-bar'>b</div>
|
19
18
|
<div class='foo_bar'>c</div>
|
@@ -22,7 +21,3 @@
|
|
22
21
|
<div class='123'>f</div>
|
23
22
|
<div class='foo2u'>g</div>
|
24
23
|
</div>
|
25
|
-
<div class='broken'>
|
26
|
-
<foo><{ :a => :b }</foo>
|
27
|
-
<div class='foo'>>{ :c => :d }</div>
|
28
|
-
</div>
|
@@ -12,16 +12,16 @@
|
|
12
12
|
<div class='text_area_test_area'>
|
13
13
|
<textarea>Oneline</textarea>
|
14
14
|
</div>
|
15
|
-
<textarea>BLAH
|
15
|
+
<textarea>BLAH</textarea>
|
16
16
|
<div class='text_area_test_area'>
|
17
17
|
<textarea>Two
lines</textarea>
|
18
18
|
</div>
|
19
|
-
<textarea>BLAH
|
19
|
+
<textarea>BLAH</textarea>
|
20
20
|
<div id='flattened'>
|
21
21
|
<div class='text_area_test_area'>
|
22
22
|
<textarea>Two
lines</textarea>
|
23
23
|
</div>
|
24
|
-
<textarea>BLAH
|
24
|
+
<textarea>BLAH</textarea>
|
25
25
|
</div>
|
26
26
|
</div>
|
27
27
|
<div class='hithere'>
|
@@ -36,7 +36,7 @@
|
|
36
36
|
</div>
|
37
37
|
<div class='foo'>
|
38
38
|
13
|
39
|
-
<textarea>
a
|
39
|
+
<textarea>
a</textarea><textarea>
b</textarea><textarea>
c</textarea>
|
40
40
|
</div>
|
41
41
|
<div id='whitespace_test'>
|
42
42
|
<div class='text_area_test_area'>
|
@@ -52,16 +52,16 @@
|
|
52
52
|
<div class='text_area_test_area'>
|
53
53
|
<textarea>Oneline</textarea>
|
54
54
|
</div>
|
55
|
-
<textarea>BLAH
|
55
|
+
<textarea>BLAH</textarea>
|
56
56
|
<div class='text_area_test_area'>
|
57
57
|
<textarea>Two
lines</textarea>
|
58
58
|
</div>
|
59
|
-
<textarea>BLAH
|
59
|
+
<textarea>BLAH</textarea>
|
60
60
|
<div id='flattened'>
|
61
61
|
<div class='text_area_test_area'>
|
62
62
|
<textarea>Two
lines</textarea>
|
63
63
|
</div>
|
64
|
-
<textarea>BLAH
|
64
|
+
<textarea>BLAH</textarea>
|
65
65
|
</div>
|
66
66
|
</div>
|
67
67
|
<div class='hithere'>
|
@@ -73,22 +73,14 @@
|
|
73
73
|
foo
|
74
74
|
bar
|
75
75
|
</p>
|
76
|
-
<pre>
|
77
|
-
___
 ,o88888
 ,o8888888'
 ,:o:o:oooo. ,8O88Pd8888"
 ,.::.::o:ooooOoOoO. ,oO8O8Pd888'"
 ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O"
 , ..:.::o:ooOoOOOO8OOOOo.FdO8O8"
 , ..:.::o:ooOoOO8O888O8O,COCOO"
 , . ..:.::o:ooOoOOOO8OOOOCOCO"
 . ..:.::o:ooOoOoOO8O8OCCCC"o
 . ..:.::o:ooooOoCoCCC"o:o
 . ..:.::o:o:,cooooCo"oo:o:
 ` . . ..:.:cocoooo"'o:o:::'
 .` . ..::ccccoc"'o:o:o:::'
 :.:. ,c:cccc"':.:.:.:.:.'
 ..:.:"'`::::c:"'..:.:.:.:.:.' http://www.chris.com/ASCII/
 ...:.'.:.::::"' . . . . .'
 .. . ....:."' ` . . . ''
 . . . ...."'
 .. . ."' -hrr-
 .


 It's a planet!
%strong This shouldn't be bold!

|
78
|
-
</pre>
|
76
|
+
<pre> ___
 ,o88888
 ,o8888888'
 ,:o:o:oooo. ,8O88Pd8888"
 ,.::.::o:ooooOoOoO. ,oO8O8Pd888'"
 ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O"
 , ..:.::o:ooOoOOOO8OOOOo.FdO8O8"
 , ..:.::o:ooOoOO8O888O8O,COCOO"
 , . ..:.::o:ooOoOOOO8OOOOCOCO"
 . ..:.::o:ooOoOoOO8O8OCCCC"o
 . ..:.::o:ooooOoCoCCC"o:o
 . ..:.::o:o:,cooooCo"oo:o:
 ` . . ..:.:cocoooo"'o:o:::'
 .` . ..::ccccoc"'o:o:o:::'
 :.:. ,c:cccc"':.:.:.:.:.'
 ..:.:"'`::::c:"'..:.:.:.:.:.' http://www.chris.com/ASCII/
 ...:.'.:.::::"' . . . . .'
 .. . ....:."' ` . . . ''
 . . . ...."'
 .. . ."' -hrr-
 .


 It's a planet!
%strong This shouldn't be bold!</pre>
|
79
77
|
<strong>This should!</strong>
|
80
|
-
<textarea>
|
81
|
-
|
82
|
-
<strong>indeed!</strong>
|
83
|
-
</textarea>
|
78
|
+
<textarea> ___ ___ ___ ___ 
 /\__\ /\ \ /\__\ /\__\
 /:/ / /::\ \ /::| | /:/ /
 /:/__/ /:/\:\ \ /:|:| | /:/ / 
 /::\ \ ___ /::\~\:\ \ /:/|:|__|__ /:/ / 
 /:/\:\ /\__\ /:/\:\ \:\__\ /:/ |::::\__\ /:/__/ 
 \/__\:\/:/ / \/__\:\/:/ / \/__/~~/:/ / \:\ \ 
 \::/ / \::/ / /:/ / \:\ \ 
 /:/ / /:/ / /:/ / \:\ \ 
 /:/ / /:/ / /:/ / \:\__\
 \/__/ \/__/ \/__/ \/__/

 Many
 thanks
 to
 http://www.network-science.de/ascii/
|
79
|
+
<strong>indeed!</strong></textarea>
|
84
80
|
</div>
|
85
81
|
<div class='foo'>
|
86
82
|
13
|
87
83
|
</div>
|
88
|
-
<pre>
|
89
|
-
|
90
|
-
</pre>
|
91
|
-
<pre>
|
92
|
-
foo

|
93
|
-
bar
|
94
|
-
</pre>
|
84
|
+
<pre> __ ______ __ ______
.----.| |--.|__ |.----.| |--..--------.| __ |
| __|| ||__ || __|| < | || __ |
|____||__|__||______||____||__|__||__|__|__||______|</pre>
|
85
|
+
<pre>foo
|
86
|
+
bar</pre>
|
data/test/haml/template_test.rb
CHANGED
@@ -1,19 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'action_pack'
|
6
|
-
|
7
|
-
require File.dirname(__FILE__) + '/../../lib/haml'
|
2
|
+
require File.dirname(__FILE__) + '/test_helper'
|
8
3
|
require 'haml/template'
|
9
4
|
require File.dirname(__FILE__) + '/mocks/article'
|
10
5
|
|
11
|
-
class TestFilter
|
12
|
-
def initialize(text)
|
13
|
-
@text = text
|
14
|
-
end
|
15
6
|
|
16
|
-
|
7
|
+
module Haml::Filters::Test
|
8
|
+
include Haml::Filters::Base
|
9
|
+
|
10
|
+
def render(text)
|
17
11
|
"TESTING HAHAHAHA!"
|
18
12
|
end
|
19
13
|
end
|
@@ -22,10 +16,9 @@ class TemplateTest < Test::Unit::TestCase
|
|
22
16
|
@@templates = %w{ very_basic standard helpers
|
23
17
|
whitespace_handling original_engine list helpful
|
24
18
|
silent_script tag_parsing just_stuff partials
|
25
|
-
filters }
|
19
|
+
filters nuke_outer_whitespace nuke_inner_whitespace }
|
26
20
|
|
27
21
|
def setup
|
28
|
-
Haml::Template.options = { :filters => { 'test'=>TestFilter } }
|
29
22
|
@base = ActionView::Base.new(File.dirname(__FILE__) + "/templates/", {'article' => Article.new, 'foo' => 'value one'})
|
30
23
|
@base.send(:evaluate_assigns)
|
31
24
|
|
@@ -76,7 +69,7 @@ class TemplateTest < Test::Unit::TestCase
|
|
76
69
|
def test_templates_should_render_correctly_with_render_proc
|
77
70
|
@@templates.each do |template|
|
78
71
|
assert_renders_correctly(template) do |name|
|
79
|
-
engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml")
|
72
|
+
engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml"))
|
80
73
|
engine.render_proc(@base).call
|
81
74
|
end
|
82
75
|
end
|
@@ -87,7 +80,7 @@ class TemplateTest < Test::Unit::TestCase
|
|
87
80
|
assert_renders_correctly(template) do |name|
|
88
81
|
method = "render_haml_" + name.gsub(/[^a-zA-Z0-9]/, '_')
|
89
82
|
|
90
|
-
engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml")
|
83
|
+
engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml"))
|
91
84
|
engine.def_method(@base, method)
|
92
85
|
@base.send(method)
|
93
86
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
%style
|
2
|
+
- width = 5 + 17
|
2
3
|
:sass
|
3
4
|
p
|
4
5
|
:border
|
5
6
|
:style dotted
|
6
|
-
:width
|
7
|
+
:width #{width}px
|
7
8
|
:color #ff00ff
|
8
9
|
h1
|
9
10
|
:font-weight normal
|
@@ -29,17 +30,51 @@
|
|
29
30
|
|
30
31
|
_pretty much the same as above_
|
31
32
|
|
33
|
+
%p
|
34
|
+
:javascript
|
35
|
+
function newline(str) {
|
36
|
+
return "\n" + str;
|
37
|
+
}
|
38
|
+
|
32
39
|
:plain
|
33
40
|
This
|
34
41
|
Is
|
35
42
|
Plain
|
36
43
|
Text
|
37
44
|
%strong right?
|
45
|
+
\#{not interpolated}
|
46
|
+
\\#{1 + 2}
|
47
|
+
\\\#{also not}
|
48
|
+
\\
|
49
|
+
|
50
|
+
- last = "noitalo"
|
51
|
+
%p
|
52
|
+
%pre
|
53
|
+
:preserve
|
54
|
+
This pre is pretty deeply
|
55
|
+
nested.
|
56
|
+
Does #{"interp" + last.reverse} work?
|
57
|
+
:preserve
|
58
|
+
This one is, too.
|
59
|
+
Nested, that is.
|
60
|
+
|
61
|
+
- num = 10
|
62
|
+
%ul
|
63
|
+
:erb
|
64
|
+
<% num.times do |c| %>
|
65
|
+
<li><%= (c+97).chr %></li>
|
66
|
+
<% end %>
|
67
|
+
<% res = 178 %>
|
38
68
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
69
|
+
.res= res
|
70
|
+
|
71
|
+
%p
|
72
|
+
:textile
|
73
|
+
I like preserved text:
|
74
|
+
|
75
|
+
Foo
|
76
|
+
#{"Bar"}!
|
77
|
+
Baz
|
43
78
|
|
44
79
|
:markdown
|
45
80
|
* Foo
|
@@ -48,6 +83,12 @@
|
|
48
83
|
|
49
84
|
= "Text!"
|
50
85
|
|
86
|
+
- var = "Hello"
|
51
87
|
:ruby
|
52
|
-
|
53
|
-
|
88
|
+
printf "%s, World!\n", var
|
89
|
+
print "How are you doing today?\n"
|
90
|
+
|
91
|
+
:escaped
|
92
|
+
<div class="foo">
|
93
|
+
<p>I think — or do I?</p>
|
94
|
+
</div>
|
@@ -31,7 +31,6 @@
|
|
31
31
|
\%p foo
|
32
32
|
\yee\ha
|
33
33
|
/ Short comment
|
34
|
-
/ This is a really long comment look how long it is it should be on a line of its own don't you think?
|
35
34
|
/
|
36
35
|
This is a block comment
|
37
36
|
cool, huh?
|
@@ -75,4 +74,4 @@
|
|
75
74
|
%p.qux{:class => 'quux'}[@article] Blump
|
76
75
|
== #{"Woah inner quotes"}
|
77
76
|
%p.dynamic_quote{:quotes => "single '", :dyn => 1 + 2}
|
78
|
-
%p.
|
77
|
+
%p.dynamic_self_closing{:dyn => 1 + 2}/
|
@@ -0,0 +1,26 @@
|
|
1
|
+
%p
|
2
|
+
%q< Foo
|
3
|
+
%p
|
4
|
+
%q{:a => 1 + 1}< Foo
|
5
|
+
%p
|
6
|
+
%q<= "Foo\nBar"
|
7
|
+
%p
|
8
|
+
%q{:a => 1 + 1}<= "Foo\nBar"
|
9
|
+
%p
|
10
|
+
%q<
|
11
|
+
Foo
|
12
|
+
Bar
|
13
|
+
%p
|
14
|
+
%q{:a => 1 + 1}<
|
15
|
+
Foo
|
16
|
+
Bar
|
17
|
+
%p
|
18
|
+
%q<
|
19
|
+
%div
|
20
|
+
Foo
|
21
|
+
Bar
|
22
|
+
%p
|
23
|
+
%q{:a => 1 + 1}<
|
24
|
+
%div
|
25
|
+
Foo
|
26
|
+
Bar
|
@@ -0,0 +1,144 @@
|
|
1
|
+
%p
|
2
|
+
%p
|
3
|
+
%q>
|
4
|
+
Foo
|
5
|
+
%p
|
6
|
+
%p
|
7
|
+
%q{:a => 1 + 1}>
|
8
|
+
Foo
|
9
|
+
%p
|
10
|
+
%p
|
11
|
+
%q> Foo
|
12
|
+
%p
|
13
|
+
%p
|
14
|
+
%q{:a => 1 + 1}> Foo
|
15
|
+
%p
|
16
|
+
%p
|
17
|
+
%q>
|
18
|
+
= "Foo"
|
19
|
+
%p
|
20
|
+
%p
|
21
|
+
%q{:a => 1 + 1}>
|
22
|
+
= "Foo"
|
23
|
+
%p
|
24
|
+
%p
|
25
|
+
%q>= "Foo"
|
26
|
+
%p
|
27
|
+
%p
|
28
|
+
%q{:a => 1 + 1}>= "Foo"
|
29
|
+
%p
|
30
|
+
%p
|
31
|
+
%q>
|
32
|
+
= "Foo\nBar"
|
33
|
+
%p
|
34
|
+
%p
|
35
|
+
%q{:a => 1 + 1}>
|
36
|
+
= "Foo\nBar"
|
37
|
+
%p
|
38
|
+
%p
|
39
|
+
%q>= "Foo\nBar"
|
40
|
+
%p
|
41
|
+
%p
|
42
|
+
%q{:a => 1 + 1}>= "Foo\nBar"
|
43
|
+
%p
|
44
|
+
%p
|
45
|
+
- tab_up
|
46
|
+
foo
|
47
|
+
%q>
|
48
|
+
Foo
|
49
|
+
bar
|
50
|
+
- tab_down
|
51
|
+
%p
|
52
|
+
%p
|
53
|
+
- tab_up
|
54
|
+
foo
|
55
|
+
%q{:a => 1 + 1}>
|
56
|
+
Foo
|
57
|
+
bar
|
58
|
+
- tab_down
|
59
|
+
%p
|
60
|
+
%p
|
61
|
+
- tab_up
|
62
|
+
foo
|
63
|
+
%q> Foo
|
64
|
+
bar
|
65
|
+
- tab_down
|
66
|
+
%p
|
67
|
+
%p
|
68
|
+
- tab_up
|
69
|
+
foo
|
70
|
+
%q{:a => 1 + 1}> Foo
|
71
|
+
bar
|
72
|
+
- tab_down
|
73
|
+
%p
|
74
|
+
%p
|
75
|
+
- tab_up
|
76
|
+
foo
|
77
|
+
%q>
|
78
|
+
= "Foo"
|
79
|
+
bar
|
80
|
+
- tab_down
|
81
|
+
%p
|
82
|
+
%p
|
83
|
+
- tab_up
|
84
|
+
foo
|
85
|
+
%q{:a => 1 + 1}>
|
86
|
+
= "Foo"
|
87
|
+
bar
|
88
|
+
- tab_down
|
89
|
+
%p
|
90
|
+
%p
|
91
|
+
- tab_up
|
92
|
+
foo
|
93
|
+
%q>= "Foo"
|
94
|
+
bar
|
95
|
+
- tab_down
|
96
|
+
%p
|
97
|
+
%p
|
98
|
+
- tab_up
|
99
|
+
foo
|
100
|
+
%q{:a => 1 + 1}>= "Foo"
|
101
|
+
bar
|
102
|
+
- tab_down
|
103
|
+
%p
|
104
|
+
%p
|
105
|
+
- tab_up
|
106
|
+
foo
|
107
|
+
%q>
|
108
|
+
= "Foo\nBar"
|
109
|
+
bar
|
110
|
+
- tab_down
|
111
|
+
%p
|
112
|
+
%p
|
113
|
+
- tab_up
|
114
|
+
foo
|
115
|
+
%q{:a => 1 + 1}>
|
116
|
+
= "Foo\nBar"
|
117
|
+
bar
|
118
|
+
- tab_down
|
119
|
+
%p
|
120
|
+
%p
|
121
|
+
- tab_up
|
122
|
+
foo
|
123
|
+
%q>= "Foo\nBar"
|
124
|
+
bar
|
125
|
+
- tab_down
|
126
|
+
%p
|
127
|
+
%p
|
128
|
+
- tab_up
|
129
|
+
foo
|
130
|
+
%q{:a => 1 + 1}>= "Foo\nBar"
|
131
|
+
bar
|
132
|
+
- tab_down
|
133
|
+
%p
|
134
|
+
%p
|
135
|
+
%q>
|
136
|
+
%p
|
137
|
+
%p
|
138
|
+
%q>/
|
139
|
+
%p
|
140
|
+
%p
|
141
|
+
%q{:a => 1 + 1}>
|
142
|
+
%p
|
143
|
+
%p
|
144
|
+
%q{:a => 1 + 1}>/
|