forked from github/pelican
Generate {tag}-style links on pages correctly. Fixes #1513
This commit is contained in:
parent
5a8efcd526
commit
49668f711a
4 changed files with 65 additions and 7 deletions
|
|
@ -257,9 +257,9 @@ class Content(object):
|
|||
'limit_msg': ("Other resources were not found "
|
||||
"and their urls not replaced")})
|
||||
elif what == 'category':
|
||||
origin = Category(path, self.settings).url
|
||||
origin = '/'.join((siteurl, Category(path, self.settings).url))
|
||||
elif what == 'tag':
|
||||
origin = Tag(path, self.settings).url
|
||||
origin = '/'.join((siteurl, Tag(path, self.settings).url))
|
||||
|
||||
# keep all other parts, such as query, fragment, etc.
|
||||
parts = list(value)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
Title: Page with a bunch of links
|
||||
|
||||
My links:
|
||||
|
||||
[Link 1]({tag}マック)
|
||||
|
||||
[Link 2]({category}Yeah)
|
||||
|
|
@ -212,17 +212,20 @@ class TestPage(unittest.TestCase):
|
|||
'<a href="|tag|tagname">link</a>')
|
||||
page = Page(**args)
|
||||
content = page.get_content('http://notmyidea.org')
|
||||
self.assertEqual(content, ('A simple test, with a '
|
||||
'<a href="tag/tagname.html">link</a>'))
|
||||
self.assertEqual(
|
||||
content,
|
||||
('A simple test, with a '
|
||||
'<a href="http://notmyidea.org/tag/tagname.html">link</a>'))
|
||||
|
||||
# Category
|
||||
args['content'] = ('A simple test, with a '
|
||||
'<a href="|category|category">link</a>')
|
||||
page = Page(**args)
|
||||
content = page.get_content('http://notmyidea.org')
|
||||
self.assertEqual(content,
|
||||
('A simple test, with a '
|
||||
'<a href="category/category.html">link</a>'))
|
||||
self.assertEqual(
|
||||
content,
|
||||
('A simple test, with a '
|
||||
'<a href="http://notmyidea.org/category/category.html">link</a>'))
|
||||
|
||||
def test_intrasite_link(self):
|
||||
# type does not take unicode in PY2 and bytes in PY3, which in
|
||||
|
|
@ -543,6 +546,31 @@ class TestStatic(unittest.TestCase):
|
|||
self.assertEqual(self.static.save_as, expected_save_as)
|
||||
self.assertEqual(self.static.url, path_to_url(expected_save_as))
|
||||
|
||||
def test_tag_link_syntax(self):
|
||||
"{tag} link syntax triggers url replacement."
|
||||
|
||||
html = '<a href="{tag}foo">link</a>'
|
||||
page = Page(
|
||||
content=html,
|
||||
metadata={'title': 'fakepage'}, settings=self.settings,
|
||||
source_path=os.path.join('dir', 'otherdir', 'fakepage.md'),
|
||||
context=self.context)
|
||||
content = page.get_content('')
|
||||
|
||||
self.assertNotEqual(content, html)
|
||||
|
||||
def test_category_link_syntax(self):
|
||||
"{category} link syntax triggers url replacement."
|
||||
|
||||
html = '<a href="{category}foo">link</a>'
|
||||
page = Page(content=html,
|
||||
metadata={'title': 'fakepage'}, settings=self.settings,
|
||||
source_path=os.path.join('dir', 'otherdir', 'fakepage.md'),
|
||||
context=self.context)
|
||||
content = page.get_content('')
|
||||
|
||||
self.assertNotEqual(content, html)
|
||||
|
||||
|
||||
class TestURLWrapper(unittest.TestCase):
|
||||
def test_comparisons(self):
|
||||
|
|
|
|||
|
|
@ -428,6 +428,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
['This is a markdown test page', 'published', 'page'],
|
||||
['This is a test page with a preset template', 'published',
|
||||
'custom'],
|
||||
['Page with a bunch of links', 'published', 'page'],
|
||||
['A Page (Test) for sorting', 'published', 'page'],
|
||||
]
|
||||
hidden_pages_expected = [
|
||||
|
|
@ -517,6 +518,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
['This is a test page', 'published', 'page'],
|
||||
['This is a markdown test page', 'published', 'page'],
|
||||
['A Page (Test) for sorting', 'published', 'page'],
|
||||
['Page with a bunch of links', 'published', 'page'],
|
||||
['This is a test page with a preset template', 'published',
|
||||
'custom'],
|
||||
]
|
||||
|
|
@ -530,6 +532,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
# sort by title
|
||||
pages_expected_sorted_by_title = [
|
||||
['A Page (Test) for sorting', 'published', 'page'],
|
||||
['Page with a bunch of links', 'published', 'page'],
|
||||
['This is a markdown test page', 'published', 'page'],
|
||||
['This is a test page', 'published', 'page'],
|
||||
['This is a test page with a preset template', 'published',
|
||||
|
|
@ -543,6 +546,26 @@ class TestPageGenerator(unittest.TestCase):
|
|||
pages = self.distill_pages(generator.pages)
|
||||
self.assertEqual(pages_expected_sorted_by_title, pages)
|
||||
|
||||
def test_tag_and_category_links_on_generated_pages(self):
|
||||
"""
|
||||
Test to ensure links of the form {tag}tagname and {category}catname
|
||||
are generated correctly on pages
|
||||
"""
|
||||
settings = get_settings(filenames={})
|
||||
settings['PAGE_PATHS'] = ['TestPages'] # relative to CUR_DIR
|
||||
settings['CACHE_PATH'] = self.temp_cache
|
||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CUR_DIR, theme=settings['THEME'], output_path=None)
|
||||
generator.generate_context()
|
||||
pages_by_title = {p.title: p.content for p in generator.pages}
|
||||
|
||||
test_content = pages_by_title['Page with a bunch of links']
|
||||
self.assertIn('<a href="/category/yeah.html">', test_content)
|
||||
self.assertIn('<a href="/tag/matsuku.html">', test_content)
|
||||
|
||||
|
||||
class TestTemplatePagesGenerator(unittest.TestCase):
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue