function doSomethingWithText( wikitext ) {
var divContainer = document.createElement("div");
var resultString='';
regexp=/\{\{[С|с]татья проекта .*?\}\}/g;
while ((templateString = regexp.exec(wikitext)) !== null) {
reProjName=/\{\{[С|с]татья проекта ([А-Яа-яA-Za-z\d\s\-]*)/g;
projectName=reProjName.exec(templateString[0]);
reProjLevel=/уровень=([А-Яа-яA-Za-z\d]*)/g;
if ((projectLevel=reProjLevel.exec(templateString[0])) !== null) formLevel=formatAssessment(projectLevel[1]);
else formLevel='не определен';
catName=formatCatName(projectName[1], formLevel);
resultString+='<div><small>Статья проекта <a href="'+mw.config.get('wgServer')+'/wiki/Проект:'+projectName[1]+'">'+projectName[1]+'</a>; Уровень: '+formLevel+'; <a href="'+mw.config.get('wgServer')+'/wiki/Категория:'+catName+'">категория</a></small></div>';
}
resultString+='<div><small><a href="'+mw.config.get('wgServer')+'/w/index.php?title=Обсуждение:'+mw.config.get('wgPageName')+'&action=edit">править СО</a></small></div>';
divContainer.innerHTML = resultString;
document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]);
}
function formatAssessment(str) {
if ((str == '1') ||(str == 'I')) return 'I';
if ((str == '2') ||(str == 'II')) return 'II';
if ((str == '3') ||(str == 'III')) return 'III';
if ((str == '4') ||(str == 'IV')) return 'IV';
if ((str == 'ДС') ||(str == 'дс')) return 'ДС';
if ((str == 'ХС') ||(str == 'хс')) return 'ХС';
if ((str == 'ИС') ||(str == 'ис')) return 'ИС';
if ((str == 'Список') || (str == 'List') || (str == 'список')) return 'Список';
if ((str == 'ИСП') ||(str == 'исп')) return 'ИСП';
return 'не определен';
}
function formatCatName(project, level) {
if (level == 'I') return 'Статьи проекта '+project+' '+level+' уровня';
if (level == 'II') return 'Статьи проекта '+project+' '+level+' уровня';
if (level == 'III') return 'Статьи проекта '+project+' '+level+' уровня';
if (level == 'IV') return 'Статьи проекта '+project+' '+level+' уровня';
if (level == 'не определен') return 'Статьи проекта '+project+' неизвестного уровня';
if (level == 'ДС') return 'Добротные статьи проекта '+project;
if (level == 'ХС') return 'Хорошие статьи проекта '+project;
if (level == 'ИС') return 'Избранные статьи проекта '+project;
if (level == 'Список') return 'Списки проекта '+project;
if (level == 'ИСП') return 'Избранные списки проекта '+project;
return '0';
}
function doSomethingInCaseOfError () {
console.log( 'err' );
}
mw.loader.using('mediawiki.api').then(function () {
return (new mw.Api()).get( {
prop: 'revisions',
rvprop: 'content',
rvlimit: 1,
indexpageids: true,
titles: 'Обсуждение:'+mw.config.get('wgPageName')
} )
.done( function ( data ) {
var q = data.query,
id = q && q.pageids && q.pageids[0],
pg = id && q.pages && q.pages[ id ],
rv = pg && pg.revisions;
if ( rv && rv[0] && rv[0]['*'] ) {
doSomethingWithText( rv[0]['*'] );
}
} )
.fail( doSomethingInCaseOfError );
});