-
Notifications
You must be signed in to change notification settings - Fork 8
Add a YAML FrontMatter metadata parser #57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add a YAML FrontMatter metadata parser #57
Conversation
|
@alfredbaudisch so far things are going well I am running into some problems I don't fully understand:
|
|
@rockchalkwushock nice, thanks for starting the pull request!
By the weekend I'll check it out. |
|
@alfredbaudisch I will play with it more tomorrow morning and see if I can get that figured out. I am close there is just something I am missing. |
|
@alfredbaudisch I am curious what you think about this idea, it would require some refactoring to the
- :binary.split(contents, ["\n---\n", "\r\n---\r\n"])
+ :binary.split(contents, ["<!-- -->"])
In making this change we side step the issue of the overlapping patterns with the ElixirMap and the YAML parser (or any future parser. From what I am seeing in the erlang docs for Elixir Map Format (default)%{
author: Turd Ferguson
date: 2021-11-20
title: That's a funny name
}
---
<!-- -->
Post content...YAML Format---
author: Turd Ferguson
date: 2021-11-20
title: That's a funny name
---
<!-- -->
Post content...Joplin Format
That's a funny name
<!-- -->
Post content...
Crude POC# base_parser.ex
# default metadata parser is ElixirMap
do_parse = fn split_contents ->
apply(parser, :parse, [path, split_contents, opts])
end
def parse(path, contents, opts) do
...
case :binary.split(contents, ["<!-- -->"]) do
[_] -> do_parse(contents)
[_, contents] -> do_parse(contents)
[attrs, contents] ->
# process `attrs` with corresponding parser
case do_parse(contents) do
{:ok, frontmatter, body} ->
{:ok, frontmatter, body}
other ->
other
end
end
end |
|
@rockchalkwushock I'm really bad with keeping track of my 10.000 personal projects. I'm very sorry for keeping you waiting on this one. I'll try to come back to it soon. |
|
@alfredbaudisch no worries I have been pretty busy as well. I will circle back this evening and give this another look. Perhaps I can get it over the hump. |
What does this PR do?
yaml.exfor users to use as a metadata parser when they prefer to use YAML syntax for their front matter.Closes #41