import os import pytest from io import StringIO from eorg.parser import Token from eorg.parser import parse from eorg.parser import parse_text def test_emphasis(): text = "parse emphasis *bold text* _underlined text_ /italic text/ normal text" expected = [ Token(token="TEXT", value="parse emphasis "), Token(token="B", value="bold text"), Token(token="TEXT", value=" "), Token(token="U", value="underlined text"), Token(token="TEXT", value=" "), Token(token="I", value="italic text"), Token("TEXT", " normal text"), ] result = parse_text(text) assert result[0].token == "TEXT" assert expected[0].value == result[0].value assert result[1].token == "B" assert expected[1].value == result[1].value assert result[2].token == "TEXT" assert expected[2].value == result[2].value assert result[3].token == "U" assert expected[3].value == result[3].value assert result[4].token == "TEXT" assert expected[4].value == result[4].value assert result[5].token == "I" assert expected[5].value == result[5].value assert result[6].token == "TEXT" assert expected[6].value == result[6].value def test_image(): text = "parse image [[../../test.jpg][test]] after image" expected = [ Token("TEXT", "parse image "), Token("IMG", ["../../test.jpg", "test"]), Token("TEXT", " after image"), ] result = parse_text(text) assert result[0].value == expected[0].value assert result[1].value == expected[1].value assert result[2].value == expected[2].value def test_link(): text = "parse link [[../../test.html][test]] after link" expected = [ Token("TEXT", "parse link "), Token("IMG", ["../../test.html", "test"]), Token("TEXT", " after link"), ] result = parse_text(text) assert result[0].value == expected[0].value assert result[1].value == expected[1].value assert result[2].value == expected[2].value def test_example(): text = StringIO( """ #+BEGIN_EXAMPLE *I'm bold text* /I'm italic text/ _I'm underlined text_ #+END_EXAMPLE""" ) expected = [ Token("BREAK", ""), Token( "EXAMPLE", """*I'm bold text* /I'm italic text/ _I'm underlined text_ """, ), ] result = parse(text).doc assert result[0].value == expected[0].value assert result[1].value == expected[1].value def test_src_block(): text = StringIO( """ #+BEGIN_SRC sh :results output drawer head -n 5 examples/html-plain/example.py #+END_SRC""" ) expected = [ Token("BREAK", ""), Token("SRC", """head -n 5 examples/html-plain/example.py\n"""), ] result = parse(text).doc print(result) assert result[0].value == expected[0].value assert result[1].attrs.get('language') == 'sh' assert result[1].value == expected[1].value