mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-23 02:41:50 +03:00
a43ff6f639
no issue - The general "revisit" of of this helper might happen in the future but has nothing critical to do with shipping v3 or dropping v0.1 support
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
// # Excerpt Helper
|
|
// Usage: `{{excerpt}}`, `{{excerpt words="50"}}`, `{{excerpt characters="256"}}`
|
|
//
|
|
// Attempts to remove all HTML from the string, and then shortens the result according to the provided option.
|
|
//
|
|
// Defaults to words="50"
|
|
|
|
var proxy = require('./proxy'),
|
|
_ = require('lodash'),
|
|
SafeString = proxy.SafeString,
|
|
getMetaDataExcerpt = proxy.metaData.getMetaDataExcerpt;
|
|
|
|
/**
|
|
* @NOTE:
|
|
*
|
|
* Content API v2 returns a calculated `post.excerpt` field.
|
|
* See https://github.com/TryGhost/Ghost/issues/10062.
|
|
* We have not touched this helper yet, we will revisit later.
|
|
*/
|
|
module.exports = function excerpt(options) {
|
|
var truncateOptions = (options || {}).hash || {},
|
|
excerptText = this.custom_excerpt
|
|
? String(this.custom_excerpt)
|
|
: this.html
|
|
? String(this.html)
|
|
: '';
|
|
|
|
truncateOptions = _.pick(truncateOptions, ['words', 'characters']);
|
|
_.keys(truncateOptions).map(function (key) {
|
|
truncateOptions[key] = parseInt(truncateOptions[key], 10);
|
|
});
|
|
|
|
if (!_.isEmpty(this.custom_excerpt)) {
|
|
truncateOptions.characters = this.custom_excerpt.length;
|
|
if (truncateOptions.words) {
|
|
delete truncateOptions.words;
|
|
}
|
|
}
|
|
|
|
return new SafeString(
|
|
getMetaDataExcerpt(excerptText, truncateOptions)
|
|
);
|
|
};
|