mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-10-08 15:01:20 +00:00
22 lines
1.1 KiB
Markdown
22 lines
1.1 KiB
Markdown
# Explicit IRC comparison keys
|
|
|
|
`IRCName(text, context=None, casemapping=None, connection_id=None)` is an
|
|
immutable helper, not a str subclass. Construct it explicitly for dictionary/set
|
|
keys; existing get_info/list/event values remain normal strings.
|
|
Equality and hashing include the connection ID and captured casemapping, so
|
|
identical-looking names on different connections are different keys. An IRCName
|
|
never compares equal to a plain str. `str(key)` / `key.text` recover the spelling.
|
|
|
|
`irc_casefold(text, casemapping='rfc1459')` supports ascii, strict-rfc1459 and
|
|
rfc1459. Only ASCII IRC characters fold; Unicode casefold would be incorrect.
|
|
The new `get_info('casemapping')` reports the comparator actually used by core.
|
|
Current master handles ASCII and RFC1459; this patch does not change its handling
|
|
of advertised strict-rfc1459. An explicit mapping is available for scripts that
|
|
need strict-rfc1459 independently. Keys capture their mapping so hashes stay
|
|
stable; rebuild a collection if the connection's mapping changes.
|
|
|
|
```python
|
|
seen = {zoitechat.IRCName('[SomeNick]')}
|
|
assert zoitechat.IRCName('{somenick}') in seen # RFC1459 connection
|
|
```
|