33 lines
741 B
JavaScript
33 lines
741 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const defaults = require('./defaults');
|
||
|
|
||
|
module.exports = function(file, options) {
|
||
|
const opts = defaults(options);
|
||
|
|
||
|
if (file.data == null) {
|
||
|
file.data = {};
|
||
|
}
|
||
|
|
||
|
if (typeof opts.excerpt === 'function') {
|
||
|
return opts.excerpt(file, opts);
|
||
|
}
|
||
|
|
||
|
const sep = file.data.excerpt_separator || opts.excerpt_separator;
|
||
|
if (sep == null && (opts.excerpt === false || opts.excerpt == null)) {
|
||
|
return file;
|
||
|
}
|
||
|
|
||
|
const delimiter = typeof opts.excerpt === 'string'
|
||
|
? opts.excerpt
|
||
|
: (sep || opts.delimiters[0]);
|
||
|
|
||
|
// if enabled, get the excerpt defined after front-matter
|
||
|
const idx = file.content.indexOf(delimiter);
|
||
|
if (idx !== -1) {
|
||
|
file.excerpt = file.content.slice(0, idx);
|
||
|
}
|
||
|
|
||
|
return file;
|
||
|
};
|