Hi - I implemented HTTP Link header parser with nimble_parsec. I know there is ex_link_header but just took it as a chance to use the parser library 
Here is the gist link - any feedback would be welcome!
- As
, is not allowed, I may just split the whole string with , - but not sure I can leverage existing tool to handle optionally escaped string (e.g. Plug.Conn.Utils.params)
- Probably I can switch all
string with ascii_char since only ascii chars are allowed in the value
- Not sure I’m using wrap/unwrap correctly

- I do not want to create another “micro” library. What would be better place to put this? plug, phoenix, standalone package to cover HTTP headers
Okay, now I added LinkParser.parse_naive/1 to just use core modules (e.g. String, Enum, …).
It passes some tests, but it doesn’t implement something - e.g. it allows any chars in the token (compared to NimbleParsec version checks allowed chars)
NimbleParsec can output the compiled module, so users don’t need nimble_parsec as dependency, if that’s the reasoning here.
haha, I already did (initially published to hex @ March 30, 2019):
but it has a generator as well as a parser. The forum showed me this thread as related when I was creating that thread about it 
Another naive example at Tesla.Middleware.DecodeRels:"
src
defp rels(link) do
link
|> String.split(",")
|> Enum.map(&String.trim/1)
|> Enum.map(&rel/1)
|> Enum.into(%{})
end
defp rel(item) do
Regex.run(~r/\A<(.+)>; rel="(.+)"\z/, item, capture: :all_but_first)
|> Enum.reverse()
|> List.to_tuple()
end