From 324c813de3a7afe9e01eb4253510c278e04900ad Mon Sep 17 00:00:00 2001 From: Trym Bremnes Date: Wed, 27 Mar 2024 14:00:38 +0100 Subject: [PATCH 1/2] docs: add short description of `SSURT` SSURT is an acronym for `Superior Sort-friendly URI Reordering Transform`, which now has been added to the relevant file. It should make the code a little bit easier to reason about, but further refactoring might be needed. --- internal/ssurt.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/ssurt.go b/internal/ssurt.go index 96c853c2..b4cfd7a8 100644 --- a/internal/ssurt.go +++ b/internal/ssurt.go @@ -7,6 +7,10 @@ import ( "github.com/nlnwa/whatwg-url/url" ) +// SSURT stands for Superior SURT. Sensible SURT. Smug SURT. +// SURT stands for Sort-friendly URI Reordering Transform +// For more information, see https://github.com/iipc/urlcanon/blob/master/ssurt.rst + func SsurtUrl(u *url.Url, includeScheme bool) (string, error) { u.SearchParams().Sort() From c46f0eb965667543ce44748d90d68c79c701a98c Mon Sep 17 00:00:00 2001 From: Trym Bremnes Date: Wed, 27 Mar 2024 14:09:33 +0100 Subject: [PATCH 2/2] refactor: rename variables in `ssurt.go` This commit renames variables in `ssurt.go` to make the code more readable. There are no logic changes. --- internal/ssurt.go | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/internal/ssurt.go b/internal/ssurt.go index b4cfd7a8..36742f82 100644 --- a/internal/ssurt.go +++ b/internal/ssurt.go @@ -4,61 +4,61 @@ import ( "net" "strings" - "github.com/nlnwa/whatwg-url/url" + whatwgUrl "github.com/nlnwa/whatwg-url/url" ) // SSURT stands for Superior SURT. Sensible SURT. Smug SURT. // SURT stands for Sort-friendly URI Reordering Transform // For more information, see https://github.com/iipc/urlcanon/blob/master/ssurt.rst -func SsurtUrl(u *url.Url, includeScheme bool) (string, error) { - u.SearchParams().Sort() +func SsurtUrl(url *whatwgUrl.Url, includeScheme bool) (string, error) { + url.SearchParams().Sort() var result strings.Builder - hostname := u.Hostname() + hostname := url.Hostname() if hostname != "" { if hostname[0] == '[' { result.WriteString(hostname) } else if net.ParseIP(hostname).To4() != nil { result.WriteString(hostname) } else { - t := strings.Split(hostname, ".") - for i := len(t) - 1; i >= 0; i-- { - result.WriteString(t[i]) + splitOnDot := strings.Split(hostname, ".") + for partIndex := len(splitOnDot) - 1; partIndex >= 0; partIndex-- { + result.WriteString(splitOnDot[partIndex]) result.WriteByte(',') } } result.WriteString("//") } if includeScheme { - if u.Port() != "" { - result.WriteString(u.Port()) + if url.Port() != "" { + result.WriteString(url.Port()) result.WriteByte(':') } - result.WriteString(strings.TrimSuffix(u.Protocol(), ":")) - if u.Username() != "" { + result.WriteString(strings.TrimSuffix(url.Protocol(), ":")) + if url.Username() != "" { result.WriteByte('@') - result.WriteString(u.Username()) + result.WriteString(url.Username()) } - if u.Password() != "" { + if url.Password() != "" { result.WriteByte(':') - result.WriteString(u.Password()) + result.WriteString(url.Password()) } result.WriteByte(':') } - result.WriteString(u.Pathname()) - result.WriteString(u.Search()) - result.WriteString(u.Hash()) + result.WriteString(url.Pathname()) + result.WriteString(url.Search()) + result.WriteString(url.Hash()) return result.String(), nil } -var surtParser = url.NewParser(url.WithSkipEqualsForEmptySearchParamsValue()) +var surtParser = whatwgUrl.NewParser(whatwgUrl.WithSkipEqualsForEmptySearchParamsValue()) -func SsurtString(u string, includeScheme bool) (string, error) { - u2, err := surtParser.Parse(u) +func SsurtString(urlAsString string, includeScheme bool) (string, error) { + url, err := surtParser.Parse(urlAsString) if err != nil { return "", err } - return SsurtUrl(u2, includeScheme) + return SsurtUrl(url, includeScheme) }