User:Timotheus Canens/acimplnotes.js: Difference between revisions
Appearance
Content deleted Content added
mNo edit summary |
Maintenance: mw:RL/MGU - Updated deprecated module name |
||
(4 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
mw.loader.using( ['mediawiki.util', 'mediawiki.api', 'jquery.ui |
mw.loader.using( ['mediawiki.util', 'mediawiki.api', 'jquery.ui'], function () { |
||
if(mw.config.get('wgPageName').indexOf('Wikipedia:Arbitration/Requests/Case') != -1 && |
if(mw.config.get('wgPageName').indexOf('Wikipedia:Arbitration/Requests/Case') != -1 && |
||
mw.config.get('wgTitle').indexOf('Proposed decision') != -1) { |
mw.config.get('wgTitle').indexOf('Proposed decision') != -1) { |
||
Line 17: | Line 17: | ||
title = res[1]; |
title = res[1]; |
||
} |
} |
||
var number_re = /(\d[\w\.]*)\)/; |
var number_re = /^[^=]*?(\d[\w\.]*)\)/m; |
||
res = number_re.exec(section_text); |
res = number_re.exec(section_text); |
||
var number = ""; |
var number = ""; |
||
Line 37: | Line 37: | ||
var vote_re = /^:#[^:*#].*?\w.*$/mg; |
var vote_re = /^:#[^:*#].*?\w.*$/mg; |
||
cnt = function(arr){ if(arr === null) return 0; else return arr.length; }; |
cnt = function(arr){ if(arr === null) return 0; else return arr.length; }; |
||
var result = { title: title, number:number, |
|||
support: cnt(support_txt.match(vote_re)), |
support: cnt(support_txt.match(vote_re)), |
||
oppose: cnt(oppose_txt.match(vote_re)), |
oppose: cnt(oppose_txt.match(vote_re)), |
||
abstain: cnt(abstain_txt.match(vote_re))}; |
abstain: cnt(abstain_txt.match(vote_re))}; |
||
if(result.title == "Template" && result.support === 0 && result.oppose === 0 && result.abstain === 0) { |
|||
return null; |
|||
} |
|||
return result; |
|||
}; |
}; |
||
ACImplNotes.generate_proposal = function(data){ |
ACImplNotes.generate_proposal = function(data){ |
||
Line 76: | Line 80: | ||
var remedies_pos = page_text.search(remedies_re); |
var remedies_pos = page_text.search(remedies_re); |
||
var enforcement_pos = page_text.search(enforcement_re); |
var enforcement_pos = page_text.search(enforcement_re); |
||
if(principles_pos == -1 || fof_pos == -1 || remedies_pos == -1) { |
if(principles_pos == -1 || fof_pos == -1 || remedies_pos == -1 || enforcement_pos == -1) { |
||
alert('Cannot parse page: make sure that "Proposed principles", "Proposed findings of fact", "Proposed remedies", and "Proposed enforcement" sections are all present on the page'); |
|||
alert("Cannot parse page"); |
|||
return ""; |
return ""; |
||
} |
} |
Latest revision as of 02:11, 1 November 2019
mw.loader.using( ['mediawiki.util', 'mediawiki.api', 'jquery.ui'], function () {
if(mw.config.get('wgPageName').indexOf('Wikipedia:Arbitration/Requests/Case') != -1 &&
mw.config.get('wgTitle').indexOf('Proposed decision') != -1) {
$(document).ready( function () {
mw.util.addPortletLink( 'p-cactions', '#', 'ACImplNotes', 'ca-makeACNotes', 'Generate notes' );
} );
ACImplNotes = {};
ACImplNotes.parse_item = function(section_text){
// locate title
var section_header_re = /^={3,}\s*([^=]*)?\s*={3,}$/m;
var res = section_header_re.exec(section_text);
var title = "";
if(res === null){
return null;
}
else {
title = res[1];
}
var number_re = /^[^=]*?(\d[\w\.]*)\)/m;
res = number_re.exec(section_text);
var number = "";
if(res === null){
return null;
}
else {
number = res[1];
}
var support_loc = section_text.indexOf('Support:');
var oppose_loc = section_text.indexOf('Oppose:');
var abstain_loc = section_text.indexOf('Abstain:');
if(support_loc == -1 || oppose_loc == -1 || abstain_loc == -1){
return null;
}
var support_txt = section_text.substring(support_loc, oppose_loc);
var oppose_txt = section_text.substring(oppose_loc, abstain_loc);
var abstain_txt = section_text.substring(abstain_loc);
var vote_re = /^:#[^:*#].*?\w.*$/mg;
cnt = function(arr){ if(arr === null) return 0; else return arr.length; };
var result = { title: title, number:number,
support: cnt(support_txt.match(vote_re)),
oppose: cnt(oppose_txt.match(vote_re)),
abstain: cnt(abstain_txt.match(vote_re))};
if(result.title == "Template" && result.support === 0 && result.oppose === 0 && result.abstain === 0) {
return null;
}
return result;
};
ACImplNotes.generate_proposal = function(data){
if(data === null) return "";
return "{" + "{ACImplNotes/Proposal |name= " + data.title +
"|number= " + data.number +
"|support= " + data.support +
"|oppose= " + data.oppose +
"|abstain= " + data.abstain +
"|notes= }}\n";
};
ACImplNotes.parse_sections = function(sections_txt){
var section_header_re = /^={3,}\s*([^=]*)?\s*={3,}$/mg;
var ret = "";
var parse_result = section_header_re.exec(sections_txt);
if(parse_result === null){
alert("Can't find section headers.");
return "";
}
var first_pos = parse_result.index;
while((parse_result = section_header_re.exec(sections_txt)) !== null){
ret += ACImplNotes.generate_proposal(ACImplNotes.parse_item(sections_txt.substring(first_pos, parse_result.index)));
first_pos = parse_result.index;
}
ret += ACImplNotes.generate_proposal(ACImplNotes.parse_item(sections_txt.substring(first_pos)));
return ret;
};
ACImplNotes.do_generate = function(page_text){
var principles_re = /=\s*Proposed principles\s*=/;
var fof_re = /=\s*Proposed findings of fact\s*=/;
var remedies_re = /=\s*Proposed remedies\s*=/;
var enforcement_re = /=\s*Proposed enforcement\s*=/;
var principles_pos = page_text.search(principles_re);
var fof_pos = page_text.search(fof_re);
var remedies_pos = page_text.search(remedies_re);
var enforcement_pos = page_text.search(enforcement_re);
if(principles_pos == -1 || fof_pos == -1 || remedies_pos == -1 || enforcement_pos == -1) {
alert('Cannot parse page: make sure that "Proposed principles", "Proposed findings of fact", "Proposed remedies", and "Proposed enforcement" sections are all present on the page');
return "";
}
var result = "{" + "{ACImplNotes\n|updated= ~~" + "~~\n|principles=\n";
result += ACImplNotes.parse_sections(page_text.substring(principles_pos, fof_pos));
result += "|findings=\n";
result += ACImplNotes.parse_sections(page_text.substring(fof_pos, remedies_pos));
result += "|remedies=\n";
result += ACImplNotes.parse_sections(page_text.substring(remedies_pos, enforcement_pos));
result += "|enforcement=\n{" + "{ACImplNotes/Proposal |name=Enforcement of restrictions|number=0 |support=0 |oppose=0 |abstain=0 |pass=pass|notes=Passes by default }}\n";
result += "{" + "{ACImplNotes/Proposal |name=Appeals and modifications|number=0 |support=0 |oppose=0 |abstain=0 |pass=pass|notes=Passes by default }}\n}}";
return result;
};
ACImplNotes.onclick = function() {
var api = new mw.Api();
var params = {
'action':'query',
'prop':'revisions',
'titles':mw.config.get('wgPageName'),
'rvprop':'content'
};
api.get(params).done(function(data){
var pageid = mw.config.get('wgArticleId').toString();
var wikitext = data['query']['pages'][pageid]['revisions'][0]['*'];
$( "#ACImplNotes-generated" ).html('<pre>' + ACImplNotes.do_generate(wikitext) +'</pre>');
$( "#ACImplNotes-generated" ).show().dialog( { title: "Implementation notes",
width:1000
} );
});
return false;
};
$(document).on('click', '#ca-makeACNotes', ACImplNotes.onclick);
$('#Implementation_notes').after(' <a href="#" id="makeimplnotes_link" style="font-size:small;font-weight:normal;">[Generate implementation notes]</a>');
$(document).on('click', '#makeimplnotes_link', ACImplNotes.onclick);
$('#bodyContent').before('<div id="ACImplNotes-generated" style="width:1000px;display:none;">'+
'</div>');
}
});