jgm / jgm/commonmark-hs

Add a "Free" renderer implementation of IsBlock/IsInline

Open
#90 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
145
Forks
38
PR merge metrics
No merged PRs in 30d

Description

I've recently embedded this library in my tool to generate my [blog](https://lucasdicioccio.github.io/how-this-blog-works.html) and I find it pretty cool as a user. So first-of all thanks.

Some context, the sort of things I want to do are vanity analytics about my content (much like the article<>topic graph on the homepage).

For such analytics, I realize I will have to run a number of statistics on the _structure_ of the parsed blocks/inlines. Choices I have found so far are either:
- one renderer per 'statistics' (e.g., collect the links so that I can draw a graph between articles, tell which website I link the most etc.)
- one generic data-structure collector that I can then consume and pattern-match on

For the 2nd case, I think I'm about to implement the 'most mundane' implementation: a free implementation of IsBlock/IsInline/HasAttributes with a datatype that has one constructor per typeclass function, and wrapped in a newtyped list to get the Nonoid for free as well.

Do you foresee any issue with this approach? at first glance I think it's definitely approachable. Would you mind a PR adding it to this directory if needed (I've heard ZuriHac 2022 is approaching and it seems like a good project to hack on)?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.