0-dependancy ENSIP-15 in Go
- 🏛️ Reference Implementation: adraffy/ens-normalize.js
- Unicode:
16.0.0
- Spec Hash:
4b3c5210a328d7097500b413bf075ec210bbac045cd804deae5d1ed771304825
- Unicode:
- ✅️ Passes 100% ENSIP-15 Validation Tests
- ✅️ Passes 100% Unicode Normalization Tests
go get github.com/adraffy/go-ens-normalize@v0.1.0
// global functions will panic on invalid names
ensip15.Normalize("RaFFY🚴♂️.eTh") // "raffy🚴♂.eth"
// works like Normalize()
ensip15.Beautify("1⃣2⃣.eth"); // "1️⃣2️⃣.eth"
// member functions return ("", err) on invalid names
ens := ensip15.Shared()
norm, err := ens.Normalize("a_")
ens := ensip15.Shared() // singleton
ens := ensip15.New() // new instance
nf := ensip15.Shared().NF() // singleton
nf := nf.New() // new instance
All errors are safe to print.
Normalize name fragments for substring search:
ensip15.Shared().NormalizeFragment("AB--", false) // "ab--"
ensip15.Shared().NormalizeFragment("..\u0300", false) // "..̀"
ensip15.Shared().NormalizeFragment("\u03BF\u043E", false) // "οо"
// note: Normalize() errors on these inputs
Construct safe strings:
ensip15.Shared().SafeCodepoint(0x303) // "◌̃ {303}"
ensip15.Shared().SafeCodepoint(0xFE0F) // "{FE0F}"
ensip15.Shared().SafeImplode([]rune{0x303, 0xFE0F}) // "◌̃{FE0F}"
ensip15.Shared().NF().NFC([]rune{0x65, 0x300}) // [0xE8]
ensip15.Shared().NF().NFD([]rune{0xE8}) // [0x65, 0x300]
- Sync and Compress
go test ./...