From 511a10f54b088fad0ac240d822dc281a1ea860d7 Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 18:56:57 +0000 Subject: [PATCH] fix(html): ignore empty selector segments in ScopeVariant Co-Authored-By: Virgil --- responsive.go | 12 ++++++++---- responsive_test.go | 8 ++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/responsive.go b/responsive.go index 2928dc1..4c85f96 100644 --- a/responsive.go +++ b/responsive.go @@ -82,14 +82,18 @@ func ScopeVariant(name, selector string) string { } parts := strings.Split(selector, ",") + scoped := make([]string, 0, len(parts)) for i := range parts { - parts[i] = strings.TrimSpace(parts[i]) - if parts[i] == "" { + part := strings.TrimSpace(parts[i]) + if part == "" { continue } - parts[i] = scope + " " + parts[i] + scoped = append(scoped, scope+" "+part) } - return strings.Join(parts, ", ") + if len(scoped) == 0 { + return scope + } + return strings.Join(scoped, ", ") } // responsive.go: Variant adds a named layout variant (e.g., "desktop", "tablet", "mobile"). diff --git a/responsive_test.go b/responsive_test.go index 64dfe96..b5aab76 100644 --- a/responsive_test.go +++ b/responsive_test.go @@ -200,3 +200,11 @@ func TestScopeVariant_MultipleSelectors(t *testing.T) { t.Fatalf("ScopeVariant with selector list = %q, want %q", got, want) } } + +func TestScopeVariant_IgnoresEmptySelectorSegments(t *testing.T) { + got := ScopeVariant("desktop", ".nav, , .sidebar,") + want := `[data-variant="desktop"] .nav, [data-variant="desktop"] .sidebar` + if got != want { + t.Fatalf("ScopeVariant should skip empty selector segments = %q, want %q", got, want) + } +}