front_matter
front_matter.cr
Separates a files front matter from its content. Unlike Jekyll and others this implementation is format agnostic.
Front Matter?
Front matter is metadata you can add to a document. The data is located between a pair of ---
lines at the start of a document. With this parser the format can be any format you would like.
---
The front matter
---
The content
A more practical and complicated example using YAML front matter with Liquid to generate some HTMLc ould look like below.
---
layout: post
title: Blogging Like a Hacker
---
<h1>{{ title }}</h1>
<p>This is the content.</p>
One of the most common, but not the only, uses for front matter is to use this with Liquid (crystal implementation), or a similar templating language.
Installation
Add this to your application's shard.yml
:
dependencies:
front_matter:
github: chris-huxtable/front_matter.cr
Usage
require "front_matter"
To process a file:
FrontMatter.open("/path/to/file") { |front_matter, content_io|
# Do something with the front matter and content.
# Parse the front matter as YAML, JSON or something else?
}
Alternatively you can parse an IO
so long as it supports the #.seek
method
File.open(filename, "r") { |fd|
FrontMatter.parse(fd) { |front_matter, content_io|
# Do something with the front matter and content.
# Parse the front matter as YAML, JSON or something else?
}
}
Contributing
- Fork it ( https://github.com/chris-huxtable/front_matter.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- Chris Huxtable - creator, maintainer