__module_name__ = "utf8decoder" 
__module_version__ = "1.0" 
__module_description__ = "Decodes UTF8 sent by other people into iso-8859-1"
__module_author__ = "Gustavo Niemeyer <gustavo@niemeyer.net>"

import xchat

def decode(word, word_eol, userdata):
    event, pos = userdata
    if type(pos) is int:
        pos = (pos,)
    changed = False
    for i in pos:
        try:
            reencoded = word[i].decode('utf8').encode('iso-8859-1')
        except (UnicodeError, IndexError):
            continue
        if reencoded != word[i]:
            word[i] = reencoded
            changed = True
    if changed:
        xchat.emit_print(event, *word)
        return xchat.EAT_XCHAT
    else:
        return xchat.EAT_NONE

EVENTS = [
  ("Channel Action", 1),
  ("Channel Action Hilight", 1),
  ("Channel Message", 1),
  ("Channel Msg Hilight", 1),
  ("Channel Notice", 2),
  ("Generic Message", (0, 1)),
  ("Kick", 3),
  ("Killed", 1),
  ("Motd", 0),
  ("Notice", 1),
  ("Part with Reason", 3),
  ("Private Message", 1),
  ("Private Message to Dialog", 1),
  ("Quit", 1),
  ("Receive Wallops", 1),
  ("Server Notice", 0),
  ("Server Text", 0),
  ("Topic", 1),
  ("Topic Change", 1),
]

for event in EVENTS:
    xchat.hook_print(event[0], decode, event)

print "Plugin utf8decoder loaded!"

# vim:ts=4:sw=4:et
