MediaWiki:Common.js: Difference between revisions
No edit summary |
No edit summary |
||
| Line 511: | Line 511: | ||
if(i>=ids.length) return Promise.resolve(); | if(i>=ids.length) return Promise.resolve(); | ||
var chunk=ids.slice(i,i+8).join('|'); | var chunk=ids.slice(i,i+8).join('|'); | ||
return apiFetch('/api.php?action=query&pageids='+chunk+'&prop= | return apiFetch('/api.php?action=query&pageids='+chunk+'&prop=revisions|linkshere&rvprop=content&rvslots=main&lhnamespace=0&lhlimit=max&format=json').then(function(d){ | ||
if(!d||!d.query||!d.query.pages){return fetchContentChunk(i+8);} | if(!d||!d.query||!d.query.pages){return fetchContentChunk(i+8);} | ||
Object.keys(d.query.pages).forEach(function(pid){ | Object.keys(d.query.pages).forEach(function(pid){ | ||
| Line 517: | Line 517: | ||
map[pid].links=(pg.linkshere||[]).length; | map[pid].links=(pg.linkshere||[]).length; | ||
if(!pg.revisions||!pg.revisions[0])return; | if(!pg.revisions||!pg.revisions[0])return; | ||
var c= | if(!pg.revisions||!pg.revisions[0])return; | ||
var slot=pg.revisions[0].slots?pg.revisions[0].slots.main:pg.revisions[0]; | |||
var raw=slot['*']||slot.content||''; | |||
// Remove template names but keep parameter text | |||
var c=raw.replace(/\{\{[A-Za-z][^|\}]*\|?/g,'').replace(/\}\}/g,' '); | |||
c=c.replace(/\[\[File:[^\]]+\]\]/gi,' '); | |||
c=c.replace(/\[\[(?:[^\]|]+\|)?([^\]]+)\]\]/g,'$1'); | |||
c=c.replace(/<[^>]+>/g,' ').replace(/<!--[^>]*-->/g,' '); | |||
c=c.replace(/={2,}[^=]+=={2,}/g,' '); | |||
c=c.replace(/[|!=*#;:{}\/\[\]]/g,' '); | |||
c=c.replace(/\s+/g,' ').trim(); | c=c.replace(/\s+/g,' ').trim(); | ||
map[pid].words=c?c.split(/\s+/).filter(function(w){return w.length> | map[pid].words=c?c.split(/\s+/).filter(function(w){return w.length>2;}).length:0; | ||
}); | }); | ||
return fetchContentChunk(i+8); | return fetchContentChunk(i+8); | ||