Jump to content

User:Rublov/refspace.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Rublov (talk | contribs) at 20:18, 2 November 2021 (Also handle newlines (Axel Heiberg)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/**
 * Highlights violations of [[MOS:REFSPACE]] in red.
 *
 * Written by [[User:Rublov]], June 2021
 */

$(function () {
  if (mw.config.get("wgAction") === "view") {
    for (const ref of document.querySelectorAll(".reference, .Template-Fact")) {
      const previous = ref.previousSibling;
      const next = ref.nextSibling;
      if (
        (!!previous && isBeforeWrong(previous.textContent)) ||
        (!!next && next.tagName !== "STYLE" && isAfterWrong(next.textContent))
      ) {
        const a = ref.querySelector("a");
        a.style.color = "red";
      }
    }
  }
});

function isBeforeWrong(text) {
  if (!text) {
    return false;
  }

  return text.endsWith(" ") || text.endsWith("\n");
}

function isAfterWrong(text) {
  if (!text) {
    return false;
  }

  return text.startsWith(".") || text.startsWith(";") || text.startsWith(",");
}