A structured content file system.
gem install contentfs
Content can be defined in a structure like this:
docs/
api/
application/
content.md
class_api/
new.md
instance_api/
...
guides/
...
Once defined, content can be accessed through ContentFS:
require "contentfs"
database = ContentFS::Database.load("path/to/docs")
database.docs.api.application.renderThe content name is special in that it defines content for the containing folder.
Markdown is supported by default. Simply add the commonmarker gem to your project's Gemfile. For automatic syntax highlighting, add the rouge to your Gemfile as well.
Unknown formats default to plain text.
Metadata can be defined on content through front-matter:
---
option: value
---
...
Metadata can be applied to all content in a folder by defining a _metadata.yml file. The folder's metadata is merged with metadata defined in front-matter, with precedence given to the front-matter metadata values.
Content can be filtered by one or more metadata values:
database.filter(option: "value") do |content|
...
endIterate over content using the all method:
database.content.all do |content|
...
endBoth folders and content can be defined with prefixes, useful for ordering:
docs/
api/
0000__application/
...
Characters up to __ (double underscore) are considered part of the prefix.