[mod_python] Feature Request: Additions to mod_python.util

courtney ludwin courtneyludwin at yahoo.com
Sat Jan 7 22:56:32 EST 2006


Yo Sean,
I just wrote the encode/decode functions recently and
posted them on by blog:
http://2centspoorer.blogspot.com/2006/01/urlencoderdecoder-for-python.html

regards,
Courtney


anyway here it is...


_keys = [
  "$", "&", "+", ",", "/", ":", ";", "=", "?", "@", "
", '"',
  "<", ">", "#", "%", "{", "}", "|", "\\", "^", "~",
"[", "]", "`"]

_vals = [
  '%24', '%26', '%2B', '%2C', '%2F', '%3A', '%3B',
'%3D', '%3F',
  '%40', '%20', '%22', '%3C', '%3E', '%23', '%25',
'%7B', '%7D',
  '%7C', '%5C', '%5E', '%7E', '%5B', '%5D', '%60']

def encode(str=""): 
  """ URL Encodes a string with out side effects
  """
  return "".join([_swap(x) for x in str])

def decode(str=""):
  """ Takes a URL encoded string and decodes it with
out side effects
  """
  if not str: return None
  for v in _vals:
    if v in str: str = str.replace(v,
_keys[_vals.index(v)])
  return str 

def _swap(x):
  """ Helper function for encode. 
  """
  if x in _keys: return _vals[_keys.index(x)]
  return x

### units ###
if __name__ == "__main__":
  assert("".join(_keys) ==
decode(encode("".join(_keys))))
  assert("".join(_vals) ==
encode(decode("".join(_vals))))
  print "passed all unit tests."




--- Sean Jamieson <sean at barriescene.com> wrote:

> Hi, I don't know if what I'm about to ask has
> already been requested, or 
> if this is the right list, but here I go:
> 
> I have been using mod_python for about 3 weeks now,
> and have come up 
> with a few things that I'd like to see added into
> the util module (I'm 
> assuming this might be the right place for them).
> 
> 1. a refresh() sibling to the redirect() function; I
> use the Refresh 
> header quite often in my applications.
> 
> 2. html(encode|decode) for translating all defined
> entity characters; 
> currently pythons default cgi.escape only translates
> "&", "<" and ">", 
> and xml.sax.saxutils.escape is both silly if you're
> not using sax for 
> anything else, and not convenient as you have to
> give it the translation 
> table. Also a simple method to unescape these is
> quite useful aswell.
> 
> I've thought of other things aswell, but I can't
> remember what they were 
> right now :-)
> 
> This is a great project, keep up the good work.
> 
> Thanks,
> Sean
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
>
http://mailman.modpython.org/mailman/listinfo/mod_python
> 



		
__________________________________________ 
Yahoo! DSL – Something to write home about. 
Just $16.99/mo. or less. 
dsl.yahoo.com 



More information about the Mod_python mailing list