How to validate a front matter in markdown file


#1

I have a set of markdown files that use YAML syntax for front matter . on passing these files to my jekyll project to build site , i have a set of html files generated . But if any of these files have improper front matter , they remain as .md files and not converted to html .

Now i need to validate the files for front matter before moving them into jekyll project . how can i achieve this ? is there any API or method to validate the file programmatically ?


#2

Hi there,

First of all Jekyll should fail while executing build or serve commands if any of your pages has invalid front matter (since it must be a valid YAML snippet).

However, if that doesn’t work (for whatever reason), you can try run jekyll with --strict_front_matter switch to request additional scrutiny while generating your pages.

Here is an example how you run jekyll with the switch from command-line:

bundle exec jekyll build --strict_front_matter
or
bundle exec jekyll serve --strict_front_matter

Also, there is an option to enable strict mode by default in your _config.yml, here:

title: "My awesome blog"
url: "https://blog.about.me"
...
# enable strict front matter by default
strict_front_matter: true
...

Here you can find reference of additional switches/configuration flags available in Jekyll: https://jekyllrb.com/docs/configuration/#build-command-options.

Hope that helps!


#3

HI thanks for your reply , but what i need a validator program , which should check each file for front matter before i pass them to the jekyll project .

as my site gets its md files from different sources , i need to validate them for front matter before using them in my project . hope you understand my requirement now .


#4

You can always check your files with tools like remark:


#5

is there any such plugin in c# ?


#6

Sorry, I can’t help but to ask why you aren’t happy with using jekyll as your validator? It will be the only answer you can trust at the end of the day - other components may diverge from Jekyll’s definition of valid front matter and that fact might (or might not) lead to obscure issues.

Anyhow, in C# you can resort to use projects like YamlDotNet, SharpYaml or ParseYaml (for hands-on experience). Also, here is the list of projects on Github you can consider as well: https://github.com/topics/yaml?l=c%23.

Hope it helps.