מדיה ויקי:Gadget-Censorbutton.js

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
// סקריפט לצנזור שם ה' - נכתב ע"י [[user:Neriah]]
if (
  mw.config.get('wgNamespaceNumber') === 0 ||
  mw.config.get('wgNamespaceNumber') === 106 ||
  mw.config.get('wgNamespaceNumber') === 14
) {
  // Check if the script is required before creating the button.
  var plain_text = document.getElementById('mw-content-text').textContent;
  plain_text = plain_text.replaceAll(/[\u0591-\u05BD\u05BF]/g, ''); // Remove Nikkud and Cantillation marks
  const pattern = /(יהוה|אל(וה|ו?הים?)|שדי)/;
  if (!document.querySelector('.law') && pattern.test(plain_text)) {

  var buttonSpan = document.createElement("span");
  buttonSpan.className = "plainlinks mw-ui-button";
  buttonSpan.id = "censorButton";
  buttonSpan.innerText = "צנזור שם ה'";

  var buttonDiv = document.createElement("div");
  buttonDiv.className = "mw-parser-output";
  buttonDiv.id = "censorButton-div";
  buttonDiv.appendChild(buttonSpan);

  var heading = document.getElementById('firstHeading');
  heading.appendChild(buttonDiv);

  buttonSpan.addEventListener("click", function() {
    function censore(element, word) {
    let split_str = word.split("");
    const nikud = "[֐-׈/]*"
    
    const reg_list = split_str.reduce((list, elem, i) => {
      list.push(elem, nikud);
      return list;
    }, []);
    reg_list.splice(0, 0, '(');
    reg_list.splice(3, 0, ')', '(');
    reg_list.push(')');
    if (word === "אדני") reg_list[reg_list.length-4] = "[֐-֯/ָּ]*"
    
    const regex = new RegExp(reg_list.join(""), "g");
    element.innerHTML = element.innerHTML.replace(regex, "$1-$2");
    }

    var elements = document.getElementsByTagName("*");

    for (var i = 0; i < elements.length; i++) {
      censore(elements[i], "יהוה");
      censore(elements[i], "אדני");
      censore(elements[i], "אלוה");
      censore(elements[i], "אלהי");
      censore(elements[i], "אלהים");
      censore(elements[i], "אלוהים");
      censore(elements[i], "צבאות");
      censore(elements[i], "שדי");
    }
  });
}
}