How to convert Markdown into Org-Mode
* How to convert Markdown into Org-Mode I have migrated this blog multiple times and is hard to describe how many problems I solve hover and hover.
Just to give you some background of these migrations I started from a WordPress that I run in a simple DigitalOcean Droplet. It became too sluggish and somehow didn't feel to leave my editor for writing an Article. So I move everything to files, because in the end who need a database just for few articles.
But here I am with a bunch of Markdown and an Emacs, which I play setup with Nuxt.
But wait for a second, Emacs as Org-mode which already use for a bunch of stuff, and yes why not just move the entire website and note-taking into Org-mode? I could build live demos, components, research papers all from one side and don't leave my editor.
But enough background, let's move into the meet greedy stuff, I'm here with a bunch of markdowns; but I want them to be org-mode now.
So first of all I create use pandoc to do the conversion for me
pandoc -i ${file_from} -f markdown -t org -o ${file_to}
That would allow us to convert the file from markdown to org-mode, but since
I've been doing a bit of magic with the help of frontmatter (eg: render my cv)
I need to have a way that allows bringing that information back to the org-mode file.
For that purpose, I would just use the frontmatter package in npm.
In the beginning, I try to use the only cli but I stumble in a couple of issues
- I couldn't imagine that
sedwas so hard with multiline. - I initially try to find a package that is
cli-ready, I ended withyaml-front-matterwhich look ideal to run withnpx. I finally realize that they provide the content on the root level, with the option to change it I soon realize that this was not suitable for me, I prefer the way thatfrontmatterdoes so{ data: TheYaml, content: "The Markdown" }
So I will just continue with frontmatteer.
npm install -S frontmatter
To give you an idea of the data structure that I want to use the bellow is an example:
What I want to do is a script that grabs the stdin of a markdown and returns an org file.
During my migration, I only care about a couple of fields, more specifically the create, title.
With those fields, I want to add them in my org-mode file so that I can query my content.
Then we need to make the file executable
chmod +x ../../tangled/convert-md-to-org.js
Then we can call it like this
cat ${file_from} | ../../tangled/convert-md-to-org.js
But let's assume we want to convert a full directory.
shopt -s nullglob;
cd content/articles;
for f in *.md; do
cat f | ../../tangled/convert-md-to-org.js > ../articles-org/"${f%.md}.org";
done
shopt -u nullglob;