@@ -11,195 +11,148 @@ def initialize(q)
11
11
12
12
# https://haml.info/docs/yardoc/file.REFERENCE.html#html-comments-
13
13
def visit_comment ( node )
14
- q . group ( 2 , "(comment" , ")" ) do
15
- q . breakable
16
-
14
+ group ( "comment" ) do
17
15
if node . value [ :conditional ]
18
- q . text ( "conditional=" )
19
- q . pp ( node . value [ :conditional ] )
16
+ pp_field ( "conditional" , node . value [ :conditional ] )
20
17
elsif node . value [ :text ]
21
- q . text ( "text=" )
22
- q . pp ( node . value [ :text ] )
23
- end
24
-
25
- if node . value [ :revealed ]
26
- q . breakable
27
- q . text ( "revealed" )
28
- end
29
-
30
- if node . children . any?
31
- q . breakable
32
- q . text ( "children=" )
33
- q . pp ( node . children )
18
+ pp_field ( "text" , node . value [ :text ] )
34
19
end
20
+
21
+ bool_field ( "revealed" ) if node . value [ :revealed ]
22
+ pp_field ( "children" , node . children ) if node . children . any?
35
23
end
36
24
end
37
-
25
+
38
26
# https://haml.info/docs/yardoc/file.REFERENCE.html#doctype-
39
27
def visit_doctype ( node )
40
- q . group ( 2 , "(doctype" , ")" ) do
41
- q . breakable
42
-
28
+ group ( "doctype" ) do
43
29
if DOCTYPE_TYPES . key? ( node . value [ :type ] )
44
- q . text ( "type=" )
45
- q . pp ( node . value [ :type ] )
30
+ pp_field ( "type" , node . value [ :type ] )
46
31
elsif DOCTYPE_VERSIONS . include? ( node . value [ :version ] )
47
- q . text ( "version=" )
48
- q . pp ( node . value [ :version ] )
32
+ pp_field ( "version" , node . value [ :version ] )
49
33
else
50
- q . text ( "type=" )
51
- q . pp ( node . value [ :type ] )
52
- end
53
-
54
- if node . value [ :encoding ]
55
- q . breakable
56
- q . text ( "encoding=" )
57
- q . pp ( node . value [ :encoding ] )
34
+ pp_field ( "text" , node . value [ :text ] )
58
35
end
36
+
37
+ pp_field ( "encoding" , node . value [ :encoding ] ) if node . value [ :encoding ]
59
38
end
60
39
end
61
-
40
+
62
41
# https://haml.info/docs/yardoc/file.REFERENCE.html#filter
63
42
def visit_filter ( node )
64
- q . group ( 2 , "(filter" , ")" ) do
65
- q . breakable
66
- q . text ( "name=" )
67
- q . text ( node . value [ :name ] )
68
-
69
- q . breakable
70
- q . text ( "text=" )
71
- q . pp ( node . value [ :text ] )
43
+ group ( "filter" ) do
44
+ text_field ( "name" , node . value [ :name ] )
45
+ pp_field ( "text" , node . value [ :text ] )
72
46
end
73
47
end
74
-
48
+
75
49
# https://haml.info/docs/yardoc/file.REFERENCE.html#haml-comments--
76
50
def visit_haml_comment ( node )
77
- q . group ( 2 , "(haml_comment" , ")" ) do
78
- q . breakable
79
- q . text ( "text=" )
80
- q . pp ( node . value [ :text ] )
81
- end
51
+ group ( "haml_comment" ) { pp_field ( "text" , node . value [ :text ] ) }
82
52
end
83
-
53
+
84
54
# https://haml.info/docs/yardoc/file.REFERENCE.html#plain-text
85
55
def visit_plain ( node )
86
- q . group ( 2 , "(plain" , ")" ) do
87
- q . breakable
88
- q . text ( "text=" )
89
- q . pp ( node . value [ :text ] )
90
- end
56
+ group ( "plain" ) { pp_field ( "text" , node . value [ :text ] ) }
91
57
end
92
-
58
+
93
59
# Visit the root node of the AST.
94
60
def visit_root ( node )
95
- q . group ( 2 , "(root" , ")" ) do
96
- if node . children . any?
97
- q . breakable
98
- q . text ( "children=" )
99
- q . pp ( node . children )
100
- end
61
+ group ( "root" ) do
62
+ pp_field ( "children" , node . children ) if node . children . any?
101
63
end
102
64
end
103
-
65
+
104
66
# https://haml.info/docs/yardoc/file.REFERENCE.html#inserting_ruby
105
67
def visit_script ( node )
106
- q . group ( 2 , "(script" , ")" ) do
107
- q . breakable
108
- q . text ( "text=" )
109
- q . pp ( node . value [ :text ] )
110
-
111
- if node . value [ :escape_html ]
112
- q . breakable
113
- q . text ( "escape_html" )
114
- end
115
-
116
- if node . value [ :preserve ]
117
- q . breakable
118
- q . text ( "preserve" )
119
- end
120
-
121
- if node . children . any?
122
- q . breakable
123
- q . text ( "children=" )
124
- q . pp ( node . children )
125
- end
68
+ group ( "script" ) do
69
+ pp_field ( "text" , node . value [ :text ] )
70
+ bool_field ( "escape_html" ) if node . value [ :escape_html ]
71
+ bool_field ( "preserve" ) if node . value [ :preserve ]
72
+ pp_field ( "children" , node . children ) if node . children . any?
126
73
end
127
74
end
128
-
75
+
129
76
# https://haml.info/docs/yardoc/file.REFERENCE.html#running-ruby--
130
77
def visit_silent_script ( node )
131
- q . group ( 2 , "(silent_script" , ")" ) do
132
- q . breakable
133
- q . text ( "text=" )
134
- q . pp ( node . value [ :text ] )
135
-
136
- if node . children . any?
137
- q . breakable
138
- q . text ( "children=" )
139
- q . pp ( node . children )
140
- end
78
+ group ( "silent-script" ) do
79
+ pp_field ( "text" , node . value [ :text ] )
80
+ pp_field ( "children" , node . children ) if node . children . any?
141
81
end
142
82
end
143
-
83
+
144
84
# Visit a tag node.
145
85
def visit_tag ( node )
146
- q . group ( 2 , "(tag" , ")" ) do
147
- q . breakable
148
- q . text ( "name=" )
149
- q . pp ( node . value [ :name ] )
150
-
86
+ group ( "tag" ) do
87
+ pp_field ( "name" , node . value [ :name ] )
88
+
151
89
if node . value [ :attributes ] . any?
152
- q . breakable
153
- q . text ( "attributes=" )
154
- q . pp ( node . value [ :attributes ] )
90
+ pp_field ( "attributes" , node . value [ :attributes ] )
155
91
end
156
-
92
+
157
93
if node . value [ :dynamic_attributes ] . new
158
- q . breakable
159
- q . text ( "dynamic_attributes.new=" )
160
- q . pp ( node . value [ :dynamic_attributes ] . new )
94
+ pp_field (
95
+ "dynamic_attributes.new" ,
96
+ node . value [ :dynamic_attributes ] . new
97
+ )
161
98
end
162
-
99
+
163
100
if node . value [ :dynamic_attributes ] . old
164
- q . breakable
165
- q . text ( "dynamic_attributes.old=" )
166
- q . pp ( node . value [ :dynamic_attributes ] . old )
101
+ pp_field (
102
+ "dynamic_attributes.old" ,
103
+ node . value [ :dynamic_attributes ] . old
104
+ )
167
105
end
168
-
106
+
169
107
if node . value [ :object_ref ] != :nil
170
- q . breakable
171
- q . text ( "object_ref=" )
172
- q . pp ( node . value [ :object_ref ] )
108
+ pp_field ( "object_ref" , node . value [ :object_ref ] )
173
109
end
174
-
110
+
175
111
if node . value [ :nuke_outer_whitespace ]
176
- q . breakable
177
- q . text ( "nuke_outer_whitespace" )
112
+ bool_field ( "nuke_outer_whitespace" )
178
113
end
179
-
114
+
180
115
if node . value [ :nuke_inner_whitespace ]
181
- q . breakable
182
- q . text ( "nuke_inner_whitespace" )
183
- end
184
-
185
- if node . value [ :self_closing ]
186
- q . breakable
187
- q . text ( "self_closing" )
188
- end
189
-
190
- if node . value [ :value ]
191
- q . breakable
192
- q . text ( "value=" )
193
- q . pp ( node . value [ :value ] )
194
- end
195
-
196
- if node . children . any?
197
- q . breakable
198
- q . text ( "children=" )
199
- q . pp ( node . children )
116
+ bool_field ( "nuke_inner_whitespace" )
200
117
end
118
+
119
+ bool_field ( "self_closing" ) if node . value [ :self_closing ]
120
+ pp_field ( "value" , node . value [ :value ] ) if node . value [ :value ]
121
+ pp_field ( "children" , node . children ) if node . children . any?
122
+ end
123
+ end
124
+
125
+ private
126
+
127
+ def bool_field ( name )
128
+ q . breakable
129
+ q . text ( name )
130
+ end
131
+
132
+ def group ( name )
133
+ q . group do
134
+ q . text ( "(" )
135
+ q . text ( name )
136
+
137
+ q . nest ( 2 ) { yield }
138
+ q . breakable ( "" )
139
+ q . text ( ")" )
201
140
end
202
141
end
142
+
143
+ def pp_field ( name , value )
144
+ q . breakable
145
+ q . text ( name )
146
+ q . text ( "=" )
147
+ q . pp ( value )
148
+ end
149
+
150
+ def text_field ( name , value )
151
+ q . breakable
152
+ q . text ( name )
153
+ q . text ( "=" )
154
+ q . text ( value )
155
+ end
203
156
end
204
157
end
205
158
end
0 commit comments