Skip to content

Commit ec3b345

Browse files
committed
Fix lua build
1 parent a44aa6b commit ec3b345

File tree

2 files changed

+48
-8
lines changed

2 files changed

+48
-8
lines changed

build.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ func Build(w io.Writer, config Config, options *BuildOptions) error {
155155
return err
156156
}
157157

158+
//nolint:gocognit
158159
func buildBlock(sb io.StringWriter, parent *Directive, block Directives, depth int, lastLine int, options *BuildOptions) {
159160
for i, stmt := range block {
160161
directive := Enquote(stmt.Directive)
@@ -172,13 +173,16 @@ func buildBlock(sb io.StringWriter, parent *Directive, block Directives, depth i
172173

173174
_, _ = sb.WriteString(margin(options, depth))
174175

175-
if stmt.IsComment() {
176-
_, _ = sb.WriteString("#")
177-
_, _ = sb.WriteString(*stmt.Comment)
178-
} else if options.extBuilders != nil {
176+
if options.extBuilders != nil {
179177
if ext, ok := options.extBuilders[directive]; ok {
180178
_, _ = sb.WriteString(ext.Build(stmt))
179+
continue
181180
}
181+
}
182+
183+
if stmt.IsComment() {
184+
_, _ = sb.WriteString("#")
185+
_, _ = sb.WriteString(*stmt.Comment)
182186
} else {
183187
_, _ = sb.WriteString(directive)
184188

build_test.go

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,49 @@ var buildFixtures = []buildFixture{
263263
options: BuildOptions{Builders: []RegisterBuilder{lua.RegisterBuilder()}},
264264
parsed: Directives{
265265
{
266-
Directive: "content_by_lua_block",
267-
Line: 1,
268-
Args: []string{"\n ngx.say(\"I need no extra escaping here, for example: \\r\\nblah\")\n "},
266+
Directive: "http",
267+
Args: []string{},
268+
Block: Directives{
269+
{
270+
Directive: "server",
271+
Args: []string{},
272+
Block: Directives{
273+
{
274+
Directive: "listen",
275+
Args: []string{"127.0.0.1:8080"},
276+
},
277+
{
278+
Directive: "server_name",
279+
Args: []string{"default_server"},
280+
},
281+
{
282+
Directive: "location",
283+
Args: []string{"/"},
284+
Block: Directives{
285+
{
286+
Directive: "content_by_lua_block",
287+
Line: 1,
288+
Args: []string{"\n ngx.say(\"I need no extra escaping here, for example: \\r\\nblah\")\n "},
289+
},
290+
},
291+
},
292+
},
293+
},
294+
},
269295
},
270296
},
271297

272-
expected: "content_by_lua_block {\n ngx.say(\"I need no extra escaping here, for example: \\r\\nblah\")\n }",
298+
expected: strings.Join([]string{
299+
"http {",
300+
" server {",
301+
" listen 127.0.0.1:8080;",
302+
" server_name default_server;",
303+
" location / {",
304+
" content_by_lua_block {\n ngx.say(\"I need no extra escaping here, for example: \\r\\nblah\")\n }",
305+
" }",
306+
" }",
307+
"}",
308+
}, "\n"),
273309
},
274310
{
275311
name: "set_by_lua_block",

0 commit comments

Comments
 (0)