From 790b089a9cd2491f2dc8f9d7c83bdf187675045e Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Thu, 28 Sep 2023 21:51:49 -0500
Subject: [PATCH] a

---
 lib/gat/gatcaddyfile/gattype.go | 36 ++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/lib/gat/gatcaddyfile/gattype.go b/lib/gat/gatcaddyfile/gattype.go
index 77a507a4..1114f418 100644
--- a/lib/gat/gatcaddyfile/gattype.go
+++ b/lib/gat/gatcaddyfile/gattype.go
@@ -100,29 +100,41 @@ func (ServerType) Setup(blocks []caddyfile.ServerBlock, m map[string]any) (*cadd
 					return nil, nil, d.Errf(`duplicate named matcher "%s"`, name)
 				}
 
-				// read named matcher
-				if !d.NextBlock(0) {
-					return nil, nil, d.ArgErr()
-				}
+				var matcher json.RawMessage
 
-				for {
-					if d.Val() == "}" {
-						break
+				// read named matcher
+				if d.NextArg() {
+					// inline
+				} else {
+					// block
+					if !d.NextBlock(0) {
+						return nil, nil, d.ArgErr()
 					}
 
-					log.Println(d.Val())
-					for d.NextArg() {
+					for {
+						if d.Val() == "}" {
+							break
+						}
+
 						log.Println(d.Val())
-					}
+						for d.NextArg() {
+							log.Println(d.Val())
+						}
 
-					if !d.NextLine() {
-						return nil, nil, d.EOFErr()
+						if !d.NextLine() {
+							return nil, nil, d.EOFErr()
+						}
 					}
 				}
 
 				if d.CountRemainingArgs() > 0 {
 					return nil, nil, d.ArgErr()
 				}
+
+				if namedMatchers == nil {
+					namedMatchers = make(map[string]json.RawMessage)
+				}
+				namedMatchers[name] = matcher
 			default:
 				unmarshaller, ok := handlers[d.Val()]
 				if !ok {
-- 
GitLab