mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
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 "
|
'limit_msg': ("Other resources were not found "
|
||||||
"and their urls not replaced")})
|
"and their urls not replaced")})
|
||||||
elif what == 'category':
|
elif what == 'category':
|
||||||
origin = Category(path, self.settings).url
|
origin = '/'.join((siteurl, Category(path, self.settings).url))
|
||||||
elif what == 'tag':
|
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.
|
# keep all other parts, such as query, fragment, etc.
|
||||||
parts = list(value)
|
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>')
|
'<a href="|tag|tagname">link</a>')
|
||||||
page = Page(**args)
|
page = Page(**args)
|
||||||
content = page.get_content('http://notmyidea.org')
|
content = page.get_content('http://notmyidea.org')
|
||||||
self.assertEqual(content, ('A simple test, with a '
|
self.assertEqual(
|
||||||
'<a href="tag/tagname.html">link</a>'))
|
content,
|
||||||
|
('A simple test, with a '
|
||||||
|
'<a href="http://notmyidea.org/tag/tagname.html">link</a>'))
|
||||||
|
|
||||||
# Category
|
# Category
|
||||||
args['content'] = ('A simple test, with a '
|
args['content'] = ('A simple test, with a '
|
||||||
'<a href="|category|category">link</a>')
|
'<a href="|category|category">link</a>')
|
||||||
page = Page(**args)
|
page = Page(**args)
|
||||||
content = page.get_content('http://notmyidea.org')
|
content = page.get_content('http://notmyidea.org')
|
||||||
self.assertEqual(content,
|
self.assertEqual(
|
||||||
('A simple test, with a '
|
content,
|
||||||
'<a href="category/category.html">link</a>'))
|
('A simple test, with a '
|
||||||
|
'<a href="http://notmyidea.org/category/category.html">link</a>'))
|
||||||
|
|
||||||
def test_intrasite_link(self):
|
def test_intrasite_link(self):
|
||||||
# type does not take unicode in PY2 and bytes in PY3, which in
|
# 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.save_as, expected_save_as)
|
||||||
self.assertEqual(self.static.url, path_to_url(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):
|
class TestURLWrapper(unittest.TestCase):
|
||||||
def test_comparisons(self):
|
def test_comparisons(self):
|
||||||
|
|
|
||||||
|
|
@ -428,6 +428,7 @@ class TestPageGenerator(unittest.TestCase):
|
||||||
['This is a markdown test page', 'published', 'page'],
|
['This is a markdown test page', 'published', 'page'],
|
||||||
['This is a test page with a preset template', 'published',
|
['This is a test page with a preset template', 'published',
|
||||||
'custom'],
|
'custom'],
|
||||||
|
['Page with a bunch of links', 'published', 'page'],
|
||||||
['A Page (Test) for sorting', 'published', 'page'],
|
['A Page (Test) for sorting', 'published', 'page'],
|
||||||
]
|
]
|
||||||
hidden_pages_expected = [
|
hidden_pages_expected = [
|
||||||
|
|
@ -517,6 +518,7 @@ class TestPageGenerator(unittest.TestCase):
|
||||||
['This is a test page', 'published', 'page'],
|
['This is a test page', 'published', 'page'],
|
||||||
['This is a markdown test page', 'published', 'page'],
|
['This is a markdown test page', 'published', 'page'],
|
||||||
['A Page (Test) for sorting', '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',
|
['This is a test page with a preset template', 'published',
|
||||||
'custom'],
|
'custom'],
|
||||||
]
|
]
|
||||||
|
|
@ -530,6 +532,7 @@ class TestPageGenerator(unittest.TestCase):
|
||||||
# sort by title
|
# sort by title
|
||||||
pages_expected_sorted_by_title = [
|
pages_expected_sorted_by_title = [
|
||||||
['A Page (Test) for sorting', 'published', 'page'],
|
['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 markdown test page', 'published', 'page'],
|
||||||
['This is a test page', 'published', 'page'],
|
['This is a test page', 'published', 'page'],
|
||||||
['This is a test page with a preset template', 'published',
|
['This is a test page with a preset template', 'published',
|
||||||
|
|
@ -543,6 +546,26 @@ class TestPageGenerator(unittest.TestCase):
|
||||||
pages = self.distill_pages(generator.pages)
|
pages = self.distill_pages(generator.pages)
|
||||||
self.assertEqual(pages_expected_sorted_by_title, 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):
|
class TestTemplatePagesGenerator(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue