Изменения

internalise
Строка 48: Строка 48:  
s = r (s, /<\s*a\s+href\s*=\s*(["'])\s*https?:\/\/in(?:formatorium)?\.wiki(?:\/wiki)?\/(\S+?)\s*\1\s*>(.+?)<\s*\/a\s*>/gi, wikifyInternalLinks);
 
s = r (s, /<\s*a\s+href\s*=\s*(["'])\s*https?:\/\/in(?:formatorium)?\.wiki(?:\/wiki)?\/(\S+?)\s*\1\s*>(.+?)<\s*\/a\s*>/gi, wikifyInternalLinks);
 
// -- внутренние <a> → [[]);
 
// -- внутренние <a> → [[]);
s = r (s, /<\s*a\s+href\s*=\s*(["'])(\S+?)\1\s*>(.+?)<\s*\/a\s*>/gi, '[$2 $3]'); // -- <a> → [);
+
s = r (s, /<\s*a\s+href\s*=\s*(["'])(\S+?)\1\s*>(.+?)<\s*\/a\s*>/gi, '[$2 $3]'); // <a> → [);
s = r (s, /\[\s*(https?:\/\/[^\]\s]+)\s*([^\]]*)\]/gi, collect_link); // — замена внешних ссылок на загруженные документы.
+
s = r (s, /\[\s*(https?:\/\/[^\]\s]+)\s*([^\]]*)\]/gi, collect_link); // — сбор внешних ссылок для последующей замены внутренними.
+
s = resolve_links (s); // — массовая интернализация ссылок. Выполняется только в Lua.
// Интернализация ссылок. Выполняется только в Lua.
+
s = r (s, /\[\s*(https?:\/\/[^\]\s]+)\s*([^\]]*)\]/gi, internalise_link); // — замена внешних ссылок на загруженные документы.
s = internalise_links (s);
   
 
 
 
 
s = hide (s, /(?:https?|ftp|news|nntp|telnet|irc|gopher|magnet):\/\/[^\s\[\]<>"]+ ?/gi); // — гиперссылки.
 
s = hide (s, /(?:https?|ftp|news|nntp|telnet|irc|gopher|magnet):\/\/[^\s\[\]<>"]+ ?/gi); // — гиперссылки.
Строка 299: Строка 298:  
return '[' + url + ' ' + alias + ']';
 
return '[' + url + ' ' + alias + ']';
 
}
 
}
function internalise_links (_, __, url, alias) {
+
function resolve_links (/* String */ s) {
 +
return s;
 +
}
 +
function internalise_link (_, __, url, alias) {
 
return '[' + url + ' ' + alias + ']';
 
return '[' + url + ' ' + alias + ']';
 
}
 
}
      
// Превращение ссылок HTML на «Традицию» в викиссылки:
 
// Превращение ссылок HTML на «Традицию» в викиссылки: