How to extend Earmark

I’d like to extend Earmark to transform #hashtag into

<a href="/some/internal/route">hashtag</a>

Hashtags should only be transformed if they are inside of a string node, so I need to inspect the AST.

I’ve been looking through the Earmark docs and I don’t see a clear way to do this. I don’t think I can use map_ast as it says a string node must return a string.

I’ve found one example of something similar here:

https://github.com/almightycouch/gitgud/blob/cfc8f4652ebb62d9762010bd0a139c97cb59ebde/apps/gitgud_web/lib/gitgud_web/views/helpers/markdown.ex

It looks like they using Enum.map on the ast, but I don’t fully understand the transform_ast_node_text function, particularly the bits that pattern match on binary data. I hope I can do something simpler.

Any help is appreciated, thanks!