Markdown Code Runner is a tool designed for processing Markdown files with executable code blocks. It automatically executes these blocks and inserts the output into the Markdown file, making it ideal for note-taking and documentation purposes. This tool supports custom inputs, runtime measurement, and caching mechanisms.
- Execute Code Blocks: Automatically runs code within Markdown files and inserts the output.
- Custom Inputs: Supports predefined inputs or inputs from standard I/O.
- Runtime Measurement: Measures and displays runtime statistics for code blocks.
- Cache Control: Allows selective caching of outputs to avoid rerunning code blocks unnecessarily.
Supported Langauges:
C,C++,Python
Markdown Code Runner supports macOS, Linux, and Windows Subsystem for Linux (WSL).
Ensure that you have python3, pip, and g++ installed. If not, follow the instructions below for your platform:
-
Install Homebrew (if you don’t have it):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install
python3andg++:brew install python brew install gcc
-
Install
pip(if not already installed):python3 -m ensurepip --upgrade
-
Update package lists:
sudo apt-get update
-
Install
python3,pip, andg++:sudo apt-get install -y python3 python3-pip g++
-
Update package lists:
sudo apt-get update
-
Install
python3,pip, andg++:sudo apt-get install -y python3 python3-pip g++
After installing the dependencies, install the Markdown Code Runner package via pip:
pip install mdcoderunnerYou may need to specify the paths for python3 and g++ in the configuration:
-
Edit
config.py(located in the package directory) to specify the paths:# config.py PYTHON_LOCATION = 'python3' # Adjust this path if necessary GPP_LOCATION = 'g++' # Adjust this path if necessary
- Replace the paths with the correct locations of
python3andg++on your system. - On macOS and Linux, you can typically find the paths using
which python3andwhich g++.
- Replace the paths with the correct locations of
A code block in Markdown Code Runner consists of three components: code, input, and output.
<codeStart/>
```python
a = input()
print("hello world", a)
```
```input
Siva
```
```output
hello world Siva
```
<codeEnd/>
<codeStart/>: Marks the beginning of a code block.<codeEnd/>: Marks the end of a code block.
To skip a code block during execution, add the skip class:
<codeStart class="skip"/>
...
<codeEnd/>
To force a code block to rerun every time without caching the output, use the nocache class:
<codeStart class="nocache"/>
...
<codeEnd/>
To measure runtime statistics for a code block, use the timeit class in conjunction with nocache:
<codeStart class="timeit nocache"/>
...
<codeEnd/>
usage: mdcoderunner.py [-h] [--clear-outputs] [--create-code-tags] [--clear-code-tags] input_path [output_path]
Process a Markdown file with executable code blocks.
positional arguments:
input_path Path to the input Markdown file.
output_path Path to the output Markdown file (optional). If not provided, the input file will be
overwritten.
optional arguments:
-h, --help Show this help message and exit.
--clear-outputs Clear all code outputs in the Markdown file.
--create-code-tags Wrap code blocks in <codeStart/> and <codeEnd/> tags.
--clear-code-tags Remove <codeStart/> and <codeEnd/> tags from code blocks.To process a Markdown file, run the following commands:
mdcoderunner ./assets/hello_world.md ./assets/hello_world_rendered.mdmdcoderunner ./assets/demo.md ./assets/demo_rendered.mdMarkdown Code Runner was developed as a tool for preparing for technical interviews, particularly for learning Data Structures and Algorithms (DSA). The goal was to create a lightweight, non-interactive alternative to Jupyter notebooks, enabling seamless note-taking and code execution within Markdown files. This project was built in a single day of focused development. This project supports C, C++ and Python code execution from the same markdown file!
This project is licensed under the MIT License. See the LICENSE file for details.


