From ad8fa809c55e2bf2a6bf2e977f6683e90ad7200d Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Tue, 2 Jan 2018 00:49:28 +0000 Subject: md_tw.py: Add TWBlockLexer.parse_def_links. * md_tw.py (TWBlockLexer.parse_def_links): New method. * tests/test_md_tw.py (TestTWBlockLexer.test_parse_def_links): New test. * tests/data/blexer-def-links.md: New file. --- md_tw.py | 11 +++++++++++ tests/data/blexer-def-links.md | 34 ++++++++++++++++++++++++++++++++++ tests/test_md_tw.py | 17 +++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 tests/data/blexer-def-links.md diff --git a/md_tw.py b/md_tw.py index 19b5b30..7f9b578 100644 --- a/md_tw.py +++ b/md_tw.py @@ -148,6 +148,17 @@ class TWBlockLexer(mistune.BlockLexer): 'spaces': len(quote) }) + def parse_def_links(self, m): + key = self._keyify(m.group(1)) + self.def_links[key] = { + 'link': m.group(2), + 'title': m.group(3), + } + self.tokens.append({ + 'type': 'def_links', + 'text': m.group(0) + }) + class TWInlineLexer(mistune.InlineLexer): """Text Wrap Inline level lexer for inline gramars.""" diff --git a/tests/data/blexer-def-links.md b/tests/data/blexer-def-links.md new file mode 100644 index 0000000..c09e417 --- /dev/null +++ b/tests/data/blexer-def-links.md @@ -0,0 +1,34 @@ +This is [an example](http://example.com/ "Title") inline link. + +[This link](http://example.net/) has no title attribute. + +See my [About](/about/) page for details. + +This is [Bob][bob]'s web space. + +This is [Alice][alice]'s web space. + +[bob]: http://bob.name/ "Bob's home" +[alice]: "Alice's home" + +Some foo[bar]. + +[bar]: http://bar.beer/ "Foo Bar Beer" + +Visit [GNU.org][]. + +[GNU.org]: http://gnu.org + +John Gruber gets 10 times more traffic from [Google][1] than from +[Yahoo][2] or [MSN][3]. + + [1]: http://google.com/ "Google" + [2]: http://search.yahoo.com/ "Yahoo Search" + [3]: http://search.msn.com/ "MSN Search" + +John Gruber gets 10 times more traffic from [Google][] than from +[Yahoo][] or [MSN][]. + + [google]: http://google.com/ "Google" + [yahoo]: http://search.yahoo.com/ "Yahoo Search" + [msn]: http://search.msn.com/ "MSN Search" diff --git a/tests/test_md_tw.py b/tests/test_md_tw.py index 4b78dcd..467caaf 100644 --- a/tests/test_md_tw.py +++ b/tests/test_md_tw.py @@ -463,6 +463,23 @@ class TestTWBlockLexer(object): } tokens = process(tokens) + def test_parse_def_links(self): + tokens = self._parse('blexer-def-links.md') + + expected_dls = [ + '[bob]: http://bob.name/ "Bob\'s home"\n', + '[alice]: "Alice\'s home"\n\n', + '[bar]: http://bar.beer/ "Foo Bar Beer"\n\n', + '[GNU.org]: http://gnu.org\n\n', + ' [1]: http://google.com/ "Google"\n', + ' [2]: http://search.yahoo.com/ "Yahoo Search"\n', + ' [3]: http://search.msn.com/ "MSN Search"\n\n', + ' [google]: http://google.com/ "Google"\n', + ' [yahoo]: http://search.yahoo.com/ "Yahoo Search"\n', + ' [msn]: http://search.msn.com/ "MSN Search"', + ] + self._validate(tokens, 'def_links', expected_dls) + def teardown(self): pass -- cgit v1.2.3