const toText = require('html-to-text') const marked = require('marked') module.exports = extractSummary function extractSummary (content, ext) { if (ext[0] === '.') ext = ext.slice(1) if (ext === 'md') { content = marked(content) ext = 'html' } var text = ext === 'html' ? toText.fromString(content, {ignoreHref: true, ignoreImage: true, wordwrap: 99999}) : content var summary = '' var chars = text.split('') for (var i = 0; i < chars.length; i++) { var ch = chars[i] summary += ch if (ch === '\n' && chars[i + 1] === '\n' && summary.length > 300) { // paragraph break } if (ch === ' ' && summary.length >= 450) { // word break break } if (summary.length > 500) { // hard limit summary = summary.slice(0, 450) break } } // remove header lines summary = summary .split('\n') .filter(line => line !== line.toUpperCase()) .join('\n') .trim() return summary }