User:Quarl/autotag.js
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.
// User:Quarl/autotag.js - automatically add custom tags to article // requires: wikipage.js, wikiedit.js, shortcuts.js, addlilink.js, datetime.js // quarl 2006-01-03 initial version // quarl 2006-01-23 use wikiedit.js instead of automod.js //<pre><nowiki> // TODO: sort the tags by this order (note that these are primary names of tags since they all have many aliases; // subsituted tags such as afd are tricky; support piped data such as db|reason) //autotag_order = 'delete,afd,hoax,original research,npov,cleanup,importance'.split(','); var autotag_mark_minor = true; var autotag_shortcuts = Shortcuts({ 'cleanup,clean' : 'cleanup-date|' + datestampMonthYYYY(), 'or,original' : 'original research', 'afd,vfd' : 'subst:afd', 'catz' : 'categorize', 'cped' : 'copyedit', 'wfy' : 'wikify' // equivalent, but easier for someone reading wikisource/history }); function autotag_load() { if (wikiPage.nsSpecialP) return; addTab('javascript:autotag_query()', 'Tag', 'ca-autotag', "Add tag(s)"); } function autotag_query() { var tags = window.prompt("Enter tags to add, separated by &&. Example: hoax && not verified && original research && npov && mergeto|another article, cleanup"); autotag(tags); } function autotag_iscat(s) { return Boolean(s.match(/^category:/i)); } function autotag_remove_braces(s) { // remove any brackets or braces s = s.replace(/^\{\{(.*)\}\}$/, '$1'); s = s.replace(/^\[\[(.*)\]\]$/, '$1'); return s; } function autotag_add_braces(s) { if (autotag_iscat(s)) { return '[['+s+']]'; } else { return '{{'+s+'}}'; } } function capitalizeFirstChar(s) { if (!s) return s; return s[0].toUpperCase() + s.substr(1); } function autotag_canonicalize_category(s) { if (s.match(/^cat(egory|egories)? *: */i)) { s = 'Category: ' + capitalizeFirstChar(RegExp.rightContext); } return s; } function autotag_expand_shortcuts(s) { s = autotag_shortcuts.subst(s); // common mistake: {{unverified}} is for images only if (!wikiPage.nsImageP) s = s.replace(/unverified/, 'not verified'); s = autotag_canonicalize_category(s); // common mistake: {{d|reason}} should be {{db|reason}} s = s.replace(/^d\|/, 'db|'); return s; } function autotag_tagAtTopP(t) { if (autotag_iscat(t)) return false; if (t.match(/stub$/)) return false; return true; } function autotag(tags) { wikiPage.getEditorAsync(autotag_edit, tags); } function autotag_edit(editor, tags) { tags = tags.split(/&&/); //var ntags = Array(); var ttags = Array(); var ttags_top = Array(); var ttags_bot = Array(); for (i in tags) { var tag = tags[i]; tag = autotag_expand_shortcuts(autotag_remove_braces(trimspaces(tag))); if (!tag) continue; var btag = autotag_add_braces(tag); //ntags.push(tag); ttags.push(btag); if (autotag_tagAtTopP(tag)) { ttags_top.push(btag); } else { ttags_bot.push(btag); } } if (!ttags.length) return; if (editor.refuseCreate()) return; var prepend = ttags_top.length ? (ttags_top.join('\n\n')+'\n\n') : ''; var append = ttags_bot.length ? ('\n\n'+ttags_bot.join('\n\n')) : ''; editor.wpTextbox1 = prepend + trim_lines(editor.wpTextbox1) + append; editor.wpSummary = 'Tagged as ' + ttags.join(', '); editor.wpMinoredit = autotag_mark_minor; editor.submit(); } addOnloadHook(autotag_load); //</nowiki></pre>

