Question: are characters that go out of a-zA-Z0-9 typically allowed in nicknames on today's IRC servers? Like ø,æ,ß,ł,ħ,æ etc.? I don't think they are, but I will have to research that.
Name:
Anonymous2008-01-23 20:18
>>1 /^NICK ([a-zA-Z][-\w`{}[\]\\\^]*)$/
much more readable, and works in lots more languages.
>>16
That's what I thought. I assume Haskell has regex support, but I figured I'd give this parser combinator idea a go and see what all the fuss was about.
I know UnrealIRCd supports additionals charsets. It's probably a bit tricky to do right, because not all clients use the same character encoding (Shift_JIS, GBK, W1251/W1251 and whathaveyou).
Name:
Anonymous2008-01-23 20:37
>>23
That does sound tricky. I won't implement any additional support initially. Having a look at UnrealIRCd's source code might prove helpful when I do, however.
Name:
Anonymous2008-01-24 0:31
>>23-24
Plus it's not within irc spec. Some clients will fuck up royally when they encounter stuff that's out of the norm.
Xchat's nick list goes slightly haywire when you have someone named '\' and someone named '|' in the same channel and one of them leaves. (or at least it used to last year-ish, can't be bothered checking it now)
Name:
Anonymous2008-01-24 5:13
Some clients appear to support UTF-8 encoding, at least in the chat.
>>15
Anything over 32 that's not an already reserved char like @, #, :, etc. should be OK, this includes the high range (128+)
Name:
Anonymous2008-01-24 6:18
>>26-27
Indeed. In messages. mIRC sort of supports it, last I checked. And XChat seems to support it pretty well. As does Irssi. (Haven't tried other clients.)
>>28
I thought this, but you might potentially fuck up IRC clients that follow the spec strictly. So I think the best course of action is to follow the spec initially, and then investigate extensions later on (after I have a stable IRC server on the go). What do you think?
Name:
Anonymous2008-01-24 7:07
Do notation considered harmful.
nick = (Nick .) . (:) <$ string "NICK" <* space <*> letter <*> many1 (alphaNum <|> special)
Name:
Anonymous2008-01-24 7:10
>>29
You may be able to discern the type of client from an immediate CTCP VERSION just after the client has sent its USER and NICK, and then enable/disable extensions accordingly.
Name:
Anonymous2008-01-24 7:38
i thought shortly about making my own ircd in c but then i checked out the hybrid code i was already using and decided to just modify it to my needs instead
Name:
Anonymous2008-01-24 9:00
>>30
You missed 'eof', but I will forgive you. This notation looks nice.