webgo/helper.py

115 lines
2.5 KiB
Python

import string,re
DEBUG = 1
def header():
"""return html header"""
data = """
<html>
<head>
<title>WebGo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<link rel="stylesheet" media="screen" href="default.css" type="text/css" />
</head>
<h1> WebGo </h1>
<body>
"""
return data
def debug(req,form, optstr = ""):
"""
print various debug infos, e.g. form content.
gets request, util.FieldStorage form, optional extra string.
returns nothing, writes with request.write.
"""
if DEBUG:
if optstr == "":
req.write("Debug: "+str(form.keys())+"<br>\n")
else:
req.write("Debug: "+optstr+"<br>\n")
def footer():
"""return html footer"""
data = """
</body></html>
"""
return data
# create a unique session id
def generate_session_id():
import md5, time, base64, random, string
m = md5.new()
m.update(str(time.time()))
m.update(str(random.random()))
s = string.replace(base64.encodestring(m.digest())[:-3], '/', '$')
return s
def generate_game_name():
from whrandom import choice
chars = string.letters
name = ''
for i in range(16):
name = name + choice(chars)
return name.lower()
def check_for_int(data):
"""
gets a string. if string is an integer: return integer.
else return given string.
"""
#check if value is int
num = [n for n in data if n.isdigit()]
tmp = "".join(num)
if tmp == data:
ret = int(data)
else:
ret = data
return ret
def string_to_tuple(str):
"""
gets a string. If the string contains '(',')' and ',', then return
a tuple processed from the string. If the partial string is empty, then
-1 will be returned for that value.
"""
if (str[0] =='(') and (str[-1] ==')') and (string.find(str,',')):
splitlist = string.split(str[1:-1],",")
returnlist = []
for item in splitlist:
try:
returnlist.append(int(item))
except: #empty string
returnlist.append(-1)
return tuple(returnlist)
def dict_coords_to_gnugo_coords(coords,size):
"""
gets a (x,y) coordinate tuple and boardsize.
returns a string in gnugo syntax. examples:
gets (1,1), returns "A7".
gets (6,2), returns "B2".
"""
letterlist = [" "]
letterlist.extend(list(string.letters[26:]))
letterlist.remove("I")
letter = letterlist[coords[1]]
digit = size+1-coords[0]
return letter+str(digit)
def test():
print dict_coords_to_gnugo_coords((6,5),7)
if __name__ == "__main__":
test()