diff --git a/docs/changelog.rst b/docs/changelog.rst
index 0804c8b0..1f6cab42 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -9,6 +9,8 @@ Release history
longer article-specific
* Deprecate ``FILES_TO_COPY`` in favor of ``STATIC_PATHS`` and
``EXTRA_PATH_METADATA``
+* Add ``bare_title`` to metadata when ``title`` exists,
+ allowing for non-typogrified ``
`` tag when ``TYPOGRIFY=True``.
3.2.1 and 3.2.2
===============
diff --git a/pelican/readers.py b/pelican/readers.py
index 3f01a72c..83dd7584 100644
--- a/pelican/readers.py
+++ b/pelican/readers.py
@@ -456,6 +456,9 @@ class Readers(object):
find_empty_alt(content, path)
# eventually filter the content with typogrify if asked so
+ if 'title' in metadata:
+ # Allow templates to include non-typogrified title in tag.
+ metadata['bare_title'] = metadata['title']
if content and self.settings['TYPOGRIFY']:
from typogrify.filters import typogrify
content = typogrify(content)
diff --git a/pelican/tests/content/article.rst b/pelican/tests/content/article.rst
index 7109c29b..aa2ca101 100644
--- a/pelican/tests/content/article.rst
+++ b/pelican/tests/content/article.rst
@@ -1,4 +1,4 @@
-Article title
+Article TITLE
#############
This is some content. With some stuff to "typogrify".
diff --git a/pelican/tests/test_generators.py b/pelican/tests/test_generators.py
index f47ce7d3..26eac103 100644
--- a/pelican/tests/test_generators.py
+++ b/pelican/tests/test_generators.py
@@ -67,7 +67,7 @@ class TestArticlesGenerator(unittest.TestCase):
def test_generate_context(self):
articles_expected = [
- ['Article title', 'published', 'Default', 'article'],
+ ['Article TITLE', 'published', 'Default', 'article'],
['Article with markdown and summary metadata multi', 'published',
'Default', 'article'],
['Article with markdown and summary metadata single', 'published',
diff --git a/pelican/tests/test_readers.py b/pelican/tests/test_readers.py
index 43cf5ecf..e8390e37 100644
--- a/pelican/tests/test_readers.py
+++ b/pelican/tests/test_readers.py
@@ -51,6 +51,7 @@ class RstReaderTest(ReaderTest):
'author': 'Alexis Métaireau',
'title': 'Rst with filename metadata',
}
+ expected['bare_title'] = expected['title']
for key, value in page.metadata.items():
self.assertEqual(value, expected[key], key)
@@ -63,6 +64,7 @@ class RstReaderTest(ReaderTest):
'title': 'Rst with filename metadata',
'date': datetime.datetime(2012, 11, 29),
}
+ expected['bare_title'] = expected['title']
for key, value in page.metadata.items():
self.assertEqual(value, expected[key], key)
@@ -80,6 +82,7 @@ class RstReaderTest(ReaderTest):
'slug': 'article_with_filename_metadata',
'mymeta': 'foo',
}
+ expected['bare_title'] = expected['title']
for key, value in page.metadata.items():
self.assertEqual(value, expected[key], key)
@@ -116,6 +119,26 @@ class RstReaderTest(ReaderTest):
except ImportError:
return unittest.skip('need the typogrify distribution')
+ def test_bare_title(self):
+ # if nothing is specified in the settings, the content should be
+ # unmodified
+ page = self.read_file(path='article.rst')
+ expected_bare_title = 'Article TITLE'
+ expected_title = 'Article TITLE'
+ self.assertEqual(page.bare_title, expected_bare_title)
+ self.assertEqual(page.title, expected_title)
+
+ try:
+ # otherwise, typogrify should be applied to title,
+ # but not to bare_title
+ page = self.read_file(path='article.rst', TYPOGRIFY=True)
+ expected_bare_title = 'Article TITLE'
+ expected_title = 'Article TITLE'
+ self.assertEqual(page.bare_title, expected_bare_title)
+ self.assertEqual(page.title, expected_title)
+ except ImportError:
+ return unittest.skip('need the typogrify distribution')
+
class MdReaderTest(ReaderTest):