Accept pandoc-style YAML frontmatter
Pandoc (and some other tools) have decided to end their YAML frontmatter with `...` instead of `---`. In the name of flexibility, this patch allows either to mark the end of YAML frontmatter. Example: ``` --- title: No place like home ... ```
This commit is contained in:
parent
fae0e00f42
commit
6895f30ff3
|
@ -21,6 +21,17 @@ Feature: YAML Front Matter
|
||||||
Then I should see "<?php"
|
Then I should see "<?php"
|
||||||
Then I should not see "---"
|
Then I should not see "---"
|
||||||
|
|
||||||
|
Scenario: Rendering markdown (template-less) (yaml)
|
||||||
|
Given the Server is running at "frontmatter-app"
|
||||||
|
When I go to "/front-matter-pandoc.html"
|
||||||
|
Then I should see ">This is a document</h1>"
|
||||||
|
Then I should see "<p>To be or not to be</p>"
|
||||||
|
Then I should see "The meaning of life is 42"
|
||||||
|
Then I should not see "..."
|
||||||
|
Then I should not see "layout: false"
|
||||||
|
Then I should not see "title: Pandoc likes trailing dots..."
|
||||||
|
|
||||||
|
|
||||||
Scenario: YAML not on first line, no encoding
|
Scenario: YAML not on first line, no encoding
|
||||||
Given the Server is running at "frontmatter-app"
|
Given the Server is running at "frontmatter-app"
|
||||||
When I go to "/front-matter-line-2.html"
|
When I go to "/front-matter-line-2.html"
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
layout: false
|
||||||
|
title: Pandoc likes trailing dots...
|
||||||
|
dotty_string: "..."
|
||||||
|
famous_quote: To be or not to be
|
||||||
|
popular_number: 42
|
||||||
|
...
|
||||||
|
|
||||||
|
# This is a document
|
||||||
|
|
||||||
|
<%= current_page.data.famous_quote %>
|
||||||
|
|
||||||
|
The meaning of life is <%= current_page.data.popular_number %>.
|
|
@ -119,7 +119,7 @@ module Middleman::CoreExtensions
|
||||||
# @param [String] content
|
# @param [String] content
|
||||||
# @return [Array<Hash, String>]
|
# @return [Array<Hash, String>]
|
||||||
def parse_yaml_front_matter(content, full_path)
|
def parse_yaml_front_matter(content, full_path)
|
||||||
yaml_regex = /\A(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
yaml_regex = /\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)/m
|
||||||
if content =~ yaml_regex
|
if content =~ yaml_regex
|
||||||
content = content.sub(yaml_regex, '')
|
content = content.sub(yaml_regex, '')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue