Merge pull request #92 from ericholscher/master

Detect absolute URL’s in the extra_* path.
This commit is contained in:
Tom Christie
2014-08-18 18:54:11 +01:00
5 changed files with 45 additions and 5 deletions

View File

@@ -103,6 +103,12 @@ def get_context(page, content, nav, toc, meta, config):
else:
site_favicon = None
if config['extra_javascript']:
config['extra_javascript'] = utils.create_media_urls(nav=nav, url_list=config['extra_javascript'])
if config['extra_css']:
config['extra_css'] = utils.create_media_urls(nav=nav, url_list=config['extra_css'])
return {
'site_name': site_name,
'site_author': config['site_author'],

View File

@@ -105,6 +105,23 @@ class UtilsTests(unittest.TestCase):
is_html = utils.is_html_file(path)
self.assertEqual(is_html, expected_result)
def test_create_media_urls(self):
pages = [
('index.md', 'Home'),
('about.md', 'About')
]
expected_results = {
'https://media.cdn.org/jquery.js': 'https://media.cdn.org/jquery.js',
'http://media.cdn.org/jquery.js': 'http://media.cdn.org/jquery.js',
'//media.cdn.org/jquery.js': '//media.cdn.org/jquery.js',
'media.cdn.org/jquery.js': './media.cdn.org/jquery.js',
'local/file/jquery.js': './local/file/jquery.js',
}
site_navigation = nav.SiteNavigation(pages)
for path, expected_result in expected_results.items():
urls = utils.create_media_urls(site_navigation, [path])
self.assertEqual(urls[0], expected_result)
class TableOfContentsTests(unittest.TestCase):
def markdown_to_toc(self, markdown_source):

View File

@@ -16,7 +16,7 @@
<link href="{{ base_url }}/css/font-awesome-4.0.3.css" rel="stylesheet">
<link href="{{ base_url }}/css/prettify-1.0.css" rel="stylesheet">
<link href="{{ base_url }}/css/base.css" rel="stylesheet">
{% for path in extra_css %}<link href="{{ base_url }}/{{ path }}" rel="stylesheet">{% endfor %}
{% for path in extra_css %}<link href="{{ path }}" rel="stylesheet">{% endfor %}
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
@@ -60,6 +60,6 @@
<script src="{{ base_url }}/js/bootstrap-3.0.3.min.js"></script>
<script src="{{ base_url }}/js/prettify-1.0.min.js"></script>
<script src="{{ base_url }}/js/base.js"></script>
{% for path in extra_javascript %}<script src="{{ base_url }}/{{ path }}"></script>{% endfor %}
{% for path in extra_javascript %}<script src="{{ path }}"></script>{% endfor %}
</body>
</html>

View File

@@ -11,13 +11,12 @@
<link rel="stylesheet" href="{{ base_url }}/css/theme.css" type="text/css" />
{% for path in extra_css %}
<link href="{{ base_url }}/{{ path }}" rel="stylesheet">
<link href="{{ path }}" rel="stylesheet">
{% endfor %}
<script type="text/javascript" src="{{ base_url }}/js/theme.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
{% for path in extra_javascript %}
<script src="{{ base_url }}/{{ path }}"></script>
<script src="{{ path }}"></script>
{% endfor %}
<style>

View File

@@ -10,6 +10,8 @@ and structure of the site and pages in the site.
import os
import shutil
from mkdocs.compat import urlparse
def copy_file(source_path, output_path):
"""
@@ -128,3 +130,19 @@ def is_html_file(path):
'.html',
'.htm',
]
def create_media_urls(nav, url_list):
"""
Return a list of URLs that have been processed correctly for inclusion in a page.
"""
final_urls = []
for url in url_list:
# Allow links to fully qualified URL's
parsed = urlparse(url)
if parsed.netloc:
final_urls.append(url)
else:
relative_url = '%s/%s' % (nav.url_context.make_relative('/'), url)
final_urls.append(relative_url)
return final_urls