Commit ceaafa66 authored by Skip Montanaro's avatar Skip Montanaro

forgot this when removing RISCOS stuff

parent da27fd26
"""A more or less complete dictionary like interface for the RISC OS environment."""
import riscos
class _Environ:
def __init__(self, initial = None):
pass
def __repr__(self):
return repr(riscos.getenvdict())
def __cmp__(self, dict):
return cmp(riscos.getenvdict(), dict)
def __len__(self):
return len(riscos.getenvdict())
def __getitem__(self, key):
ret = riscos.getenv(key)
if ret != None:
return ret
else:
raise KeyError
def __setitem__(self, key, item):
riscos.putenv(key, item)
def __delitem__(self, key):
riscos.delenv(key)
def clear(self):
# too dangerous on RISC OS
pass
def copy(self):
return riscos.getenvdict()
def keys(self): return riscos.getenvdict().keys()
def items(self): return riscos.getenvdict().items()
def values(self): return riscos.getenvdict().values()
def has_key(self, key):
value = riscos.getenv(key)
return value != None
def __contains__(self, key):
return riscos.getenv(key) is not None
def update(self, dict):
for k, v in dict.items():
riscos.putenv(k, v)
def get(self, key, failobj=None):
value = riscos.getenv(key)
if value != None:
return value
else:
return failobj
This diff is collapsed.
"""riscos specific module for conversion between pathnames and URLs.
Based on macurl2path.
Do not import directly, use urllib instead."""
import string
import urllib
import os
__all__ = ["url2pathname","pathname2url"]
__slash_dot = string.maketrans("/.", "./")
def url2pathname(url):
"""OS-specific conversion from a relative URL of the 'file' scheme
to a file system path; not recommended for general use."""
tp = urllib.splittype(url)[0]
if tp and tp != 'file':
raise RuntimeError, 'Cannot convert non-local URL to pathname'
# Turn starting /// into /, an empty hostname means current host
if url[:3] == '///':
url = url[2:]
elif url[:2] == '//':
raise RuntimeError, 'Cannot convert non-local URL to pathname'
components = url.split('/')
if not components[0]:
if '$' in components:
del components[0]
else:
components[0] = '$'
# Remove . and embedded ..
i = 0
while i < len(components):
if components[i] == '.':
del components[i]
elif components[i] == '..' and i > 0 and \
components[i-1] not in ('', '..'):
del components[i-1:i+1]
i -= 1
elif components[i] == '..':
components[i] = '^'
i += 1
elif components[i] == '' and i > 0 and components[i-1] != '':
del components[i]
else:
i += 1
components = map(lambda x: urllib.unquote(x).translate(__slash_dot), components)
return '.'.join(components)
def pathname2url(pathname):
"""OS-specific conversion from a file system path to a relative URL
of the 'file' scheme; not recommended for general use."""
return urllib.quote('///' + pathname.translate(__slash_dot), "/$:")
def test():
for url in ["index.html",
"/SCSI::SCSI4/$/Anwendung/Comm/Apps/!Fresco/Welcome",
"/SCSI::SCSI4/$/Anwendung/Comm/Apps/../!Fresco/Welcome",
"../index.html",
"bar/index.html",
"/foo/bar/index.html",
"/foo/bar/",
"/"]:
print('%r -> %r' % (url, url2pathname(url)))
print("*******************************************************")
for path in ["SCSI::SCSI4.$.Anwendung",
"PythonApp:Lib",
"PythonApp:Lib.rourl2path/py"]:
print('%r -> %r' % (path, pathname2url(path)))
if __name__ == '__main__':
test()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment