Sha256: 406fa1ab22b3f4e4e4c0693695df350535f511eaa88ecb194791ffd64c5efc34

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

# Decant

[![Ruby](https://github.com/benpickles/decant/actions/workflows/main.yml/badge.svg)](https://github.com/benpickles/decant/actions/workflows/main.yml)

A frontmatter-aware wrapper around a directory of static content.

## Installation

Add Decant to your application's Gemfile and run `bundle install`.

```ruby
gem 'decant'
```

## Usage

Define a Decant class pointing to a directory of files and add your own methods.

```ruby
Page = Decant.define(dir: '_pages', ext: 'md') do
  # Declare frontmatter convenience readers.
  frontmatter :title

  # Add custom methods - it's a standard Ruby class.
  def shouty
    "#{title.upcase}!!!"
  end
end
```

Given a file `_pages/about.md` with the following contents:

```markdown
---
title: About
stuff: nonsense
---
# About

More words.
```

You can fetch a `Page` instance by `.find`ing it by its extension-less path within the directory.

```ruby
about = Page.find('about')
about.content     # => "# About\n\nMore words.\n"
about.frontmatter # => {:title=>"About", :stuff=>"nonsense"}
about.title       # => "About"
about.shouty      # => "ABOUT!!!"
```

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/benpickles/decant. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/benpickles/decant/blob/main/CODE_OF_CONDUCT.md).

## License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

## Code of Conduct

Everyone interacting in the Decant project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/benpickles/decant/blob/main/CODE_OF_CONDUCT.md).

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decant-0.2.0 README.md