From d579fecfacaced3f180279a5016f268b6f985794 Mon Sep 17 00:00:00 2001 From: Ville Immonen Date: Wed, 20 Jan 2016 17:35:00 +0200 Subject: [PATCH] Add support for HTML frontmatter Load metadata for HTML files from a frontmatter embedded in HTML comments. --- lib/isomorphic/wrappers/html.jsx | 8 +++++--- lib/utils/glob-pages.coffee | 5 ++++- package.json | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/isomorphic/wrappers/html.jsx b/lib/isomorphic/wrappers/html.jsx index e368359ac61ef..6883a9e9a90e4 100644 --- a/lib/isomorphic/wrappers/html.jsx +++ b/lib/isomorphic/wrappers/html.jsx @@ -3,14 +3,16 @@ import React, {PropTypes} from 'react' module.exports = React.createClass({ propTypes: { page: PropTypes.shape({ - data: PropTypes.string, + data: PropTypes.shape({ + body: PropTypes.string.isRequired, + }), }), }, render: function () { - const html = this.props.page.data + const html = this.props.page.data.body return ( -
+
) }, }) diff --git a/lib/utils/glob-pages.coffee b/lib/utils/glob-pages.coffee index ad74ac9c6c707..259b608b8cbc0 100644 --- a/lib/utils/glob-pages.coffee +++ b/lib/utils/glob-pages.coffee @@ -3,6 +3,7 @@ path = require 'path' parsePath = require 'parse-filepath' fs = require 'fs' frontMatter = require 'front-matter' +htmlFrontMatter = require 'html-frontmatter' _ = require 'underscore' toml = require('toml') debug = require('debug')('gatsby:glob') @@ -39,7 +40,9 @@ module.exports = (directory, callback) -> data = _.extend {}, rawData.attributes pageData.data = data else if ext is "html" - pageData.data = fs.readFileSync(page, 'utf-8') + html = fs.readFileSync(page, 'utf-8') + data = _.extend({}, htmlFrontMatter(html), { body: html }) + pageData.data = data else data = {} diff --git a/package.json b/package.json index a645a7349d5c5..40746a7a04335 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "glob": "^5.0.7", "hapi": "^8.5.1", "highlight.js": "^8.6.0", + "html-frontmatter": "^1.5.1", "json-loader": "^0.5.2", "less": "^2.5.1", "less-loader": "^2.2.0",