Publish Docker image (Multi-arch) / Build & push (amd64) (push) Failing after 9m20s
Release (Linux, macOS, Windows) / Linux Release (push) Failing after 55m7s
Publish Docker image (Multi-arch) / Build & push (arm64) (push) Canceled after 0s
Release (Linux, macOS, Windows) / macOS Release (push) Canceled after 0s
Release (Linux, macOS, Windows) / Windows Release (push) Canceled after 0s
Publish Docker image (Multi-arch) / Create multi-arch manifests (push) Canceled after 0s
27 lines
627 B
Go
27 lines
627 B
Go
package jsplugin
|
||
|
||
// asciiFold maps only 'A'–'Z' onto 'a'–'z'. Every other byte is unchanged.
|
||
// Unicode case folding is intentionally not applied: U+212A (KELVIN SIGN)
|
||
// must not become 'k' and impersonate an ASCII model name.
|
||
func asciiFold(s string) string {
|
||
var buf []byte
|
||
for i := 0; i < len(s); i++ {
|
||
c := s[i]
|
||
if c >= 'A' && c <= 'Z' {
|
||
if buf == nil {
|
||
buf = []byte(s)
|
||
}
|
||
buf[i] = c + ('a' - 'A')
|
||
}
|
||
}
|
||
if buf == nil {
|
||
return s
|
||
}
|
||
return string(buf)
|
||
}
|
||
|
||
// ASCIIFold is the exported form of asciiFold for consumers outside this package.
|
||
func ASCIIFold(s string) string {
|
||
return asciiFold(s)
|
||
}
|