Fix and refactor extracting content using metaMarked directly might lead in invalid object

This commit is contained in:
Wu Cheng-Han 2017-01-04 23:57:16 +08:00
parent ac2b100d35
commit c1b5e74cf9
2 changed files with 34 additions and 68 deletions

View file

@ -236,33 +236,17 @@ module.exports = function (sequelize, DataTypes) {
});
},
parseNoteInfo: function (body) {
var meta = null;
try {
var obj = metaMarked(body);
body = obj.markdown;
meta = obj.meta;
} catch (err) {
//na
}
if (!meta) meta = {};
var $ = cheerio.load(md.render(body));
var parsed = Note.extractMeta(body);
var $ = cheerio.load(md.render(parsed.markdown));
return {
title: Note.extractNoteTitle(meta, $),
tags: Note.extractNoteTags(meta, $)
title: Note.extractNoteTitle(parsed.meta, $),
tags: Note.extractNoteTags(parsed.meta, $)
};
},
parseNoteTitle: function (body) {
var meta = null;
try {
var obj = metaMarked(body);
body = obj.markdown;
meta = obj.meta;
} catch (err) {
//na
}
if (!meta) meta = {};
var $ = cheerio.load(md.render(body));
return Note.extractNoteTitle(meta, $);
var parsed = Note.extractMeta(body);
var $ = cheerio.load(md.render(parsed.markdown));
return Note.extractNoteTitle(parsed.meta, $);
},
extractNoteTitle: function (meta, $) {
var title = "";
@ -320,6 +304,19 @@ module.exports = function (sequelize, DataTypes) {
}
return tags;
},
extractMeta: function (content) {
try {
var obj = metaMarked(content);
if (!obj.markdown) obj.markdown = "";
if (!obj.meta) obj.meta = {};
} catch (err) {
var obj = {
markdown: content,
meta: {}
};
}
return obj;
},
parseMeta: function (meta) {
var _meta = {};
if (meta) {