Update to support new metadata: title, description, tags and google-analytics (GA) and refactor render publish slide response function

This commit is contained in:
Cheng-Han, Wu 2016-06-21 21:42:03 +08:00
parent ad6982e77e
commit 558304ff62
8 changed files with 160 additions and 44 deletions

View file

@ -5,6 +5,7 @@ var fs = require('fs');
var path = require('path');
var LZString = require('lz-string');
var marked = require('marked');
var metaMarked = require('meta-marked');
var cheerio = require('cheerio');
var shortId = require('shortid');
var Sequelize = require("sequelize");
@ -187,13 +188,24 @@ module.exports = function (sequelize, DataTypes) {
});
},
parseNoteTitle: function (body) {
var $ = cheerio.load(marked(body));
var h1s = $("h1");
var title = "";
if (h1s.length > 0 && h1s.first().text().split('\n').length == 1)
title = h1s.first().text();
else
title = "Untitled";
var meta = null;
try {
var obj = metaMarked(body);
body = obj.markdown;
meta = obj.meta;
} catch (err) {
//na
}
if (meta && meta.title && (typeof meta.title == "string" || typeof meta.title == "number")) {
title = meta.title;
} else {
var $ = cheerio.load(marked(body));
var h1s = $("h1");
if (h1s.length > 0 && h1s.first().text().split('\n').length == 1)
title = h1s.first().text();
}
if (!title) title = "Untitled";
return title;
},
decodeTitle: function (title) {
@ -205,6 +217,20 @@ module.exports = function (sequelize, DataTypes) {
generateWebTitle: function (title) {
title = !title || title == "Untitled" ? "HackMD - Collaborative markdown notes" : title + " - HackMD";
return title;
},
parseMeta: function (meta) {
var _meta = {};
if (meta) {
if (meta.title && (typeof meta.title == "string" || typeof meta.title == "number"))
_meta.title = meta.title;
if (meta.description && (typeof meta.description == "string" || typeof meta.description == "number"))
_meta.description = meta.description;
if (meta.robots && (typeof meta.robots == "string" || typeof meta.robots == "number"))
_meta.robots = meta.robots;
if (meta.GA && (typeof meta.GA == "string" || typeof meta.GA == "number"))
_meta.GA = meta.GA;
}
return _meta;
}
},
hooks: {