Строка 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 + ']'; |
| + | } |
| } | | } |
| | | |