Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bryanp/contentfs
Structured content file system.
https://github.com/bryanp/contentfs
content-management ruby
Last synced: about 1 month ago
JSON representation
Structured content file system.
- Host: GitHub
- URL: https://github.com/bryanp/contentfs
- Owner: bryanp
- License: other
- Created: 2020-11-11T20:07:38.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-11-09T01:10:39.000Z (about 2 years ago)
- Last Synced: 2024-03-15T08:22:49.769Z (8 months ago)
- Topics: content-management, ruby
- Language: Ruby
- Homepage:
- Size: 67.4 KB
- Stars: 4
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# contentfs
A structured content file system.
## Install
```
gem install contentfs
```## Usage
Content can be defined in a structure like this:
```
docs/
api/
application/
content.mdclass_api/
new.md
instance_api/
...
guides/
...
```Once defined, content can be accessed through ContentFS:
```ruby
require "contentfs"database = ContentFS::Database.load("path/to/docs")
database.docs.api.application.render
```The `content` name is special in that it defines content for the containing folder.
### Formats
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
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.
### Filtering
Content can be filtered by one or more metadata values:
```ruby
database.filter(option: "value") do |content|
...
end
```### Iterating
Iterate over content using the `all` method:
```ruby
database.content.all do |content|
...
end
```### Prefixes
Both 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.