diff --git a/plugins/8ball.py b/plugins/8ball.py index 59ddc35..b472188 100755 --- a/plugins/8ball.py +++ b/plugins/8ball.py @@ -1,4 +1,5 @@ from util import hook +from util.text import multiword_replace import random color_codes = { @@ -8,10 +9,8 @@ color_codes = { } with open("plugins/data/8ball_responses.txt") as f: - for code in color_codes: - f = f.replace(code, color_codes[code]) - responses = [line.strip() for line in f.readlines() - if not line.startswith("//")] + responses = [multiword_replace(line.strip(), color_codes) for line in + f.readlines()if not line.startswith("//")] @hook.command('8ball') @@ -19,6 +18,6 @@ def eightball(input, me=None): "8ball -- The all knowing magic eight ball, " \ "in electronic form. Ask and it shall be answered!" - # here we use voodoo magic to tell the future + # here we use voodoo magic to tell the future magic = random.choice(responses) me("shakes the magic 8 ball... %s" % magic) diff --git a/plugins/factoids.py b/plugins/factoids.py index 79dd07f..5a028ac 100755 --- a/plugins/factoids.py +++ b/plugins/factoids.py @@ -1,5 +1,6 @@ # Written by Scaevolus 2010 from util import hook, http +from util.text import multiword_replace import string import re @@ -47,18 +48,6 @@ def get_memory(db, word): return None -def multiwordReplace(text, wordDic): - """ - take a text and replace words that match a key in a dictionary with - the associated value, return the changed text - """ - rc = re.compile('|'.join(map(re.escape, wordDic))) - - def translate(match): - return wordDic[match.group(0)] - return rc.sub(translate, text) - - @hook.command("r", adminonly=True) @hook.command(adminonly=True) def remember(inp, nick='', db=None, say=None, input=None, notice=None): @@ -164,7 +153,7 @@ def factoid(inp, say=None, db=None, bot=None, me=None, conn=None, input=None): else: result = data - result = multiwordReplace(result, shortcodes) + result = multiword_replace(result, shortcodes) if result.startswith(""): result = result[5:].strip() diff --git a/plugins/util/text.py b/plugins/util/text.py index 57f67d3..8857e8f 100755 --- a/plugins/util/text.py +++ b/plugins/util/text.py @@ -14,6 +14,18 @@ def capitalize_first(line): return ' '.join([s[0].upper() + s[1:] for s in line.split(' ')]) +def multiword_replace(text, wordDic): + """ + take a text and replace words that match a key in a dictionary with + the associated value, return the changed text + """ + rc = re.compile('|'.join(map(re.escape, wordDic))) + + def translate(match): + return wordDic[match.group(0)] + return rc.sub(translate, text) + + # from def truncate_words(content, length=100, suffix='...'): "Truncates a string after a certain number of chars."