Skip to content

Commit

Permalink
New calculator function, as tested by yano and jasondavies!
Browse files Browse the repository at this point in the history
  • Loading branch information
Sean B. Palmer committed Nov 6, 2010
1 parent 63b981c commit 9ae58d0
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ log: ;
git graph

sync: ;
rsync -avz --delete ./ pubble:opt/phenny/
rsync -avz ./ pubble:opt/phenny/
22 changes: 21 additions & 1 deletion modules/calc.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def calc(phenny, input):
precision = 2
query = web.urllib.quote(query.encode('utf-8'))

uri = 'http://futureboy.homeip.net/fsp/frink.fsp?fromVal='
uri = 'http://futureboy.us/fsp/frink.fsp?fromVal='
bytes = web.get(uri + query)
m = r_result.search(bytes)
if m:
Expand All @@ -63,8 +63,28 @@ def calc(phenny, input):

phenny.say(q + ' = ' + result[:350])
else: phenny.reply("Sorry, can't calculate that.")
phenny.say('Note that .calc is deprecated, consider using .c')
calc.commands = ['calc']
calc.example = '.calc 5 + 3'

def c(phenny, input):
"""Google calculator."""
q = input.group(2).encode('utf-8')
q = q.replace('\xcf\x86', 'phi') # utf-8 U+03C6
q = q.replace('\xcf\x80', 'pi') # utf-8 U+03C0
uri = 'http://www.google.com/ig/calculator?q='
bytes = web.get(uri + web.urllib.quote(q))
parts = bytes.split('",')
answer = [p for p in parts if p.startswith('rhs: "')][0][6:]
if answer:
answer = answer.decode('unicode-escape')
answer = answer.replace('<sup>', '^(')
answer = answer.replace('</sup>', ')')
answer = web.decode(answer)
phenny.say(answer)
else: phenny.say('Sorry, no result.')
c.commands = ['c']
c.example = '.c 5 + 3'

if __name__ == '__main__':
print __doc__.strip()
18 changes: 17 additions & 1 deletion web.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
About: http://inamidst.com/phenny/
"""

import urllib
import re, urllib
from htmlentitydefs import name2codepoint

class Grab(urllib.URLopener):
def __init__(self, *args):
Expand Down Expand Up @@ -40,5 +41,20 @@ def post(uri, query):
u.close()
return bytes

r_entity = re.compile(r'&([^;\s]+);')

def entity(match):
value = match.group(1).lower()
if value.startswith('#x'):
return unichr(int(value[2:], 16))
elif value.startswith('#'):
return unichr(int(value[1:]))
elif name2codepoint.has_key(value):
return unichr(name2codepoint[value])
return '[' + value + ']'

def decode(html):
return r_entity.sub(entity, html)

if __name__=="__main__":
main()

0 comments on commit 9ae58d0

Please sign in to comment.