mark unicode normalization with type

This commit is contained in:
Jeremy Latt 2014-03-09 13:45:36 -07:00
parent 97886dd00f
commit 96a108f8da
12 changed files with 324 additions and 269 deletions

View file

@ -67,7 +67,7 @@ type ReplyCode interface {
String() string
}
type StringCode string
type StringCode Name
func (code StringCode) String() string {
return string(code)
@ -86,25 +86,25 @@ func (mode ChannelMode) String() string {
return string(mode)
}
type ChannelNameMap map[string]*Channel
type ChannelNameMap map[Name]*Channel
func (channels ChannelNameMap) Get(name string) *Channel {
return channels[strings.ToLower(name)]
func (channels ChannelNameMap) Get(name Name) *Channel {
return channels[name.ToLower()]
}
func (channels ChannelNameMap) Add(channel *Channel) error {
if channels[channel.name] != nil {
if channels[channel.name.ToLower()] != nil {
return fmt.Errorf("%s: already set", channel.name)
}
channels[channel.name] = channel
channels[channel.name.ToLower()] = channel
return nil
}
func (channels ChannelNameMap) Remove(channel *Channel) error {
if channel != channels[channel.name] {
if channel != channels[channel.name.ToLower()] {
return fmt.Errorf("%s: mismatch", channel.name)
}
delete(channels, channel.name)
delete(channels, channel.name.ToLower())
return nil
}
@ -182,8 +182,8 @@ func (channels ChannelSet) First() *Channel {
//
type Identifier interface {
Id() string
Nick() string
Id() Name
Nick() Name
}
type Replier interface {