From c41756c2df5e25da06c2c6e6e2ebde1625ac9dd2 Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 03:29:00 +0000 Subject: [PATCH] Support spaced HNS alias comments --- mainchain.go | 27 +++++++++++++++++++++------ mainchain_test.go | 7 +++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/mainchain.go b/mainchain.go index f39e368..cb65485 100644 --- a/mainchain.go +++ b/mainchain.go @@ -259,10 +259,23 @@ func decodeString(raw json.RawMessage) (string, bool) { } func extractAliasFromComment(comment string) string { - for _, token := range strings.Fields(comment) { - switch normalizedToken := strings.ToLower(token); { + fields := strings.Fields(comment) + for index, token := range fields { + normalizedToken := strings.ToLower(strings.TrimSpace(token)) + switch { case strings.HasPrefix(normalizedToken, "hns="): - alias := strings.TrimSpace(strings.TrimSuffix(strings.TrimPrefix(normalizedToken, "hns="), ";")) + alias := strings.TrimSuffix(strings.TrimPrefix(normalizedToken, "hns="), ";") + if alias != "" { + return normalizeName(alias) + } + case normalizedToken == "hns" && index+2 < len(fields): + nextToken := strings.TrimSpace(strings.ToLower(fields[index+1])) + if nextToken != "=" && nextToken != ":" && nextToken != ":=" { + continue + } + alias := strings.TrimSpace(fields[index+2]) + alias = strings.TrimSuffix(alias, ";") + alias = strings.TrimSuffix(alias, ",") if alias != "" { return normalizeName(alias) } @@ -270,13 +283,15 @@ func extractAliasFromComment(comment string) string { } commentLower := strings.ToLower(comment) - if marker := strings.Index(commentLower, "hns="); marker >= 0 { - alias := comment[marker+4:] - if trim := strings.IndexAny(alias, " ;,"); trim >= 0 { + if marker := strings.Index(commentLower, "hns"); marker >= 0 { + alias := comment[marker+3:] + alias = strings.TrimLeft(alias, " \t:=;") + if trim := strings.IndexAny(alias, " ;,\t\r\n"); trim >= 0 { alias = alias[:trim] } alias = strings.TrimSpace(alias) alias = strings.TrimSuffix(alias, ";") + alias = strings.TrimSuffix(alias, ",") return normalizeName(alias) } diff --git a/mainchain_test.go b/mainchain_test.go index 23f13c2..473b66f 100644 --- a/mainchain_test.go +++ b/mainchain_test.go @@ -579,6 +579,13 @@ func TestExtractAliasFromCommentParsesCaseInsensitiveHNSPrefix(t *testing.T) { } } +func TestExtractAliasFromCommentParsesSpacedHNSAssignment(t *testing.T) { + got := extractAliasFromComment("gateway alias hns = gateway.charon.lthn;") + if got != "gateway.charon.lthn" { + t.Fatalf("expected gateway.charon.lthn, got %s", got) + } +} + func TestNewServiceBuildsMainchainAliasClientWithHSDFallbackCredentials(t *testing.T) { service := NewService(ServiceOptions{ MainchainURL: "http://127.0.0.1:14037",