utils: Add path_to_url() and generalize get_relative_path()

The old get_relative_path() implementation assumed os.sep == '/',
which doesn't hold on MS Windows.  The new implementation uses
split_all() for a more general component count.

I added path_to_url(), because the:

  '/'.join(split_all(path))

idiom was showing up in a number of cases, and it's easier to
understand what's going on when that reads:

  path_to_url(path)

This will fix a number of places where I think paths and URLs were
conflated, and should improve MS Windows support.
This commit is contained in:
W. Trevor King 2013-03-11 08:38:33 -04:00
commit ae4fc5a25e
5 changed files with 25 additions and 13 deletions

View file

@ -565,7 +565,7 @@ class StaticGenerator(Generator):
f_rel = os.path.relpath(f, self.path)
# TODO remove this hardcoded 'static' subdirectory
dest = os.path.join('static', f_rel)
url = '/'.join(pelican.utils.split_all(dest))
url = pelican.utils.path_to_url(dest)
sc = Static(
content=None,
metadata={