about summary refs log blame commit diff
path: root/.escape_codes_url.py
blob: 60aa1c21069402b8bec323a6163ded3869c26a82 (plain) (tree)























































                                                                            
#!/usr/bin/python

"""
Forward and Backward lookups for URL escape sequences
"""

import sys, re


literal_to_esccode = {
  ' ': '%20',
  '<': '%3C',
  '>': '%3E',
  '#': '%23',
  '%': '%25',
  '{': '%7B',
  '}': '%7D',
  '|': '%7C',
  '\\': '%5C',
  '^': '%5E',
  '~': '%7E',
  '[': '%5B',
  ']': '%5D',
  '`': '%60',
  ';': '%3B',
  '/': '%2F',
  '?': '%3F',
  ':': '%3A',
  '@': '%40',
  '=': '%3D',
  '&': '%26',
  '$': '%24',
}


esccode_to_literal = {
  v: k for k, v in literal_to_esccode.items()
}


def is_esccode(string):
  p = re.compile(r'^%\w\w$')
  m = p.match(string)
  return bool(p.match(string))


try:
  el = sys.argv[1]
except:
  el = None

if not el:
  print literal_to_esccode
else:
  msg = esccode_to_literal[el] if is_esccode(el) else literal_to_esccode[el]
  print '"{0}": "{1}"'.format(el, msg)