Today is my first day at @supabase.com
I'm thrilled to be joining the Realtime team with very talented people.
Supabase's vision and strong belief in Open Source and Developer Experience make them unique. Exciting times ahead, let's go.
#MyElixirStatus
Posts by Leandro Pereira
MDEx v0.12 is out with a new `:sourcepos` field exposing the starting and ending positions (line:column) of all nodes in the tree.
github.com/leandrocp/md...
#MyElixirStatus
What you get with a single command:
- GitHub and GitLab Flavored Markdown
- Syntax Highlighting with light/dark themes (a lot of languages and themes)
- HEEx components
And much more...
I just published a small adapter for NimblePublisher to get a site or blog up and running quickly with MDEx and Lumis.
Check it out! github.com/leandrocp/ni...
#MyElixirStatus
Proud to be doing my part contributing to the @elixir-lang.org ecosystem. My libs and contributions just crossed 1 million downloads! Working to hit the next milestone.
#MyElixirStatus
MDEx v0.11.6 was pretty much a contribution-only release and the community is growing!
The syntax highlighter is managed by lumis.sh - a mix of tree-sitter and neovim themes for those curious about it.
Thanks for the coverage!
#MyElixirStatus
Also some fixes in the syntax highlighter and the streaming parser to recognize more patterns and make it more reliable.
Fixes by Andrew Stewart and Neil Berkman.
Added a new option `:codefence_renderers` by Neil Berkman to customize codefences (those blocks afer ```) which enables a whole new world for plugins!
Check it out -> hexdocs.pm/mdex/codefen...
MDEx v0.11.6 is out! github.com/leandrocp/md...
Added a new `:codefence_renderers` option and also some important fixes.
#MyElixirStatus
MDEx v0.11.1 is out 🔥
- Sigil docs fix by Ievgen Pyrogov
- Optional rustler dep by @halostatue.ca
- Accept :plugins opt by Sonny Scroggin
- HEEx guide hexdocs.pm/mdex/heex.html
- New to_heex/2 function
And more: github.com/leandrocp/md...
Thanks to all contributors!
#MyElixirStatus
I'm introducing a Sponsors section (github.com/leandrocp/md...) so if you or your company has been using MDEx, please consider sponsoring the project to help me ship new features, that would be MUCH appreciated 😀
2) Syntax Highlighter with Light/Dark themes
hexdocs.pm/mdex/light_d...
) Initial support for Phoenix Components
Yep, LiveView and Markdown working together.
hexdocs.pm/mdex/phoenix...
MDEx v0.11 is out celebrating 500k downloads with a new website mdelixir.dev - thanks y'all for the support!
Some exciting new features in this version. See below 👀
#MyElixirStatus
Spread the word! Btw working on that feature to release in the next few days 👀
Hey Brian, attribution was present until v0.6.x (May/June I believe). I only removed it because I wasn't sure about using DockYard trademarks, but I'd gladly add it back again with your approval.
Soon in MDEx ➡️ Phoenix Components!
Yes, MDEx will support embedding HEEx templates inside Markdown. Components and Elixir empressions.
hex.pm/packages/mdex
#MyElixirStatus
I'm glad it's useful. Enjoy!
All the MDEx.Document handling is done in Elixir including buffering and completing markdown chunks (using nimble_parsec). On the Rust side it "only" does parsing and rendering via crates.io/crates/comrak (an amazing project btw).
Exactly, it's not event based. MDEx doesn't care how or how often you push chunks into the Document. So you can keep a Document in a LiveView and keep pushing into it and render when needed. There's an example here github.com/leandrocp/md...
It can afford to re-render as many times as needed because it's very efficient, although I'm expecting to gather some feedback and adjust if needed. One of the reasons this is considered experimental yet.
This approach is similar to streamdown.ai but using nimble_parsec. A more optimized approach would require rewriting the parser from scratch like github.com/thetarnav/st... is doing but that's not on my plans.
Fragments are buffered until a render or parser is requested (when `MDEx.to_html` or `Document.run` or others are called). At this moment the buffer tail is completed if needed (**text -> **text**) then appended to the rest of the document and re-rendered (that's where Rustler is called). 1/n
4. `MDEx.Pipe` is gone. Now all operations are centralized into `MDEx.Document`. Yes that's a **breaking** change but it's worth it.
Pipelines are as simple as adding steps into the document:
3. The Document struct is now displayed in a tree format for better visualization with each node indexed:
Here's a short demo of Markdown streaming in MDEx 👀
Note it's still experimental and disabled by default.
2. Streaming! Now it does complete and render incomplete chunks of Markdown for you:
hexdocs.pm/mdex/MDEx.Do...
Thanks to @jskalc.bsky.social we now support converting Markdown to quilljs.com/docs/delta
New MDEx (Markdown for Elixir) version is 🔥
👇