function getSections(content) { const renderer = new marked.Renderer(); const sections = []; renderer.heading = (text, level) => { if (level !== 2) { return; } const escapedText = text .trim() .toLowerCase() .replace(/[^\w]+/g, '-'); sections.push({ text, level, escapedText }); }; marked.setOptions({ renderer, }); marked(he.decode(content)); return sections; }
}); return marked(he.decode(content));
function decodeHTMLEntities(str) { if (typeof WEB === "undefined") { // Node const he = require("he"); return he.decode(str); } else { // Nasty browser way const txt = document.createElement("textarea"); txt.innerHTML = str; return txt.value; } }
const fetchFeed = site => { const parserOptions = { attributeNamePrefix: '_', ignoreAttributes: false, attrValueProcessor: a => he.decode(a, { isAttributeValue: true }), tagValueProcessor: a => he.decode(a) } return fetch(site, { timeout: 3000 }) .then(response => response.text()) .then(str => parser.parse(str, parserOptions)) .catch(err => { throw err }) }
function description(repo: string, tag: Tag) { try { const [_, type, raw] = tag.entry.match(contentRegExp); const full = type === "html" ? decode(raw, { strict: true }) : raw; let truncated = (truncateHtml as any)(full, 200, { byWords: true, keepWhitespaces: true, }); if (full.length > truncated.length) { truncated += `<a href="https://github.com/${repo}/releases/tag/${tag.name}">READ MORE</a>`; } return truncated; } catch (e) { return "No description"; } }
function getSections(content) { const renderer = new marked.Renderer(); const sections = []; renderer.heading = (text, level) => { if (level !== 2) { return; } const escapedText = text .trim() .toLowerCase() .replace(/[^\w]+/g, '-'); sections.push({ text, level, escapedText }); }; marked.setOptions({ renderer, }); marked(he.decode(content)); return sections; }
function getSections(content) { const renderer = new marked.Renderer(); const sections = []; renderer.heading = (text, level) => { if (level !== 2) { return; } const escapedText = text .trim() .toLowerCase() .replace(/[^\w]+/g, '-'); sections.push({ text, level, escapedText }); }; marked.setOptions({ renderer, }); marked(he.decode(content)); return sections; }
function getSections(content) { const renderer = new marked.Renderer(); const sections = []; renderer.heading = (text, level) => { if (level !== 2) { return; } const escapedText = text .trim() .toLowerCase() .replace(/[^\w]+/g, '-'); sections.push({ text, level, escapedText }); }; marked.setOptions({ renderer, }); marked(he.decode(content)); return sections; }
function getSections(content) { const renderer = new marked.Renderer(); const sections = []; renderer.heading = (text, level) => { if (level !== 2) { return; } const escapedText = text .trim() .toLowerCase() .replace(/[^\w]+/g, '-'); sections.push({ text, level, escapedText }); }; marked.setOptions({ renderer, }); marked(he.decode(content)); return sections; }
function getSections(content) { const renderer = new marked.Renderer(); const sections = []; renderer.heading = (text, level) => { if (level !== 2) { return; } const escapedText = text .trim() .toLowerCase() .replace(/[^\w]+/g, '-'); sections.push({ text, level, escapedText }); }; marked.setOptions({ renderer, }); marked(he.decode(content)); return sections; }
}); return marked(he.decode(content));
}); return marked(he.decode(content));
}); return marked(he.decode(content));
}); return marked(he.decode(content));
}); return marked(he.decode(content));