__module_name__ = "Pygame Documentation Lookup"
__module_version__ = "0.2"
__module_description__ = "References pygame online help"
"""
simple script for use in xchat, use;
/pygame SEARCH
to search for all reference related to SEARCH
/pygame_update
to reload the online documentation
"""
import xchat, urllib, re, sys
Help = {}
Website = 'http://pygame.org/docs/'
Regex = re.compile(r'(.*) - (.*)?(.*)
')
Blockwords = 'and', 'or', 'but', 'you', 'if'
def load_help():
'call to init/reinit the help'
Help.clear()
data = urllib.urlopen(Website).readlines()
helplines = 0
for line in data:
line = line.strip()
if not helplines:
if line == '':
helplines = 1
else:
if line == '':
break
parse_help_line(line)
def parse_help_line(line):
match = re.match(Regex, line)
url, name, isclass, descr = match.groups()
descr = descr.strip()
name = name.strip()
url = Website + url
if name.startswith('pygame.'):
name = name[7:]
fullname = name
if name.find('.') >= 0:
name = name.split('.')[-1]
helpitem = fullname, descr, url
add_help_item(name, helpitem)
add_help_item(fullname, helpitem)
for word in descr.split():
add_help_item(word, helpitem)
def add_help_item(word, item):
if Help.has_key(word):
if not item in Help[word]:
Help[word].append(item)
else:
Help[word] = [item]
def find_help(word):
if word.startswith('pygame.'):
word = word[7:]
return Help.get(word)
def pygame_help_lookup(word, word_eol, userdata):
if len(word) < 2:
print 'Must provide a term to seach'
return xchat.EAT_ALL
if word[1] in Blockwords:
print 'Use more specific search word'
return xchat.EAT_ALL
xchat.command("me searches pygame docs for '%s'" % (word[1]))
result = find_help(word[1])
if not result:
xchat.command('say No help found.')
else:
for name,descr,url in result:
xchat.command('say %s - %s'%(name,descr))
xchat.command('say %s'%url)
return xchat.EAT_ALL
def pygame_help_update(word, word_eol, userdata):
load_help()
print 'Pygame help reloaded'
return xchat.EAT_ALL
load_help()
xchat.hook_command("pygame", pygame_help_lookup, help="/pygame string_to_lookup")
xchat.hook_command("pygame_update", pygame_help_update, help="/pygame_update")