Извините за быстрый и грязный ответ, я хотел бы получить его здесь как можно быстрее. Я очищу его через день или два. (2013-09-26)
После работы над этим я закончил создание помощника Handlebars, который я мог бы использовать в шаблоне index.hbs
. С этим я заканчиваю тем, что ниже приведенный шаблон Handlebars для index.hbs
.
index.hbs
---
title: Home
---
<p>I'm a dude. I live in Stockholm, and most of the time I work with <a href="http://www.gooengine.com/">Goo</a>.</p>
<section>
{{#md-posts 'src/posts/*.*'}}
<article>
<h2>{{title}}</h2>
{{#markdown}}
{{{body}}}
{{/markdown}}
</article>
{{/md-posts}}
</section>
Структура папок
src/
index.hbs
posts/
post-1.hbs
post-2.hbs
post-3.md // <--- Markdown with Handlebars
Gruntfile.coffee
assemble:
options:
flatten: true
layout: 'layouts/default.hbs'
assets: 'public/assets'
helpers: 'src/helpers/helper-*.js'
root: // this is my target
src: 'src/*.hbs' // <--- Only assemble files at source root level
dest: 'public/'
SRC/хелперы/хелперы-MD-posts.js
Этот помощник выражение Глоб, читает файлы, извлекает вводная YAML, компилирует источник тела, и, наконец, добавляет все это к контексту блока рули. Помощник - это несколько неправильных имен, так как на самом деле он не компилирует Markdown ... поэтому приветствуются предложения об именах.
var glob = require('glob');
var fs = require('fs');
var yamlFront = require('yaml-front-matter');
module.exports.register = function(Handlebars, options) {
// Customize this helper
Handlebars.registerHelper('md-posts', function(str, options) {
var files = glob.sync(str);
var out = '';
var context = {};
var data = null;
var template = null;
var _i;
for(_i = 0; _i < files.length; _i++) {
data = yamlFront.loadFront(fs.readFileSync(files[_i]), 'src');
template = Handlebars.compile(data.src); // Compile the source
context = data; // Copy front matter data to Handlebars context
context.body = template(data); // render template
out += options.fn(context);
}
return out;
});
};
Смотреть все в этом репо: https://github.com/marcusstenbeck/marcusstenbeck.github.io/tree/source
эй @Marcus, хорошая работа на помощника и найти решение этой проблемы. Для имени помощника, как насчет 'inline'? так как это технически то, что вы делаете. также если вы хотите сделать запрос на перенос с помощью этого помощника в библиотеку [handlebars-helers] (https://github.com/assemble/handlebars-helpers), я был бы рад объединить его. – jonschlinkert
@jonschlinkert, вы предлагаете переименовать из _md-posts_ в _inline_? Я был бы рад сделать запрос на получение, и это также будет мой первый вклад с открытым исходным кодом. Сегодня хороший день. :) – marcusstenbeck
«переименовать из md-posts в строку» правильно. :-) Мы дружная толпа, я был бы рад помочь, если у вас возникнут вопросы с вашим первым вкладом! – jonschlinkert