I\'m sorry, I know very little of both YAML and PyYAML but I felt in love with the idea of supporting a configuration file written in the same style used by \"Jekyll\" (http
You can accomplish this without any custom parsing by calling yaml.load_all() instead. This will return a generator of which the first item is the expected front matter as a dict, and the second is the rest of the document as a string:
import yaml
with open('some-file-with-front-matter.md') as f:
front_matter, content = list(yaml.load_all(f, Loader=yaml.FullLoader))[:2]
If you just want the front matter it's even simpler:
import yaml
with open('some-file-with-front-matter.md') as f:
front_matter = next(yaml.load_all(f, Loader=yaml.FullLoader))
This works because yaml.load_all() is for loading several YAML documents within the same document, delimited by ---. Also, make sure you take the usual precautions when loading YAML from an unknown source.
EDIT: Updated the code to include a Loader argument which is required now, and updated the documentation link. Also verified the code works even with --- in the content, per comment below.