Extract code blocks from Markdown.
This is exdown, a tool for extracting code blocks from Markdown files. This can be used for testing code in your README files.
Install with
pip install exdown
and use as
import exdown
import pytest
@pytest.mark.parametrize("string, lineno", exdown.extract("README.md"))
def test_readme(string, lineno):
exec(string)
or more fancy as
import exdown
import pytest
@pytest.mark.parametrize("string, lineno", exdown.extract("README.md"))
def test_readme(string, lineno):
try:
# https://stackoverflow.com/a/62851176/353337
exec(string, {"__MODULE__": "__main__"})
except Exception:
print(f"README.md (line {lineno}):\n```\n{string}```")
raise
to get better error messages.
If you don't want all code blocks to be extracted, you can filter by syntax
exdown.extract("README.md", syntax_filter="python")
or prefix your code block in the Markdown file with an exdown-skip
comment
Lorem ipsum
<!--exdown-skip-->
```python
foo + bar # not working
```
dolor sit amet.
To run the unit tests, check out this repository and type
pytest
exdown is published under the MIT license.