MediaWiki:Gadget-SourceLanguage.js

Attention : Depuis MediaWiki 1.18 les pages se terminant avec l'extension .js ou .css sont interprétées comme des pages wiki ! En particulier les modèles (subst ou non) et les liens. Vous devez donc migrer le code source et effectuer vos changements en évitant ces éléments de syntaxe wiki (peu importe leurs emplacements dans le code source : commentaire, chaine) :

  • Double accolades ouvrantes (en particulier avec subst:) : séparer les deux accolades "{"+"{" du reste de la chaine
  • Double crochets ouvrants : même technique de séparation.
  • Signature (tildes ~ multiples) : même technique de séparation.

Note : après avoir enregistré vos préférences, vous devrez attendre que le serveur mette à jour la feuille de style globale avant de forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Konqueror : Cliquez sur Actualiser ou pressez F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
wgfrwikibooks_Gadget_SourceLanguageJsVersion = "20200418002";
/***************************************************************************/
/* Gestion des langages de code source (attribut lang de <syntaxhighlight>)         */
/***************************************************************************/

var source_all_langs=[
// 0..9
"4cs", "6502acme", "6502kickass", "6502tasm", "68000devpac",
// A
"abap", "actionscript", "actionscript3", "ada", "algol68", "apache", "applescript",
"apt_sources", "asm", "asp", "autoconf", "autohotkey", "autoit", "avisynth", "awk",
// B
"bascomavr", "bash", "basic4gl", "bf|Brainfuck", "bibtex", "blitzbasic", "bnf", "boo",
// C
"c|C", "c_loadrunner|C LoadRunner", "c_mac|C mac", "caddcl", "cadlisp", "cfdg", "cfm",
"chaiscript", "cil", "clojure", "cmake", "cobol", "coffeescript", "cpp|C++", "cpp-qt|C++ Qt", "csharp|C#", "css|CSS", "cuesheet",
// D
"d|D", "dcs", "delphi", "diff", "div", "dos|DOS batch", "dot",
// E
"e", "ecmascript", "eiffel", "email", "epc", "erlang", "euphoria",
// F
"f1", "falcon", "fo", "fortran", "freebasic", "fsharp",
// G
"gambas", "gdb", "genero", "genie", "gettext", "glsl", "gml", "gnuplot", "go", "groovy", "gwbasic",
// H
"haskell", "hicest", "hq9plus", "html4strict|HTML4 strict", "html5|HTML5",
// I
"icon", "idl|IDL", "ini", "inno", "intercal", "io",
// J
"j|J", "java|Java", "java5|Java 5", "javascript", "jquery",
// K
"kixtart", "klonec|Klone C", "klonecpp|Klone C++",
// L
"latex|LaTeX", "lb", "lisp", "llvm", "locobasic", "logtalk", "lolcode", "lotusformulas",
"lotusscript", "lscript", "lsl2", "lua",
// M
"m68k", "magiksf", "make", "mapbasic", "matlab", "mirc", "mmix", "modula2", "modula3",
"mpasm", "mxml", "mysql|MySQL",
// N
"newlisp", "nsis",
// O
"oberon2", "objc|Objective-C", "objeck", "ocaml|O-Caml", "ocaml-brief|O-Caml brief",
"oobas|OpenOffice.org Basic", "oracle11|Oracle 11 SQL", "oracle8|Oracle 8 SQL", "oxygene", "oz",
// P
"pascal", "pcre", "per", "perl", "perl6", "pf", "php|PHP", "php-brief|PHP-brief", "pic16", "pike",
"pixelbender", "pli", "plsql|PL/SQL", "postgresql|PostgreSQL", "povray", "powerbuilder", "powershell",
"proftpd", "progress|OpenEdge ABL", "prolog", "properties", "providex", "purebasic", "pycon", "python",
// Q
"q|Q", "qbasic|Q basic",
// R
"rails", "rebol", "reg|Registry (Windows)", "robots", "rpmspec", "rsplus", "ruby",
// S
"sas", "scala", "scheme", "scilab", "sdlbasic|SDL basic", "smalltalk", "smarty", "sql|SQL", "systemverilog",
// T
"tcl|Tcl/Tk", "teraterm", "text", "thinbasic", "tsql|T-SQL", "typoscript",
// U
"unicon", "uscript",
// V
"vala", "vb|Visual Basic", "vbnet|Visual Basic .Net", "verilog", "vhdl|VHDL", "vim", "visualfoxpro", "visualprolog",
// W
"whitespace", "whois", "winbatch|Windows batch",
// X
"xbasic", "xml|XML", "xorg_conf", "xpp",
// Y
"yaml",
// Z
"z80", "zxbasic"
];

var syntax_element_name = "syntaxhighlight";
var def_lang = $.cookie("source_lang");
function saveSourceLang(){
  $.cookie("source_lang", document.fsource.source_lang.value, { expires: 365 });
}

function getSourceOpen()
{ saveSourceLang();return "<"+syntax_element_name+" lang=\""+document.fsource.source_lang.value+"\">\n"; }

function getLangOption(lang)
{
  var i = lang.indexOf("|");
  var l_value = (i<0) ? lang : lang.substring(0,i);
  var l_name = (i<0) ? lang : lang.substring(i+1);
  var o = [ "option", { "value": l_value }, l_name ];
  if (l_value==def_lang) o[1]["selected"]="1";
  return o;
}

var source_lang_done = false;
function getLangForm()
{
  source_lang_done = true;
  var select = [ "select", { "id": "source_lang", "name": "source_lang" } ];
  for(j=0;j<source_all_langs.length;j++)
    select.push( getLangOption(source_all_langs[j]) );
  return [ "form", { "id":"fsource","name":"fsource", "onsubmit":"return false;" },
      "Code source : ", select,
      defToolbarButton(url_wpcm+'b/b8/Button_Globe.png',
          "Coloration du code source pour le langage de programmation sélectionné",
          getSourceOpen,"</"+syntax_element_name+">\n","")
    ];
}

function addSourceButton()
{
    if (source_lang_done) return; // Déjà fait par script personnel
    // Par défaut ajoute le formulaire juste après la barre d'outils :
    var edit_toolbar = getDefaultToolbar();
    edit_toolbar.addNode( genDOM( getLangForm() ) );
}

if (wgIsEditingPage && !wgIsScriptPage) $(addSourceButton);