if (Meteor.is_client) {
Template.page.nodespec = function (fn) {
var parts = [fn()];
var replaceParts = function(regex, replacementFunc) {
var newParts = [];
_.each(parts, function (part) {
if (typeof part !== 'string') {
newParts.push(part);
return;
}
regex.lastIndex = 0;
var charsTaken = 0;
var matchResult;
while ((matchResult = regex.exec(part))) {
var matchIndex = matchResult.index;
if (matchIndex > charsTaken)
newParts.push(part.substring(charsTaken, matchIndex));
charsTaken = regex.lastIndex;
var replacementParts = replacementFunc(matchResult);
newParts.push.apply(newParts, _.toArray(replacementParts));
}
if (charsTaken < part.length)
newParts.push(part.slice(charsTaken));
});
parts = newParts;
};
parts.unshift(['
']);
parts.push(['
']);
replaceParts(/".*?"/g, function (match) {
return [['', Handlebars._escape(match[0]), '']];
});
replaceParts(/`(.*?)`/g, function (match) {
return [['', Handlebars._escape(match[1]), '']];
});
replaceParts(/[A-Z]{3,}/g, function (match) {
return [['', Handlebars._escape(match[0]), '']];
});
replaceParts(/[a-z]\w*/g, function (match) {
return [['', Handlebars._escape(match[0]), '']];
});
replaceParts(/[\[\]()|.,*?]/g, function (match) {
return [[''], match[0], ['']];
});
replaceParts(/,/g, function (match) {
return [[''], match[0], ['']];
});
replaceParts(/\|/g, function (match) {
return [[''], match[0], ['']];
});
var html = _.map(parts, function (part) {
if (typeof part === "string")
return Handlebars._escape(part);
return part.join('');
}).join('');
return new Handlebars.SafeString(html);
};
Template.page.spacer = function () {
return new Handlebars.SafeString('
');
};
}