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=revisions|linkshere&rvprop=content&rvslots=main&lhnamespace=0&lhlimit=max&format=json').then(function(d){
         return apiFetch('/api.php?action=query&pageids='+chunk+'&prop=extracts|linkshere&exchars=8000&explaintext=1&exsectionformat=plain&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 slot=pg.revisions[0].slots?pg.revisions[0].slots.main:pg.revisions[0];
             var c=pg.extract||'';
            var c=slot['*']||slot.content||'';
             c=c.replace(/\s+/g,' ').trim();
             c=c.replace(/\{\{[\s\S]*?\}\}/g,' ')
              .replace(/\[\[File:[^\]]+\]\]/gi,' ')
              .replace(/\[\[(?:[^\]|]+\|)?([^\]]+)\]\]/g,'$1')
              .replace(/<[^>]+>/g,' ')
              .replace(/<\!--[\s\S]*?-->/g,' ')
              .replace(/={2,}[^=]+=={2,}/g,' ')
              .replace(/[|!*#;:]/g,' ')
              .replace(/https?:\/\/\S+/g,' ')
              .replace(/\s+/g,' ').trim();
             map[pid].words=c?c.split(/\s+/).filter(function(w){return w.length>1;}).length:0;
             map[pid].words=c?c.split(/\s+/).filter(function(w){return w.length>1;}).length:0;
           });
           });