/**
* Injects "From Satirist to Serious →" link blocks from satirist-serious-links.json
* into elements marked data-satirist-id on satirist.html.
*/
(function () {
function esc(s) {
const d = document.createElement('div');
d.textContent = s == null ? '' : String(s);
return d.innerHTML;
}
function renderBlock(article) {
const links = (article.serious_links || [])
.map(function (l) {
return '
' + esc(l.label) + '';
})
.join('');
let meta = '';
if (article.signal_score != null) {
meta = 'GMIIE Signal ' + article.signal_score + '/100';
}
if (article.rings && article.rings.length) {
meta += (meta ? ' · ' : '') + article.rings.join(', ') + ' Ring' + (article.rings.length > 1 ? 's' : '');
}
const metaHtml = meta
? '' + esc(meta) + '
'
: '';
return (
'' +
'
From Satirist to Serious →
' +
'
' +
metaHtml +
'
'
);
}
function placeBlock(el, node) {
var fc = el.querySelector('.fact-check-box');
if (fc) {
fc.after(node);
return;
}
var body = el.querySelector('.sc-body');
if (body) {
body.after(node);
return;
}
body = el.querySelector('.article-body');
if (body) {
body.after(node);
return;
}
var humor = el.querySelector('.lc-humor');
if (humor) {
humor.after(node);
return;
}
el.appendChild(node);
}
function injectLinks(data) {
if (!data || !Array.isArray(data.articles)) return;
var map = new Map(data.articles.map(function (a) { return [a.id, a]; }));
document.querySelectorAll('[data-satirist-id]').forEach(function (el) {
var id = el.getAttribute('data-satirist-id');
var article = map.get(id);
if (!article || el.querySelector('.satirist-serious')) return;
var wrap = document.createElement('div');
wrap.innerHTML = renderBlock(article);
placeBlock(el, wrap.firstElementChild);
});
}
fetch('/data/satirist-serious-links.json', { signal: AbortSignal.timeout(5000) })
.then(function (r) { return r.ok ? r.json() : null; })
.then(injectLinks)
.catch(function () {});
})();