Skip to content

Commit

Permalink
Merge pull request #1623 from facelessuser/bugfix/extended-pyg-lang
Browse files Browse the repository at this point in the history
Fixes extended Pygments language case-sensitive issue
  • Loading branch information
facelessuser committed Mar 19, 2022
2 parents 6700adb + 6466928 commit 57cdb4a
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 3 deletions.
1 change: 1 addition & 0 deletions docs/src/dictionary/en-custom.txt
Expand Up @@ -156,6 +156,7 @@ html
indepth
injectable
inline
inlined
inlines
ish
isn't
Expand Down
5 changes: 5 additions & 0 deletions docs/src/markdown/about/changelog.md
@@ -1,5 +1,10 @@
# Changelog

## 9.3

- **NEW**: B64: Allow SVG to be encoded and inlined.
- **FIX**: Highlight: Ensure that `extend_pygments_lang` is not case sensitive regarding language names.

## 9.2

- **NEW**: Drop Python 3.6 support and formally add Python 3.10 support.
Expand Down
2 changes: 1 addition & 1 deletion pymdownx/__meta__.py
Expand Up @@ -185,5 +185,5 @@ def parse_version(ver, pre=False):
return Version(major, minor, micro, release, pre, post, dev)


__version_info__ = Version(9, 2, 0, "final")
__version_info__ = Version(9, 3, 0, "final")
__version__ = __version_info__._get_canonical()
4 changes: 2 additions & 2 deletions pymdownx/highlight.py
Expand Up @@ -262,15 +262,15 @@ def __init__(
if isinstance(language, (dict, OrderedDict)):
name = language.get('name')
if name is not None and name not in self.extend_pygments_lang:
self.extend_pygments_lang[name] = [
self.extend_pygments_lang[name.lower()] = [
language.get('lang'),
language.get('options', {})
]

def get_extended_language(self, language):
"""Get extended language."""

return self.extend_pygments_lang.get(language, (language, {}))
return self.extend_pygments_lang.get(language.lower(), (language, {}))

def get_lexer(self, src, language):
"""Get the Pygments lexer."""
Expand Down
58 changes: 58 additions & 0 deletions tests/test_extensions/test_highlight.py
Expand Up @@ -542,3 +542,61 @@ def test_inlinehilite(self):
''', # noqa: E501
True
)


class TestExtendedLang(util.MdCase):
"""Test extended language cases."""

extension = ['pymdownx.highlight', 'pymdownx.superfences', 'pymdownx.inlinehilite']
extension_configs = {
'pymdownx.highlight': {
'extend_pygments_lang': [
{'name': 'php-inline', 'lang': 'php', 'options': {'startinline': True}}
]
}
}

def test_extended_lang_inlinehilite(self):
"""Test extended language in InlineHilite."""

self.check_markdown(
'''
`#!php-inline $a = array("foo" => 0, "bar" => 1);`
''',
'''
<p><code class="highlight"><span class="nv">$a</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s2">&quot;foo&quot;</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;bar&quot;</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">);</span></code></p>
''', # noqa: E501
True
)

def test_extended_lang_superfences(self):
"""Test extended language in SuperFences."""

self.check_markdown(
'''
```php-inline
$a = array("foo" => 0, "bar" => 1);
```
''',
'''
<div class="highlight"><pre><span></span><code><span class="nv">$a</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s2">&quot;foo&quot;</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;bar&quot;</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">);</span>
</code></pre></div>
''', # noqa: E501
True
)

def test_extended_lang_case(self):
"""Test extended language in SuperFences."""

self.check_markdown(
'''
```PHP-Inline
$a = array("foo" => 0, "bar" => 1);
```
''',
'''
<div class="highlight"><pre><span></span><code><span class="nv">$a</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s2">&quot;foo&quot;</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;bar&quot;</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">);</span>
</code></pre></div>
''', # noqa: E501
True
)

0 comments on commit 57cdb4a

Please sign in to comment.