Supports turning ipynb python notebooks into the following formats:
- Markdown
This library is in alpha and might not support everything. You can see
the example file which I will make harder over time at spec/fixtures
.
Plans are to support more formats like:
- HTML
- MDX
I wrote this library to make it easier to write blog posts through NextJS using notebook code. Instead of dealing with the delicate javascript build ecosystem I decided to extract it into a more sane ruby gem.
Add this line to your application's Gemfile:
gem 'notebroker'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install notebroker
From your terminal you can run the cli:
notebroker --convert notebooks/my-notebook.ipynb --destination ./
...
Converting notebooks/my-notebook.ipynb into markdown...
Saved markdown file to ./
This is an example of the input and converted markdown file generated:
{
"cells": [
{
"cell_type": "markdown",
"id": "3715d426-5951-4b56-b202-2457e1f7742f",
"metadata": {},
"source": [
"# Test file 1\n",
"\n",
"This is the first line.\n",
"\n",
"This is the end of the first section"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "206fb993-c482-49fa-aa50-95aa25dcff71",
"metadata": {},
"outputs": [],
"source": [
"import code\n",
"\n",
"def a_function(some_parameter):\n",
" return some_parameter\n",
"\n",
"def calculate_something(n):\n",
" '''\n",
" this is a comment\n",
" '''\n",
" \n",
" # This is another comment\n",
" return something"
]
},
{
"cell_type": "markdown",
"id": "b09f90d3-97f1-4ed4-903e-4e62060e35e5",
"metadata": {},
"source": [
"## Subheader: The third cell\n",
"\n",
"A single line in the third cell\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "bea26222-75b8-4cf6-9367-52c94344dd8e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"This is the result of a cell\n",
"----------------------------------------\n",
"Total amount paid will be $251,717.22\n"
]
}
],
"source": [
"print(\"This is the result of a cell\")\n",
"print(\"Total amount paid will be ${:,.2f}\".format(total_amount))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "477b0f9b-5d79-4275-966b-4ef38a6dfc2d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
# Test file 1
This is the first line.
This is the end of the first section
``python
import code
def a_function(some_parameter):
return some_parameter
def calculate_something(n):
'''
this is a comment
'''
# This is another comment
return something
```
## Subheader: The third cell
A single line in the third cell
```python
print("This is the result of a cell")
print("Total amount paid will be ${:,.2f}".format(total_amount))
```
```shell
This is the result of a cell
----------------------------------------
Total amount paid will be $251,717.22
```
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/nolantait/notebroker.
The gem is available as open source under the terms of the MIT License.