User:RetroCraft314/taxobox.js

// jQuery(function { mw.loader.using(['mediawiki.util'], function { if (mw.config.get('wgAction') == 'edit') { $(mw.util.addPortletLink( "p-tb", "#",       "Taxobox", "t-taxobox", "Automatize taxobox", "$"     )).click(function(e) {        e.preventDefault;

$el = $('.mw-editfont-monospace')[0]; source = $el.value; ixs = [ source.search(/\n/)+3 ]; taxobox = source.substring(...ixs); taxon = taxobox.match(/(\w+)\s*=\s*(.*)/); lines = taxobox.split('\n'); removedLines = []; newTaxobox = lines.reduce(function(arr, line) {         ranks = ['regnum', 'phylum', 'classis', 'ordo', 'familia', 'genus', 'species'];          species = taxon[1] == 'species';          if (/taxobox/i.test(line)) return [...arr, `{{${species ? 'speciesbox' : 'automatic taxobox'}`];          param = line.match(/^\s*\|\s*(\w+)\s*=\s*(.+)/i);          if (!param) return [...arr, line];          if (param[1] == taxon[1]) return [...arr, `| taxon = ${taxon[2]}`];          if (param[1] == `${taxon[1]}_authority`) return [...arr, `| authority = ${param[2]}`];          if (!ranks.includes(param[1])) return [...arr, line];          removedLines.push(param[1]);          return arr;        }, []).join('\n'); newSource = source.substring(0, ixs[0]) + newTaxobox + source.substring(ixs[1]); alert(`removed lines: ${removedLines.join(', ')}`); $el.value = newSource;

$('[name=wpSummary]')[0].value = `use automatic ${species ? 'speciesbox' : 'taxobox'}`; });   }  }); }); //