# HG changeset patch # User Jeff Hammel # Date 1312328410 25200 # Node ID 145a11393a7337750621ecbaa8dcbf23bc4d73ac # Parent 1efb669ab1c8ee0acf24f0e9fcb666793d33011e better handling of urls diff -r 1efb669ab1c8 -r 145a11393a73 document_it.py --- a/document_it.py Tue Aug 02 16:36:08 2011 -0700 +++ b/document_it.py Tue Aug 02 16:40:10 2011 -0700 @@ -45,7 +45,7 @@ if os.path.exists(path): return path -def parse_manifest(filename, directory=None): +def parse_manifest(filename, baseurl, directory=None): """ reads a documentation manifest; returns a list of two-tuples: [(filename, destination)] @@ -59,6 +59,7 @@ lines = [line for line in lines if line and not line.startswith('#')] items = [] + baseurl = baseurl.rstrip('/') for line in lines: try: f, url = line.split() @@ -66,7 +67,8 @@ except ValueError: raise ValueError("illegal manifest line: '%s'" % line) - url = url.lstrip('/') # no leading /s + if '://' not in url: + url = '%s/%s' % (baseurl, url.lstrip('/')) filename = os.path.join(directory, f) if os.path.isdir(filename): pass # TODO @@ -120,12 +122,12 @@ # read the manifests files = [] for manifest in manifests: - for item in parse_manifest(manifest, options.directory): + for item in parse_manifest(manifest, baseurl, options.directory): if item not in files: files.append(item) if options.list: for item in files: - print '%s -> %s/%s' % (item[0], baseurl.rstrip('/'), item[1].lstrip('/')) + print '%s -> %s' % item if not files: return # you're done