From f6bba7c57173f45732bd25fa3147afb410927c04 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Thu, 14 Mar 2024 11:15:10 +0100 Subject: [PATCH] Fix placeholder parsing --- restream/replace/replace.go | 2 +- restream/replace/replace_test.go | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/restream/replace/replace.go b/restream/replace/replace.go index f7771319..016978e7 100644 --- a/restream/replace/replace.go +++ b/restream/replace/replace.go @@ -42,7 +42,7 @@ type replacer struct { func New() Replacer { r := &replacer{ replacers: make(map[string]replace), - re: regexp.MustCompile(`{([a-z:]+)(?:\^(.))?(?:,(.*?))?}`), + re: regexp.MustCompile(`{([a-z]+(?::[0-9A-Za-z]+)?)(?:\^(.))?(?:,(.*?))?}`), templateRe: regexp.MustCompile(`{([a-z:]+)}`), } diff --git a/restream/replace/replace_test.go b/restream/replace/replace_test.go index f69a96f8..59a42e5e 100644 --- a/restream/replace/replace_test.go +++ b/restream/replace/replace_test.go @@ -148,9 +148,16 @@ func TestReplaceGlob(t *testing.T) { }, nil, ) + r.RegisterReplaceFunc( + "foo:123", + func(params map[string]string, config *app.Config, section string) string { + return "Hello 456" + }, + nil, + ) - replaced := r.Replace("{foo:baz}, {foo:bar}", "foo:*", "", nil, nil, "") - require.Equal(t, "Hello foobaz, Hello foobar", replaced) + replaced := r.Replace("{foo:baz}, {foo:bar}, {foo:123}", "foo:*", "", nil, nil, "") + require.Equal(t, "Hello foobaz, Hello foobar, Hello 456", replaced) } func TestParseParams(t *testing.T) {