markdown-textwrap

text wrap markdown documents
git clone git://git.ricketyspace.net/markdown-textwrap.git
Log | Files | Refs

commit ad8fa809c55e2bf2a6bf2e977f6683e90ad7200d
parent 12903a82dc2ee039b0356855657e3f66173b9e92
Author: rsiddharth <s@ricketyspace.net>
Date:   Tue,  2 Jan 2018 00:49:28 +0000

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.

Diffstat:
md_tw.py | 11+++++++++++
tests/data/blexer-def-links.md | 34++++++++++++++++++++++++++++++++++
tests/test_md_tw.py | 17+++++++++++++++++
3 files changed, 62 insertions(+), 0 deletions(-)

diff --git 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 @@ -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]: <http://alice.name/> "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 @@ -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]: <http://alice.name/> "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