Skip to content

spdawson/rails_markdown_templates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RailsMarkdownTemplates

Synopsis

The rails_markdown_templates gem allows the use of Markdown as a Rails template language. A leading metadata block is parsed, and the metadata made available as HTML <meta /> tags via a content_for block with a customisable key. Embedded Ruby may be used in Markdown templates.

Installation

Rails with Bundler

Add the following line to the Gemfile of the application.

gem 'rails_markdown_templates'

Then run

bundle

Manual installation

Run the following command.

gem install rails_markdown_templates

Rails configuration

No configuration is necessary to get started. By default, the keys for the content_for blocks are :metadata_tags and :metadata_json; if you wish to change these, then create a file in the config/initializers directory, containing code such as the following.

# Set the metadata content keys for the Markdown template handler
RailsMarkdownTemplates.metadata_tags_key = :my_metadata_tags
RailsMarkdownTemplates.metadata_json_key = :my_metadata_json

It is also possible to override the set of options that are passed to Redcarpet; for example,

# Tweak options for the Markdown parser
RailsMarkdownTemplates.redcarpet_options = {
  no_intra_emphasis: false,
  disable_indented_code_blocks: false,
  space_after_headers: false,
  highlight: false
}

Embedded Ruby handling

Markdown templates may contain standard erb tags.

Metadata handling

Markdown templates may optionally have a leading YAML metadata block; for example:

---
title: This is the title
description: This is some sort of page
keywords: page, some, sort, whatever
author: Bob Dylan
---

# A document

Here is part of the document; a very meaningful part.

The metadata_tags_key and metadata_tags_json attributes define the names of the content blocks into which metadata will be placed. Metadata can be retrieved in Rails views using yield calls; for example:

<head>
  <!-- Output meta tags -->
  <%= yield :metadata_tags %>

  <!-- Use metadata in JavaScript -->
  <script>
    var metadata = <%= yield :metadata_json %>;
  </script>
</head>

The call to yield the :metadata_tags content block will output HTML <meta /> tags: one for each metadata item present in the original YAML metadata block.

The call to yield the :metadata_json content block will output the metdata as JSON. This will typically be useful as a mechanism by which metadata may be made available to JavaScript.

There is a restriction, however: you cannot yield the metadata content block from within the markdown template in which the metadata is defined.

This is because the ERB tags are evaluated before the template is handed off to the Markdown parser.

License

Copyright 2015 Simon Dawson spdawson@gmail.com

rails_markdown_templates is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

rails_markdown_templates is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with rails_markdown_templates. If not, see http://www.gnu.org/licenses/.

About

Markdown template handling for Rails

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages