Изменения

Перейти к навигации Перейти к поиску
API
Строка 32: Строка 32:  
     а в JavaScript они не будут иметь эффекта.
 
     а в JavaScript они не будут иметь эффекта.
 
     */
 
     */
var hidden = [];
      
// Скрытие преформатированных тегов и прочих тегов, не подлежащих викификации:
 
// Скрытие преформатированных тегов и прочих тегов, не подлежащих викификации:
Строка 263: Строка 262:  
}
 
}
 
 
 +
var hidden = [];
 +
 
// Скрытие фрагментов путём окружения \x01 и \x02:
 
// Скрытие фрагментов путём окружения \x01 и \x02:
 
function hide (txt, re) {
 
function hide (txt, re) {
Строка 295: Строка 296:  
return s;
 
return s;
 
}
 
}
 +
 +
var external_links = new Set ();
 
function collect_link (_, __, url, alias) {
 
function collect_link (_, __, url, alias) {
 +
external_links.add (url);
 
return '[' + url + ' ' + alias + ']';
 
return '[' + url + ' ' + alias + ']';
 
}
 
}
 +
var resolved = {};
 
function resolve_links (/* String */ s) {
 
function resolve_links (/* String */ s) {
 +
if external_links.size > 0 {
 +
let property = 'URL источника'
 +
let list = Array.from (external_links).join ('||');
 +
let api = new mw.Api ()
 +
api.get ({
 +
action: 'askargs',
 +
conditions: property + '::' + list,
 +
printouts: property,
 +
parameters: 'limit=' + external_links.size,
 +
api_version: 3
 +
}).done (function (data) {
 +
for (const row of data.query.results) {
 +
let page = row.fulltext;
 +
let url = row [page].printouts [property] [0]
 +
resolved [url] = page;
 +
}
 +
})
 +
}
 
return s;
 
return s;
 
}
 
}
 
function internalise_link (_, __, url, alias) {
 
function internalise_link (_, __, url, alias) {
return '[' + url + ' ' + alias + ']';
+
if ( resolved [url] ) {
 +
return '[[' + resolved [url] + (alias ? '|' + alias : '') + ']]'
 +
} else {
 +
return '[' + url + ' ' + alias + ']';
 +
}
 
}
 
}
  

Реклама:

Навигация