@@ -131,37 +131,52 @@ func buildBlock(sb io.StringWriter, parent *Directive, block Directives, depth i
131
131
directive := Enquote (stmt .Directive )
132
132
_ , _ = sb .WriteString (directive )
133
133
134
- // special handling for if statements
135
- if directive == "if" {
136
- _ , _ = sb .WriteString (" (" )
137
- for i , arg := range stmt .Args {
138
- if i > 0 {
134
+ // special handling for'set_by_lua_block' directive
135
+ if directive == "set_by_lua_block" {
136
+ _ , _ = sb .WriteString (" " )
137
+ _ , _ = sb .WriteString (stmt .Args [0 ]) // argument for return value
138
+ _ , _ = sb .WriteString (" {" )
139
+ _ , _ = sb .WriteString (stmt .Args [1 ]) // argument containing block content
140
+ _ , _ = sb .WriteString ("}" )
141
+ // handling other lua block directives
142
+ } else if strings .Contains (directive , "_by_lua_block" ) {
143
+ _ , _ = sb .WriteString (" {" )
144
+ _ , _ = sb .WriteString (stmt .Args [0 ])
145
+ _ , _ = sb .WriteString ("}" )
146
+ } else {
147
+ // special handling for if statements
148
+ if directive == "if" {
149
+ _ , _ = sb .WriteString (" (" )
150
+ for i , arg := range stmt .Args {
151
+ if i > 0 {
152
+ _ , _ = sb .WriteString (" " )
153
+ }
154
+ _ , _ = sb .WriteString (Enquote (arg ))
155
+ }
156
+ _ , _ = sb .WriteString (")" )
157
+ } else {
158
+ for _ , arg := range stmt .Args {
139
159
_ , _ = sb .WriteString (" " )
160
+ _ , _ = sb .WriteString (Enquote (arg ))
140
161
}
141
- _ , _ = sb .WriteString (Enquote (arg ))
142
- }
143
- _ , _ = sb .WriteString (")" )
144
- } else {
145
- for _ , arg := range stmt .Args {
146
- _ , _ = sb .WriteString (" " )
147
- _ , _ = sb .WriteString (Enquote (arg ))
148
162
}
149
- }
150
163
151
- if ! stmt .IsBlock () {
152
- _ , _ = sb .WriteString (";" )
153
- } else {
154
- _ , _ = sb .WriteString (" {" )
155
- stmt := stmt
156
- buildBlock (sb , stmt , stmt .Block , depth + 1 , stmt .Line , options )
157
- _ , _ = sb .WriteString ("\n " )
158
- _ , _ = sb .WriteString (margin (options , depth ))
159
- _ , _ = sb .WriteString ("}" )
164
+ if ! stmt .IsBlock () {
165
+ _ , _ = sb .WriteString (";" )
166
+ } else {
167
+ _ , _ = sb .WriteString (" {" )
168
+ stmt := stmt
169
+ buildBlock (sb , stmt , stmt .Block , depth + 1 , stmt .Line , options )
170
+ _ , _ = sb .WriteString ("\n " )
171
+ _ , _ = sb .WriteString (margin (options , depth ))
172
+ _ , _ = sb .WriteString ("}" )
173
+ }
160
174
}
161
175
}
162
176
lastLine = stmt .Line
163
177
}
164
178
}
179
+
165
180
func margin (options * BuildOptions , depth int ) string {
166
181
indent := depth * options .Indent
167
182
if indent < MaxIndent {
0 commit comments