mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
This commit is contained in:
parent
fa0af6d221
commit
9207e1ff62
4 changed files with 107 additions and 4 deletions
|
|
@ -288,7 +288,14 @@ Basic settings
|
||||||
|
|
||||||
A list of tags for Typogrify to ignore. By default Typogrify will ignore
|
A list of tags for Typogrify to ignore. By default Typogrify will ignore
|
||||||
``pre`` and ``code`` tags. This requires that Typogrify version 2.0.4 or
|
``pre`` and ``code`` tags. This requires that Typogrify version 2.0.4 or
|
||||||
later is installed
|
later is installed.
|
||||||
|
|
||||||
|
.. data:: TYPOGRIFY_OMIT_FILTERS = []
|
||||||
|
|
||||||
|
A list of Typogrify filters to skip. Allowed values are: ``'amp'``,
|
||||||
|
``'smartypants'``, ``'caps'``, ``'initial_quotes'``, ``'widont'``. By
|
||||||
|
default, no filter is omitted (in other words, all filters get applied). This
|
||||||
|
setting requires that Typogrify version 2.1.0 or later is installed.
|
||||||
|
|
||||||
.. data:: TYPOGRIFY_DASHES = 'default'
|
.. data:: TYPOGRIFY_DASHES = 'default'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -648,9 +648,20 @@ class Readers(FileStampDataCacher):
|
||||||
smartypants.Attr.default |= smartypants.Attr.w
|
smartypants.Attr.default |= smartypants.Attr.w
|
||||||
|
|
||||||
def typogrify_wrapper(text):
|
def typogrify_wrapper(text):
|
||||||
"""Ensures ignore_tags feature is backward compatible"""
|
"""Ensure compatibility with older versions of Typogrify.
|
||||||
|
|
||||||
|
The 'TYPOGRIFY_IGNORE_TAGS' and/or 'TYPOGRIFY_OMIT_FILTERS'
|
||||||
|
settings will be ignored if the installed version of Typogrify
|
||||||
|
doesn't have the corresponding features."""
|
||||||
try:
|
try:
|
||||||
return typogrify(text, self.settings["TYPOGRIFY_IGNORE_TAGS"])
|
return typogrify(
|
||||||
|
text,
|
||||||
|
self.settings["TYPOGRIFY_IGNORE_TAGS"],
|
||||||
|
**{f: False for f in self.settings["TYPOGRIFY_OMIT_FILTERS"]},
|
||||||
|
)
|
||||||
|
except TypeError:
|
||||||
|
try:
|
||||||
|
typogrify(text, self.settings["TYPOGRIFY_IGNORE_TAGS"])
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return typogrify(text)
|
return typogrify(text)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,7 @@ DEFAULT_CONFIG = {
|
||||||
"ARTICLE_PERMALINK_STRUCTURE": "",
|
"ARTICLE_PERMALINK_STRUCTURE": "",
|
||||||
"TYPOGRIFY": False,
|
"TYPOGRIFY": False,
|
||||||
"TYPOGRIFY_IGNORE_TAGS": [],
|
"TYPOGRIFY_IGNORE_TAGS": [],
|
||||||
|
"TYPOGRIFY_OMIT_FILTERS": [],
|
||||||
"TYPOGRIFY_DASHES": "default",
|
"TYPOGRIFY_DASHES": "default",
|
||||||
"SUMMARY_END_SUFFIX": "…",
|
"SUMMARY_END_SUFFIX": "…",
|
||||||
"SUMMARY_MAX_LENGTH": 50,
|
"SUMMARY_MAX_LENGTH": 50,
|
||||||
|
|
|
||||||
|
|
@ -409,6 +409,90 @@ class RstReaderTest(ReaderTest):
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return unittest.skip("need the typogrify distribution")
|
return unittest.skip("need the typogrify distribution")
|
||||||
|
|
||||||
|
def test_typogrify_ignore_filters(self):
|
||||||
|
try:
|
||||||
|
# typogrify should be able to ignore user specified filters.
|
||||||
|
page = self.read_file(
|
||||||
|
path="article_with_code_block.rst",
|
||||||
|
TYPOGRIFY=True,
|
||||||
|
TYPOGRIFY_OMIT_FILTERS=["amp"],
|
||||||
|
)
|
||||||
|
expected = (
|
||||||
|
"<p>An article with some code</p>\n"
|
||||||
|
'<div class="highlight"><pre><span></span>'
|
||||||
|
'<span class="n">x</span>'
|
||||||
|
' <span class="o">&</span>'
|
||||||
|
' <span class="n">y</span>\n</pre></div>\n'
|
||||||
|
"<p>A block quote:</p>\n<blockquote>\nx "
|
||||||
|
"& y</blockquote>\n"
|
||||||
|
"<p>Normal:\nx & y</p>\n"
|
||||||
|
)
|
||||||
|
self.assertEqual(page.content, expected)
|
||||||
|
|
||||||
|
page = self.read_file(
|
||||||
|
path="article.rst",
|
||||||
|
TYPOGRIFY=True,
|
||||||
|
TYPOGRIFY_OMIT_FILTERS=["smartypants"],
|
||||||
|
)
|
||||||
|
expected = (
|
||||||
|
'<p><span class="caps">THIS</span> is some content. '
|
||||||
|
"With some stuff to "typogrify"...</p>\n"
|
||||||
|
'<p>Now with added support for <abbr title="three letter '
|
||||||
|
'acronym"><span class="caps">TLA</span></abbr>.</p>\n'
|
||||||
|
)
|
||||||
|
self.assertEqual(page.content, expected)
|
||||||
|
|
||||||
|
page = self.read_file(
|
||||||
|
path="article.rst",
|
||||||
|
TYPOGRIFY=True,
|
||||||
|
TYPOGRIFY_OMIT_FILTERS=["caps"],
|
||||||
|
)
|
||||||
|
expected = (
|
||||||
|
"<p>THIS is some content. "
|
||||||
|
"With some stuff to “typogrify”…</p>\n"
|
||||||
|
'<p>Now with added support for <abbr title="three letter '
|
||||||
|
'acronym">TLA</abbr>.</p>\n'
|
||||||
|
)
|
||||||
|
self.assertEqual(page.content, expected)
|
||||||
|
|
||||||
|
page = self.read_file(
|
||||||
|
path="article.rst",
|
||||||
|
TYPOGRIFY=True,
|
||||||
|
TYPOGRIFY_OMIT_FILTERS=["initial_quotes"],
|
||||||
|
)
|
||||||
|
expected = (
|
||||||
|
'<p><span class="caps">THIS</span> is some content. '
|
||||||
|
"With some stuff to “typogrify”…</p>\n"
|
||||||
|
'<p>Now with added support for <abbr title="three letter '
|
||||||
|
'acronym"><span class="caps">TLA</span></abbr>.</p>\n'
|
||||||
|
)
|
||||||
|
self.assertEqual(page.content, expected)
|
||||||
|
|
||||||
|
page = self.read_file(
|
||||||
|
path="article.rst",
|
||||||
|
TYPOGRIFY=True,
|
||||||
|
TYPOGRIFY_OMIT_FILTERS=["widont"],
|
||||||
|
)
|
||||||
|
expected = (
|
||||||
|
'<p><span class="caps">THIS</span> is some content. '
|
||||||
|
"With some stuff to "
|
||||||
|
"“typogrify”…</p>\n<p>Now with added "
|
||||||
|
'support for <abbr title="three letter acronym">'
|
||||||
|
'<span class="caps">TLA</span></abbr>.</p>\n'
|
||||||
|
)
|
||||||
|
self.assertEqual(page.content, expected)
|
||||||
|
|
||||||
|
page = self.read_file(
|
||||||
|
path="article.rst",
|
||||||
|
TYPOGRIFY=True,
|
||||||
|
TYPOGRIFY_OMIT_FILTERS=["this-filter-does-not-exists"],
|
||||||
|
)
|
||||||
|
self.assertRaises(TypeError)
|
||||||
|
except ImportError:
|
||||||
|
return unittest.skip("need the typogrify distribution")
|
||||||
|
except TypeError:
|
||||||
|
return unittest.skip("need typogrify version 2.1.0 or later")
|
||||||
|
|
||||||
def test_typogrify_ignore_tags(self):
|
def test_typogrify_ignore_tags(self):
|
||||||
try:
|
try:
|
||||||
# typogrify should be able to ignore user specified tags.
|
# typogrify should be able to ignore user specified tags.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue