home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / GestionFichiers / metamorphose / metamorphose2_0.8.2_setup.exe / metamorphose2.exe / macurl2path.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2011-01-12  |  2KB  |  96 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import urllib
  5. import os
  6. __all__ = [
  7.     'url2pathname',
  8.     'pathname2url']
  9.  
  10. def url2pathname(pathname):
  11.     tp = urllib.splittype(pathname)[0]
  12.     if tp and tp != 'file':
  13.         raise RuntimeError, 'Cannot convert non-local URL to pathname'
  14.     tp != 'file'
  15.     if pathname[:3] == '///':
  16.         pathname = pathname[2:]
  17.     elif pathname[:2] == '//':
  18.         raise RuntimeError, 'Cannot convert non-local URL to pathname'
  19.     
  20.     components = pathname.split('/')
  21.     i = 0
  22.     while i < len(components):
  23.         if components[i] == '.':
  24.             del components[i]
  25.             continue
  26.         if components[i] == '..' and i > 0 and components[i - 1] not in ('', '..'):
  27.             del components[i - 1:i + 1]
  28.             i = i - 1
  29.             continue
  30.         if components[i] == '' and i > 0 and components[i - 1] != '':
  31.             del components[i]
  32.             continue
  33.         i = i + 1
  34.     if not components[0]:
  35.         rv = ':'.join(components[1:])
  36.     else:
  37.         i = 0
  38.         while i < len(components) and components[i] == '..':
  39.             components[i] = ''
  40.             i = i + 1
  41.         rv = ':' + ':'.join(components)
  42.     return urllib.unquote(rv)
  43.  
  44.  
  45. def pathname2url(pathname):
  46.     if '/' in pathname:
  47.         raise RuntimeError, 'Cannot convert pathname containing slashes'
  48.     '/' in pathname
  49.     components = pathname.split(':')
  50.     if components[0] == '':
  51.         del components[0]
  52.     
  53.     if components[-1] == '':
  54.         del components[-1]
  55.     
  56.     for i in range(len(components)):
  57.         if components[i] == '':
  58.             components[i] = '..'
  59.             continue
  60.     
  61.     components = map(_pncomp2url, components)
  62.     if os.path.isabs(pathname):
  63.         return '/' + '/'.join(components)
  64.     return '/'.join(components)
  65.  
  66.  
  67. def _pncomp2url(component):
  68.     component = urllib.quote(component[:31], safe = '')
  69.     return component
  70.  
  71.  
  72. def test():
  73.     for url in [
  74.         'index.html',
  75.         'bar/index.html',
  76.         '/foo/bar/index.html',
  77.         '/foo/bar/',
  78.         '/']:
  79.         print '%r -> %r' % (url, url2pathname(url))
  80.     
  81.     for path in [
  82.         'drive:',
  83.         'drive:dir:',
  84.         'drive:dir:file',
  85.         'drive:file',
  86.         'file',
  87.         ':file',
  88.         ':dir:',
  89.         ':dir:file']:
  90.         print '%r -> %r' % (path, pathname2url(path))
  91.     
  92.  
  93. if __name__ == '__main__':
  94.     test()
  95.  
  96.