Unnaschied vunde Gschischde vun "Middawaida:YMS/eagleeye.js"

Inhalt gelöscht Inhalt hinzugefügt
YMS (Dischbediere | Baidräsch)
better progress, status and error display, added result limit, select all/none and replacement display in scanner result, show number of results when aborting, highlight current line in rule editor, mark corrector button red if nothing changed, etc.
YMS (Dischbediere | Baidräsch)
Using Steven Levithan's [http://xregexp.com/ XRegExp] 2.0 library
Zail 46:
lblNotes: { en: "Notes", de: "Anmerkungen" },
lblOptions: { en: "Options", de: "Optionen" },
lblProgress: { en: "{0}% ({1} of {2} bytes) scanned", de: "{0}% ({1} von {2} Bytes) gescannt" },
lblRemoveRule: { en: "remove", de: "löschen" },
lblRemoveRuleLong: { en: "Remove rule", de: "Regel löschen" },
Zail 88:
statStartScanning: { en: "Start scanning.", de: "Starte Scanvorgang." },
statUnsupBrowser: { en: "Error: Unsupported browser.", de: "Fehler: Browser nicht unterstützt." },
statUnsupDump: { en: "Error: Unsupported dump type.", de: "Fehler: Dump nicht unterstützt." },
statXRegExpFailed: { en: "Error: XRegExp library could not be loaded: {1}", de: "Fehler: XRegExp-Bibliothek konnte nicht geladen werden: {1}" }
};
 
Zeile 112 ⟶ 113:
$(document).ready(function() {
try {
$.getScript("http://tools.wmflabs.org/eagleeye/xregexp-all-min.js", function() {
$.getJSON(mw.config.get("wgServer") + mw.config.get("wgScript") + "?title=" + mw.util.wikiUrlencode(ruleset) + "&action=raw&ctype=application/json").done(function(rules) {
init(rules);try {
XRegExp.install("natives");
 
if (getOption("eeRulesetDbg", "").toString().length) {
// Debug mode - load rules from global JSON var eeRulesetDbg
init(getOption("eeRulesetDbg", ""));
} else {
// Production mode - load rules from specified JSON file
$.getJSON(mw.config.get("wgServer") + mw.config.get("wgScript") + "?title=" + mw.util.wikiUrlencode(ruleset) + "&action=raw&ctype=application/json").done(function(rulesdata) {
init(data);
}).fail(function(jqxhr, textStatus, error) {
mw.notify(getText("statJSONfailed").format(ruleset, etextStatus + ": " + error));
});
}
} catch (e) {
mw.notify(getText("statXRegExpFailed").format(e));
}
}).fail(function(jqxhr, textStatus, error) {
mw.notify(getText("statJSONfailedstatXRegExpFailed").format(ruleset, textStatus + ": " + error));
});
} catch (e) {
 
mw.notify(getText("statJSONfailed").format(ruleset, e));
}
});
Zeile 130 ⟶ 147:
 
for (i = 0; i < arguments.length; i++) {
s = sXRegExp.replace(news, RegExpXRegExp.cache("\\{" + i + "\\}", "gm"), arguments[i]);
}
 
Zeile 195 ⟶ 212:
}
}
 
return (sLimit === 0 || sLimit > resultList.length);
}
Zeile 232 ⟶ 248:
function addRuleEditor(i) {
$("#eeRuleEditorTable").append($("<tr />", { id: "eeRuleEditor_" + i, "class": "eeRuleEditorTableDataLine" }));
$("#eeRuleEditor_" + i).append($("<td />", { "class": "eeRuleEditorTableCheckboxColumn" }).append($("<input />", { type: "checkbox", id: "eeRuleCB_" + i, checked: (rules[i].inactiveactive === null || rules[i].inactive === falsetrue) })));
$("#eeRuleEditor_" + i).append($("<td />", { "class": "eeRuleEditorTableNameColumn" }).append($("<input />", { type: "text", id: "eeRuleName_" + i, value: rules[i].name }).css("width", "100%")));
$("#eeRuleEditor_" + i).append($("<td />", { "class": "eeRuleEditorTableMatchColumn" }).append($("<input />", { type: "text", id: "eeRuleMatch_" + i, value: (rules[i].match === undefined) ? "" : rules[i].match.source }).css("width", "100%")));
$("#eeRuleEditor_" + i).append($("<td />", { "class": "eeRuleEditorTableSkipColumn" }).append($("<input />", { type: "text", id: "eeRuleSkip_" + i, value: (rules[i].skip === undefined) ? "" : rules[i].skip.source }).css("width", "100%")));
$("#eeRuleEditor_" + i).append($("<td />", { "class": "eeRuleEditorTableReplaceColumn" }).append($("<input />", { type: "text", id: "eeRuleReplace_" + i, value: rules[i].replace }).css("width", "100%")));
$("#eeRuleEditor_" + i).append($("<td />", { "class": "eeRuleEditorTableTestColumn" }).append($("<input />", { type: "text", id: "eeRuleTest_" + i, value: rules[i].test }).css("width", "100%")));
Zeile 267 ⟶ 283:
function applyRuleSettingsFromUI(i) {
try {
rules[i].inactiveactive = ! $("#eeRuleCB_" + i).attrprop("checked");
rules[i].name = $("#eeRuleName_" + i).val();
rules[i].match = ($("#eeRuleMatch_" + i).val().length === 0) ? "" : new RegExp($("#eeRuleMatch_" + i).val(), "g");
rules[i].skip = ($("#eeRuleSkip_" + i).val().length === 0) ? "" : new RegExp($("#eeRuleSkip_" + i).val());
rules[i].replace = $("#eeRuleReplace_" + i).val();
rules[i].test = $("#eeRuleTest_" + i).val();
Zeile 294 ⟶ 310:
 
// Options
useSkiplist[SCANNER] = $("#eeOptionCB_useSkiplist").attrprop("checked");
sListAll = $("#eeOptionCB_listAll").attrprop("checked");
sListReplacements = $("#eeOptionCB_listReplacements").attrprop("checked");
 
sChunkSize = Number($("#eeOptionCB_chunkSize").val());
Zeile 313 ⟶ 329:
namespaces[SCANNER] = [];
$("input[id^=eeNamespaceCB_]").each(function() {
if ($(this).attrprop("checked")) {
namespaces[SCANNER].push(Number($(this).attr("id").substring($(this).attr("id").indexOf("_") + 1)));
}
Zeile 400 ⟶ 416:
mw.notify(getText("statRulesetMissing"));
return;
}
 
for (i = 0; i < rules.length; i++) {
rules[i].match = new RegExp(rules[i].match, "g");
 
if (rules[i].skip !== undefined) {
rules[i].skip = new RegExp(rules[i].skip);
}
}
 
Zeile 488 ⟶ 496:
$("#eeAddRule").click(function() {
// Add new (empty) rule to the rule editor
rules.push({ inactiveactive: falsetrue });
addRuleEditor(rules.length - 1);
});
Zeile 565 ⟶ 573:
var i;
var text = "";
var addMatches = $("#eeSaveResultPageWithMatches").attrprop("checked");
 
for (i = 0; i < resultList.length; i++) {
Zeile 656 ⟶ 664:
mw.notify(getText("statRuleInvalid").format(i, rules[i].name, getText("genUnknownError")));
return;
}
 
rules[i].match = rules[i].match.source;
 
if (rules[i].skip !== undefined) {
rules[i].skip = rules[i].skip.source;
}
}
Zeile 681 ⟶ 683:
 
for (i = 0; i < rules.length; i++) {
if (rules[i].inactiveactive === null || rules[i].inactive === falsetrue) {
if (! changed && $("#wpTextbox1").text().matchreplace(XRegExp.cache(rules[i].match, "g")) !== null) {
changed = true;
}
 
$("#wpTextbox1").text(XRegExp.replace($("#wpTextbox1").text(), XRegExp.replacecache(rules[i].match, "g"), rules[i].replace));
}
}
Zeile 738 ⟶ 740:
var i, j;
var pageResults = { title: object.find("title").text(), matches: [], replaces: [] };
var dummyRegExp = new RegExp("").source;
 
for (i = 0; i < rules.length; i++) {
if (rules[i].inactiveactive === null || rules[i].inactive === falsetrue) {
// Match rule if not inactiveactive
var match = object.find("text").text().match(XRegExp.cache(rules[i].match, "g"));
 
if (match !== null) {
// Check results for skiplist match
for (j = 0; j < match.length; j++) {
if (! useSkiplist[SCANNER] || rules[i].skip === undefined || rules[i].skip.source === dummyRegExpXRegExp.cache("") || rules[i].skip.length === 0 || ! match[j].match(XRegExp(rules[i].skip))) {
var replacereplacement = (sListReplacements) ? XRegExp.replace(match[j], XRegExp.replacecache(rules[i].match, "g"), rules[i].replace, "one") : "";
 
if (pageResults.matches[i] === undefined) {
pageResults.matches[i] = [match[j]];
pageResults.replaces[i] = [replacereplacement];
} else {
pageResults.matches[i].push(match[j]);
pageResults.replaces[i].push(replacereplacement);
}
 
Zail 777:
$("#mw-content-text").children(":not(.diff):not(.diff *)").each(function() {
if ($(this).html() !== null) {
var text = $(this).html();
 
for (i = 0; i < rules.length; i++) {
if (rules[i].inactiveactive === null || rules[i].inactive === falsetrue) {
$(this)text = text.htmlreplace($(this)XRegExp.html().replacecache(rules[i].match, "g"), '<span class="eeMarker">$&<sup>' + mPrefix + rules[i].name + '</sup></span>'));
}
}
 
$(this).html(text);
}
});
Zeile 791 ⟶ 795:
 
$boxes.each(function() {
if (! $(this).attrprop("checked")) {
allActivated = false;
return false;
Zeile 797 ⟶ 801:
});
 
$boxes.attrprop("checked", ! allActivated);
}
 
Zeile 866 ⟶ 870:
if (rules[i].test !== null && rules[i].test.length > 0) {
// Check standard test case
if (rules[i].test.match(XRegExp(rules[i].match, "g")) === null) {
setStatus(getText("statRuleFailsTest").format(i, rules[i].name), false);
return false;
Zeile 874 ⟶ 878:
} else {
// Perform dummy test to check formal validity
XRegExp.test("dummy".match(, rules[i].match);
}
} catch (e) {