User:PerfektesChaos/js/WikiSyntaxTextMod/d.js

/// PerfektesChaos/js/WikiSyntaxTextMod/d.js /// 2021-05-21 PerfektesChaos@de.wikipedia // ResourceLoader: compatible; dependencies: //     user, user.options, mediawiki.user, mediawiki.util, mediawiki.cookie /// Fingerprint: #0#0# /// @license: CC-by-sa/4.0 GPLv3 /// /* global window:false, mw:true, mediaWiki:false                      */ /* jshint bitwise:true, curly:true, eqeqeq:true, latedef:true, laxbreak:true, nocomma:true, strict:true, undef:true, unused:true          */

if ( typeof mediaWiki !==  "object" ) {   // disconnected mw =  { config: false, libs:  { }, log:   function  { "use strict"; }, str:   { }, util:  { } }; } if ( typeof mw.libs.WikiSyntaxTextMod !==  "object"   ||    ! mw.libs.WikiSyntaxTextMod ) { mw.libs.WikiSyntaxTextMod =  {  bb: { }  }; } if ( ! mw.libs.WikiSyntaxTextMod.vsn ) { mw.libs.WikiSyntaxTextMod.vsn =  -7.3; } // This is the main script of a suite of 13 modules // External access: //   WikiSyntaxTextMod_About //   WikiSyntaxTextMod_Run if ( typeof mw.libs.WikiSyntaxTextMod.bb !==  "object" ) { mw.libs.WikiSyntaxTextMod.bb =  { }; } // Requires: JavaScript 1.3 //          (String.charCodeAt String.fromCharCode String.replace) //          JavaScript 1.5  RegExp non-capturing parenthese // Requires: MediaWiki 1.23 //          (mw.hook, //            1.18: mw.libs; //            1.17: mw.config mw.loader mw.util //                  jQuery/core jQuery.cookie)

// Uses: //   mediaWiki::   mw:: //   >  .config //   >  .loader //   >  .util //   jQuery:: //      .cookie //      .isArray //      .ready //      .trigger //      .trim //   wikEd:: //      >  .disabled //      .UpdateFrame //      .Setup //      .UpdateTextarea

mw.libs.WikiSyntaxTextMod.bb.util =  function ( WSTM ) { // From general utility package // 2012-05-18 PerfektesChaos@de.wikipedia "use strict"; if ( typeof WSTM.util !==  "object" ) { WSTM.util =  { }; }

WSTM.util.fiatObjects =  function ( adult, activate, assign ) { // Ensure existence of at least empty object // Precondition: //   adult     -- parent object //   activate  -- String with name of child object //   assign    -- optional object with initial definition //                if containing object components, //                they will be asserted as well // Postcondition: //   adult has been extended // Uses: //   .util.fiatObjects  -- recursive // 2012-05-18 PerfektesChaos@de.wikipedia var elt, obj, s;     if ( typeof adult[ activate ]  !==  "object" ) { adult[activate] =  ( assign  ?  assign  :  { } ); }     if ( assign ) { obj =  adult[ activate ]; for ( s in assign ) { if ( assign.hasOwnProperty( s ) ) { elt =  assign[ s ]; if ( typeof elt ===  "object" ) { WSTM.util.fiatObjects( obj, s, elt ); }           }         }  //  for s in obj }  };   // .util.fiatObjects

WSTM.util.yymmddhhmmss =  function ( align ) { // Build date and time stamp // Precondition: //   align  -- Date object // Postcondition: //   Returns string formatted // Uses: //   .str.fromNum // 2012-03-28 PerfektesChaos@de.wikipedia var s =    ( align.getFullYear % 100 )  *  10000 + ( align.getMonth + 1 )  *  100 +   align.getDate, t =      align.getHours  *  10000 +   align.getMinutes  *  100 +   align.getSeconds; return ( WSTM.str.fromNum( s )  +  WSTM.str.fromNum( t ) ); };  // .util.yymmddhhmmss

WSTM.util.fiatObjects( WSTM, "debugging",  { loud: false } );

};  // .bb.util mw.libs.WikiSyntaxTextMod.bb.util( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.util;

//---

mw.libs.WikiSyntaxTextMod.bb.config =  function ( WSTM ) { // Variables for global usage in WSTM // 2013-01-07 PerfektesChaos@de.wikipedia "use strict"; WSTM.type =  "WikiSyntaxTextMod"; WSTM.doc  =  "w:de:User:PerfektesChaos/js/" + WSTM.type + "";

if ( typeof WSTM.g !==  "object" ) { WSTM.g    =  { learnt:     false, mediaWiki : false, wDBname  : undefined, wNsIds   : undefined,   // wgNamespaceIds wNsNumber : undefined, wPageName : undefined, wRevID   : undefined,   // wgCurRevisionId wServer  : undefined, wTitle   : undefined, wUserLang : undefined,  // wgUserLanguage projLang : undefined,   // ~ wgContentLanguage projLone : undefined,   // no language versions projType : undefined,   // ~ wgSiteName downcased userLang : undefined    // ~ wgUserLanguage };     WSTM.ia    =  false; }  // multiple loading?

WSTM.g.fetch =  function ( assign, access, apply ) { // Set WSTM global variable by retrieving from mediaWiki context // Precondition: //   assign  -- variable //              undefined for .mediaWiki //   access  -- string with name //              false for .mediaWiki //   apply   -- string with local name, or false // Postcondition: //   Returns undefined if no value found // Uses: //   >  window //   >  mediaWiki //    < .g.mediaWiki //    < .g.wDBname //    < .g.wNsIds //    < .g.wNsNumber //    < .g.wPageName //    < .g.wRevID //    < .g.wServer //    < .g.wTitle //    < .g.wUserLang //   mw.config.get // 2020-02-01 PerfektesChaos@de.wikipedia var r, v;     if ( apply ) { if ( typeof this[ apply ] !==  undefined ) { r =  this[ apply ]; }     } else { r =  assign; }  // access if ( r === undefined ) { if ( ! this.mediaWiki ) { if ( typeof window ===  "object"   &&                 window   &&                 typeof window.mediaWiki  ===  "object" ) { this.mediaWiki =  window.mediaWiki; r              =  this.mediaWiki; }        }   // this.mediaWiki if ( this.mediaWiki ) { if ( access ) { v =  mw.config.get( access ); if ( v !== null &&  access ) { switch ( access ) { case "wgContentLanguage" : this.wPageLang =  v;                        break; case "wgCurRevisionId" : this.wRevID    =  v;                        break; case "wgDBname" : this.wDBname   =  v;                        break; case "wgNamespaceIds" : this.wNsIds    =  v;                        break; case "wgNamespaceNumber" : this.wNsNumber =  v;                        break; case "wgPageName" : this.wPageName =  v;                        break; case "wgServer" : this.wServer   =  v;                        break; case "wgTitle" : this.wTitle    =  v;                        break; case "wgUserLanguage" : this.wUserLang =  v;                        break; }  // switch  access r =  v;               }   // val } else { r =  this.mediaWiki; }  // access }  // mediaWiki }  // undefined return r;  };   // .g.fetch

// Possible user configuration // Uses: //   .util.fiatObjects // 2012-11-02 PerfektesChaos@de.wikipedia WSTM.util.fiatObjects( WSTM, "config",                          { lang:     { },                            load:     { },                            page:     { } } ); /*  if (typeof(WSTM.config.load) !== "object") { WSTM.config.load =  { after:   false, api:    false, inhibit: false, updater: false }; }  if (typeof(WSTM.config.page) !== "object") { WSTM.config.page =  { exclude: false, include: false, oldid:  false, support: false }; }  if ( typeof WSTM.config.load.after  !==  "function" ) { WSTM.config.load.after =  false; } };  // .bb.config mw.libs.WikiSyntaxTextMod.bb.config( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.config;

//---

mw.libs.WikiSyntaxTextMod.bb.str =  function ( WSTM ) { // Copied from string utility package. // Uses: //   .util.fiatObjects // 2013-08-22 PerfektesChaos@de.wikipedia "use strict"; WSTM.util.fiatObjects( WSTM, "str",  { } );

WSTM.str.fromNum =  function ( adjust ) { /**      Format number as string @version 2011-10-09 PerfektesChaos@de.wikipedia @param  adjust  number to be formatted @return adjust as string */     return adjust.toString; };  // .str.fromNum

};  // .bb.str mw.libs.WikiSyntaxTextMod.bb.str( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.str;

//---

mw.libs.WikiSyntaxTextMod.bb.api =  function ( WSTM ) { // API recommended to users // Uses: //   .util.fiatObjects // 2015-03-08 PerfektesChaos@de.wikipedia "use strict"; WSTM.util.fiatObjects( WSTM, "api",  { loaded: false } );

WSTM.api.isAppropriate =  function ( advanced ) { // Check whether WikisyntaxTextMod is appropriate // Precondition: //   advanced  -- true: interactive request //   Wikiserver environment  -- not wgIsArticle // Postcondition: //   Returns true iff current page is appropriate. // Uses: //   >< .g.wNsNumber //   >< .g.wTitle //   >< .config.page.oldid //   >< .config.page.exclude //   >< .config.page.include //   >< .config.page.support //   .g.fetch //   .mw.config.get //   .main.isEditable //   .main.isPageMatch //   mw.util.getParamValue // 2016-01-01 PerfektesChaos@de.wikipedia var pg       =  WSTM.config.page, r        =  false, suffixes =  ".css.js.lua.uue.", i,         leeway, legal, select; WSTM.g.fetch( false, "wgNamespaceNumber", "wNsNumber" ); WSTM.g.fetch( false, "wgTitle",          "wTitle" ); if ( typeof WSTM.g.wNsNumber === "number"  &&           typeof WSTM.g.wTitle  === "string" ) { leeway =  false; legal  =  ( WSTM.g.wNsNumber === 0 ); if ( WSTM.g.wNsNumber >= 0 &&              WSTM.g.wNsNumber % 2  ===  0  &&              WSTM.g.wNsNumber  !==  8 ) { leeway =  true; if ( mw.util.getParamValue( "oldid" ) ) { if ( typeof pg.oldid !==  "boolean" ) { pg.oldid =  false; }              leeway  =  pg.oldid; legal  =  leeway; }  // not the standard version if ( WSTM.g.wNsNumber ) { if ( mw.config.get( "wgPageContentModel" )                                                      === "wikitext" ) { i =  WSTM.g.wTitle.lastIndexOf( "." ); if ( i > 0 ) { select =  WSTM.g.wTitle.substr( i ).toLowerCase; if ( suffixes.indexOf( select + "." ) >=  0 ) {                        leeway  =  false; legal  =  false; }                 }               } else { leeway =  false; legal  =  false; }           }   // maybe user namespace if ( leeway &&  ! WSTM.main.isEditable ) { leeway =  false; legal  =  false; }  // restriction }  // no discussion or special page if ( ! legal &&  leeway ) {   // generally possible if ( typeof pg.include ===  "object" ) { legal =  WSTM.main.isPageMatch( pg.include ); }  // defined if ( ! legal &&  advanced === true ) { select =  typeof pg.support; if ( select === "object" ) { legal =  WSTM.main.isPageMatch( pg.support ); } else if ( select === "boolean" ) { legal =  pg.support; }           }   // interactive? }  // leeway if ( legal ) {  // bail out? if ( typeof pg.exclude ===  "object" ) { legal =  ! WSTM.main.isPageMatch( pg.exclude ); }  //  defined }        r  =  legal; } else { mw.log( WSTM.debugging,                ".api.isAppropriate   failed g.fetch",                 3 ); }     return r;   };   // .api.isAppropriate

WSTM.api.load =  function ( action ) { // Request loading of outsourced modules // Precondition: //   action  -- user defined external callback function //              true:   run automatic //              false:  do nothing than updating //   Any Wikimedia project // Postcondition: //   Loading of all dependencies is initiated // Remark: May be used as event handler -- 'this' is not accessed // Uses: //   .prefs.first //   (.main.further) // 2015-09-14 PerfektesChaos@de.wikipedia WSTM.prefs.first( function {                           WSTM.main.further( action );                        } ); };  // .api.load

WSTM.api.run =  function  { // Launch syntax and user defined replacement manually // Precondition: //   Wikiserver environment for editpage with "editform" // Postcondition: //   Returns void(0), as required in GUI action. //   wpTextbox1 value of "editform" is modified, if appropriate. // Remark: May be used as event handler -- 'this' is not accessed // Uses: //   >< .config.page.oldid //   .api.isAppropriate //   .api.load // 2012-11-02 PerfektesChaos@de.wikipedia if ( typeof WSTM.config.page.oldid !==  "boolean" ) { WSTM.config.page.oldid =  true; }     if ( WSTM.api.isAppropriate( true ) ) {   // fool proof WSTM.api.load( true ); }     return void( 0 ); };  // .api.run

};  // .bb.api mw.libs.WikiSyntaxTextMod.bb.api( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.api;

//---

mw.libs.WikiSyntaxTextMod.bb.errors =  function ( WSTM ) { // Detected syntax error handling // Uses: //   .util.fiatObjects // 2012-10-11 PerfektesChaos@de.wikipedia "use strict"; WSTM.util.fiatObjects( WSTM, "errors",  { } ); WSTM.errors.swift  =  "WikiSyntaxTextMod_errors";

WSTM.errors.fault =  function  { // Wrap external function for presenting error list // Uses: //   .errors.format // Remark: Used as event handler -- 'this' is not WSTM.errors // 2011-12-23 PerfektesChaos@de.wikipedia WSTM.errors.format; };  // .errors.fault

WSTM.errors.fetch =  function  { // Find error comment in TEXTAREA, and remove if detected // Postcondition: //   Return true, iff found, and set .errors.story // Uses: //    < .errors.story //   .main.textarea //   .errors.frozen //   (.errors.fault) // 2012-10-11 PerfektesChaos@de.wikipedia var r      =  false, s      =  WSTM.main.textarea( false, false ), i,         j,          k,          n,          scan, story; this.story =  false; if ( typeof s ===  "string" ) { scan =  this.frozen; i    =  s.indexOf( scan ); if ( i >= 0 ) { n =  scan.length; j =  s.indexOf( "-->",  i + n ); if ( j >= 0 ) { story  =  s.slice( i + n,  j ); k      =  story.indexOf( "\n" ); j     += 3; if ( s.charCodeAt( j ) ===  10 ) {   // \n j++; }              s  =  ( i > 0  ?  s.substr( 0, i )  :  "" ) +  s.substr( j ); WSTM.main.textarea( s, true ); r =  ( k >= 0 ); if ( r ) { this.story =  story.substr( k ); }           }         }   // ErrorMsgID } else {  // Spamschutzfilter mw.log( WSTM.debugging,                ".errors.fetch  Textarea failed",                 3 ); }     return  r;   };   // .errors.fetch

WSTM.errors.find =  function  { // Retrieve specific formatted error message from sessionStorage // Postcondition: //   Return value, iff found, and set .errors.swap // Uses: //   >  sessionStorage //   >  .errors.swift //   >  .errors.starter //    < .errors.joint //    < .errors.swap //   sessionStorage.getItem //   sessionStorage. //   .errors.fixing // 2015-03-10 PerfektesChaos@de.wikipedia var r =  false, s;     this.swap  =  false; if ( typeof window.sessionStorage ===  "object" ) { s =  window.sessionStorage.getItem( this.swift ); if ( typeof s ===  "string"   &&              s ) { this.fixing; this.joint =  s.indexOf( this.starter ); if ( this.joint >= 0 ) { this.swap =  s;               r          =  s;            } window.sessionStorage.setItem( this.swift, "" ); }     }      return r;   };   // .errors.find

WSTM.errors.fixing =  function  { // Ensure standardized XML identifier for formatted error message // Uses: //   >< .g.wRevID //   >< .errors.starter //   .g.fetch // 2012-10-12 PerfektesChaos@de.wikipedia if ( ! this.starter ) { WSTM.g.fetch( false, "wgCurRevisionId", "wRevID" ); this.starter =  ""; }  };   // .errors.fixing

WSTM.errors.frozen =  function  { // Retrieve standardized identifier for error message summaries // Postcondition: //   Return standardized identifier // 2011-12-23 PerfektesChaos@de.wikipedia var s =  " ##";   // hide from dumps return "<!-- " + "WikiSyntaxTextMod" + s + " ERROR in PAGE" + s;   };   // .errors.frozen

};  // .bb.errors mw.libs.WikiSyntaxTextMod.bb.errors( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.errors;

//---

mw.libs.WikiSyntaxTextMod.bb.main =  function ( WSTM ) { // Top level functions (internal) // 2018-09-14 PerfektesChaos@de.wikipedia "use strict"; if ( typeof WSTM.main !==  "object" ) { WSTM.main =  { }; }  WSTM.main.bb      =  false; WSTM.main.fiat   =  false; WSTM.main.scheme =  false; WSTM.main.score  =  "r"; WSTM.main.self   =  "User:PerfektesChaos"; WSTM.main.seal   =  "user:PerfektesChaos/WikiSyntaxTextMod"; WSTM.main.server =  "en.wikipedia.org"; WSTM.main.site   =  ""; WSTM.main.subdir =  "WikiSyntaxTextMod"; WSTM.main.swift  =  "WikiSyntaxTextMod_rvIDs"; WSTM.main.vc     =  { next: 0, rv:  false }; if ( typeof WSTM.debugging.site ===  "string" ) { WSTM.main.site =  WSTM.debugging.site; }  if ( typeof WSTM.vsn  ===  "number" ) { if ( typeof WSTM.debugging.prefix ===  "string" ) { WSTM.main.score =  WSTM.debugging.prefix; } else if ( WSTM.vsn < 0 ) { WSTM.main.score =  "d"; }  // no debugging package defined WSTM.vsn =  WSTM.main.site + "(" + WSTM.main.score + ")" + " Run=" + WSTM.vsn; }  // multiple loading? if ( typeof WSTM.debugging.subdir ===  "string" ) { WSTM.main.subdir =  WSTM.debugging.subdir; }  if ( typeof WSTM.debugging.subs  ===  "string" ) { WSTM.main.subs =  WSTM.debugging.subs; } else { WSTM.main.subs =  "MWCEIHTXOLUS"; if ( WSTM.main.site === "file:/" ) { WSTM.main.subs =  WSTM.main.subs + "Z"; }  }

WSTM.main.actionSubmit =  function  { // Perform action=submit mode: Possible error msg to be displayed // Precondition: //   Interactive mode (web form) with wgAction==submit // Remark: Used as event handler -- 'this' is not WSTM.main // Uses: //   .errors.fetch //   .errors.find //   .api.load //   (.errors.fault) // Requires: JavaScript 1.3  charCodeAt // 2012-01-16 PerfektesChaos@de.wikipedia var load =  false; if ( WSTM.errors.fetch ) { load =  true; } else if ( WSTM.errors.find ) { load =  true; }     if ( load ) { WSTM.api.load( WSTM.errors.fault ); }  };   // .main.actionSubmit

WSTM.main.features =  function ( arrange, alter ) { // Handle external scripts, e.g. WikEd // Precondition: //   arrange  -- undefined:  before load //               true:       initialize, no decoration //               false:      update //   alter    -- if arrange: show pretty change, not only diffpage // Remark: Used as event handler -- 'this' is not WSTM.main // Uses: //   >< .ia      //    (.main.features) //   >  window //   >  editToolStrIns:: //         >< .off //         .update //   >  wikEd:: //         >  .disabled //         >< .turnedOn //         >< .useWikEd //         .Setup //         .UpdateFrame //         .UpdateTextarea //   .util.fiatObjects // Notes: //   editToolStrIns: //      ...      //    WikEd -- six cases: //      1. First beginning, then major change //         -> WSTM, Diff //         true, false //      2. First beginning, then minor changes //         -> WSTM, Setup //         true, true //      3. First beginning, no changes //         -> WSTM, Setup //         true, true //      4. Later started, then major change //         -> Setup?, UpdateTextarea, WSTM, Diff //         false, false //      5. Later started, then minor changes //         -> Setup?, UpdateTextarea, WSTM, UpdateFrame //         false, true //      6. Later started, no changes //         -> Setup?, UpdateTextarea, WSTM //         false, false // 2020-02-25 PerfektesChaos@de.wikipedia var IAEXT, wE; if ( typeof window ===  "object" ) {   // online interactive WSTM.util.fiatObjects( WSTM, "ia",                                { ext:       false,                                  $editform: false,                                  $textarea: false } ); if ( typeof arrange !== "boolean" ) {   // before load WSTM.util.fiatObjects( WSTM.ia, "ext",  { } ); IAEXT =  WSTM.ia.ext; if ( typeof mw.libs.editToolStrIns ===  "object" ) { IAEXT.editToolStrIns =  false; }           if ( typeof window.wikEd === "object"                 &&  window.wikEd                 &&  window.wikEd.UpdateTextarea                 &&  ! IAEXT.wikEd ) { wE =  window.wikEd; IAEXT.wikEd =  { skipWSTM:        true, setupWSTM:      false, beginWSTM:      false, disabled:       wE.disabled, highlightSyntax: wE.highlightSyntax, turnedOn:       wE.turnedOn, useWikEd:       wE.useWikEd }; if ( window.document                       .getElementsByName( "wikEdStartupFlag" )[ 0 ] ) { if ( wE.origVersion === wE.lastVersion ) { IAEXT.wikEd.beginWSTM =  true; wE.highlightSyntax    =  false; wE.disabled           =  true; }              } else if ( typeof wE.Setup  ===  "function"                           &&  ! wE.disabled                           &&  wE.turnedOn                           &&  wE.useWikEd) { try { wE.RemoveEventListener( window,                                            "load",                                             wE.Setup,                                             false  ); } catch ( e1 ) { }                 try { wE.RemoveEventListener( window.document,                                            "DOMContentLoaded",                                             wE.Setup,                                             false ); } catch ( e2 ) { }              }            }   // wikEd } else if ( WSTM.ia.ext ) {  // after load, any IAEXT =  WSTM.ia.ext; if ( IAEXT.wikEd ) { wE =  window.wikEd; if ( arrange ) { if ( IAEXT.wikEd.beginWSTM ) { if ( typeof IAEXT.wikEd.disabled ===  "boolean" ) { IAEXT.wikEd.setupWSTM =  true; }                 }                  if ( ! IAEXT.wikEd.setupWSTM  &&                       ! IAEXT.wikEd.beginWSTM ) { // asynchronous overrun if ( IAEXT.wikEd.flag ) { IAEXT.wikEd.flag.removeAttribute( "name" ); IAEXT.wikEd.flag =  false; }                    if ( typeof wE.Setup  ===  "function" ) { wE.Setup; }                    IAEXT.wikEd.disabled   =  wE.disabled; wE.disabled =  false; IAEXT.wikEd.setupWSTM =  true; }              }               if ( ! IAEXT.wikEd.beginWSTM                    &&  ! wE.disabled                    &&  wE.turnedOn                    &&  wE.useWikEd ) { if ( arrange ) { wE.UpdateTextarea( null ); wE.config.onHook.push( WSTM.main.features ); } else { if ( alter ) { wE.highlightSyntax = IAEXT.wikEd.highlightSyntax; wE.useWikEd        =  IAEXT.wikEd.useWikEd; if ( wE.useWikEd ) { wE.UpdateFrame( null ); }                    } else { wE.disabled =  true; wE.useWikEd =  false; }                 }                  IAEXT.wikEd.beginWSTM  =  false; }           }   // "wikEd" }     }   // window };  // .main.features

WSTM.main.fire =  function  { // Execute appropriate major entry function by interactive call // Precondition: //   Loading of outsourced modules complete // Postcondition: //   .main.full aut idem started // Remark: May be used as event handler -- 'this' is not accessed // Uses: //   >  .g.wNsNumber //   >  (.main.full) //   >< .main.fiat //    < .api.loaded //   .main.ready //   .main.features //   .prefs.first //   jQuery.ready //   (.main.fiat) // 2015-09-19 PerfektesChaos@de.wikipedia var fun; WSTM.main.ready( true ); WSTM.api.loaded =  true; if ( WSTM.g.wNsNumber === -1 ) { WSTM.prefs.form; } else if ( WSTM.main.fiat ) { if ( typeof WSTM.main.fiat ===  "function" ) { fun =  WSTM.main.fiat; } else { fun =  WSTM.main.full; }        WSTM.main.fiat  =  false; WSTM.main.features; window.jQuery( function {                           WSTM.main.features;                           if ( fun  ===  WSTM.main.full ) {                              WSTM.prefs.first( WSTM.main.full );                           } else {                              fun;                           }                        } ); }  };   // .main.fire

WSTM.main.focus =  function  { // Focus interest on message region // Postcondition: //   Return jQuery object to insert before into page, or false // Uses: //   mw.util.addCSS //   jQuery // 2021-05-21 PerfektesChaos@de.wikipedia var $r =  false, $e; if ( typeof window ===  "object" ) {   // online if ( typeof mw.util ===  "object" ) { mw.util.addCSS( ".cn-fundraiser-banner,"                           + "#mw-js-message,"                            + "#siteNotice,"                            + "#fundraising\n"                            + "{display: none;}" ); }        if ( typeof window.jQuery  ===  "function" ) {   // WMF context if ( window.jQuery( ".mw-body-content" ).length ) { $e =  window.jQuery( ".mw-body-content" ).eq( 0 ); } else if ( window.jQuery( "#article" ).length ) { $e =  window.jQuery( "#article" ); } else { $e =  window.jQuery( "#content" ); }           if ( $e.length ) { $r =  $e; }        }      }   // window return $r; };  // .main.focus

WSTM.main.follow =  function  { // Test for portlet equipping // Precondition: //   preferencesGadgetOptions enabled // Remark: Used as event handler -- 'this' is not WSTM.main // Uses: //   >  .config.portlet //   .prefs.fetch //   jQuery.ready //   (.main.force) // 2012-10-12 PerfektesChaos@de.wikipedia WSTM.prefs.fetch; if ( WSTM.config.portlet ) { window.jQuery( WSTM.main.force ); }  };   // .main.follow

WSTM.main.force =  function  { // Decorate skin with portlet link to Run // Precondition: //   Decoration is suitable and desired. // Remark: Used as event handler -- 'this' is not WSTM.main // Uses: //   >  .vsn //   >  .type //   >  .config.portlet //    < .main.$portlet //   jQuery:: //      .trim //      .get //      .find //      .click //   mw:: //      .config.get //      .util.addPortletLink // 2015-02-24 PerfektesChaos@de.wikipedia var say    =  "Start WikiSyntaxTextMod * Version: " + WSTM.vsn, scope  =  false, select =  "ca-WSTM-run", show   =  WSTM.type, stick  =  false, swift  =  null, s,         $li; if ( typeof WSTM.config.portlet ===  "object" ) { s =  WSTM.config.portlet.scope; if ( typeof s ===  "string" ) { s =  window.jQuery.trim( s ); if ( s.charCodeAt( 0 ) ===  35 ) {   // '#' s =  s.substr( 1 ); }           if ( s.length ) { scope =  s;            } }        s  =  WSTM.config.portlet.show; if ( typeof s ===  "string" ) { s =  window.jQuery.trim( s ); if ( s.length ) { show =  s;            } }        s  =  WSTM.config.portlet.stick; if ( typeof s ===  "string" ) { s =  window.jQuery.trim( s ); if ( s.length ) { stick =  s;            } }        s  =  WSTM.config.portlet.swift; if ( typeof s ===  "string" ) { s =  window.jQuery.trim( s ); if ( s.length ) { swift =  s;            } }     } else { WSTM.config.portlet =  { }; }     if ( ! scope ) { if ( mw.config.get( "skin" ) ===  "vector" ) { scope =  "p-cactions"; }     }      if ( scope === "p-cactions" ) { $li =  window.jQuery( window.document ) .find( "#p-cactions .menu li" ); if ( $li.length ) { stick =  $li.get( 0 ); } else { stick =  "#-"; }     } else if ( ! scope ) { scope =  "p-tb"; }     if ( ! stick ) { if ( scope === "p-tb" ) { stick =  "#t-whatlinkshere"; }     }      if ( typeof WSTM.main.$portlet  ===  "object" ) { WSTM.main.$portlet.remove; }     WSTM.main.$portlet  =  mw.util.addPortletLink( scope,                                                     "#",                                                     show,                                                     select,                                                     say,                                                     swift,                                                     stick ); WSTM.main.$portlet =  window.jQuery( WSTM.main.$portlet ); WSTM.main.$portlet.click( function {   WSTM.api.load( true );                                            } ); };  // .main.force

WSTM.main.further =  function ( action ) { // Perform loading of outsourced modules // Precondition: //   action  -- user defined external callback function //              true:   run automatic //              false:  do nothing than updating //   preferencesGadgetOptions enabled //   Any Wikimedia project // Postcondition: //   Loading of all dependencies is initiated // Remark: May be used as event handler -- 'this' is not accessed // Uses: //   >  .api.loaded //   >  .main.subs //   >  .debugging //   >  .debugging.feeder //   >  .debugging.loud //   >  .main.score //   >  .main.server //   >  .main.site //   >  .main.self //   >  .main.subdir //   >  .g.wNsNumber //   >< .main.vsn //    < .main.fiat //    < .main.sister //   .util.yymmddhhmmss //   .prefs.first //   WSTM.main.load //   .main.vc.update //   (.main.fire) // Requires: JavaScript 1.3  charCodeAt // 2018-09-14 PerfektesChaos@de.wikipedia var lazy   =  ( action !== false  &&  ! WSTM.api.loaded ), local  =  false, b,         i,          k,          n,          s,          saver, script, sign, stamp, use; if ( ! WSTM.api.loaded  &&           typeof WSTM.debugging  === "object" ) { if ( typeof WSTM.debugging.feeder ===  "function" ) { if ( action ) { local =  WSTM.debugging.feeder( WSTM.main.subs ); } else { local =  true; }        } else if ( WSTM.debugging.loud ) { lazy =  false; }     }      if ( action ) { b =  typeof action; if ( b === "function" ||  b === "boolean" ) { WSTM.main.fiat =  action; if ( action === true ) { WSTM.prefs.first; }        }   // action }  // action if ( WSTM.api.loaded && action ) { WSTM.prefs.first( WSTM.main.fire ); } else if ( ! local) { k        =  ( WSTM.main.site === "test" ? 9 : 7 ); saver    =  false; stamp    =  WSTM.util.yymmddhhmmss( new Date ); WSTM.vsn =  WSTM.vsn + "*"; n        =  ( action ? WSTM.main.subs.length : 0 ); script   =  WSTM.main.self + "/js/" + WSTM.main.subdir + "/" + WSTM.main.score; stamp    =  stamp.substr( 0, k ); if ( n > 0 ) { use =  [ ]; for ( i = 0; i < n;  i++ ) { s     =  WSTM.main.subs.substr( i, 1 ); saver =  WSTM.main.vc.get( s ); if ( ! saver ) { saver =  stamp; }              sign  =  WSTM.main.seal + "/" + s;               WSTM.main.load( sign,                               WSTM.main.server,                               script + s + ".js",                               saver ); use.push( sign ); }  // for i         } if ( action ||  WSTM.g.wNsNumber === -1 ) { WSTM.prefs.first( WSTM.main.fire, use ); }  // already loaded, continue right now WSTM.main.vc.update; }  };   // .main.further

WSTM.main.isEditable =  function  { // Is the current user permitted to edit this page? // Postcondition: //   Return true iff no restriction detected // Uses: //   mw.config.get // 2015-10-24 PerfektesChaos@de.wikipedia var env    =  mw.config.get( [ "wgRestrictionEdit",                                      "wgUserGroups" ] ), dont   =  env.wgRestrictionEdit, r      =  true, groups, i,         j,          m,          n,          ng, p,         trsl; if ( dont  &&   typeof dont  ===  "object" ) { n =  dont.length; if ( n ) { groups =  env.wgUserGroups; r      =  false; if ( groups ) { ng =  groups.length; if ( ng ) { trsl =  { autoconfirmed:       "autoconfirmed", editeditorprotected: "editor", sysop:              "sysop" }; m    =  n;                  for ( i = 0;  i < n;  i++ ) { p =  trsl[ dont[i] ]; if ( p ) { for ( j = 0; j < ng;  j++ ) { if ( p === groups[ j ] ) { m--; break;  // for j                           } }  // for j                     } else {   // may contain "" or null m--; }                 }   // for i                  r  =  ( m === 0 ); }           }         }      }      return r;   };   // .main.isEditable

WSTM.main.isPageMatch =  function ( accomplish ) { // Does current page accomplish? // Precondition: //   accomplish  -- array of rules //                  Each rule is a string interpreted as RegExp //                  Generally any matching of article / page name //                  If starting with ':', it is full qualified //                  Full qualified starts with ":DB:" //                  DB is a project name like //                  "enwiki", "commonswiki", "svwikisource" // Postcondition: //   Returns true //           iff current page is matched by any rule in accomplish // Uses: //   >< .g.wDBname //   >< .g.wPageName //   .g.fetch //   jQuery.isArray // Requires: JavaScript 1.3  charCodeAt // 2012-11-11 PerfektesChaos@de.wikipedia var f =  false, e,         i,          k,          n,          r;      if ( window.jQuery.isArray( accomplish ) ) { WSTM.g.fetch( false, "wgDBname",  "wDBname" ); WSTM.g.fetch( false, "wgPageName", "wPageName" ); if ( WSTM.g.wDBname  !== null  &&              WSTM.g.wPageName !== null ) { n =  accomplish.length; for ( i = 0; i < n;   i++ ) { e =  accomplish[i]; if ( typeof e ===  "string" ) { if ( e.charCodeAt( 0 ) === 58 ) {  // ':' k =  WSTM.g.wDBname.length; if ( e.charCodeAt( k+1 ) !== 58 ) {  // ':' k =  false; } else if ( e.substr( 1, k )                                !==  WSTM.g.wDBname ) { k =  false; } else { e =  "^"  +  e.substr( k + 2 ); }                    if ( ! k ) { k =  e.substr( 1 ).indexOf( ":" ); r =  "^"  +  e.substr( 1, k )  +  "$"; r =  new RegExp( r, "i" ); if ( r.test( WSTM.g.wDBname ) ) { e =  "^"  +  e.substr( k + 2 ); } else { e =  false; }                    }                  }   // full qualified if ( e ) { r =  new RegExp( e, "i" ); f =  r.test( WSTM.g.wPageName ); if ( f ) { break;  // for i                     }   // match }  // wgDBname match }  // string }  // for i         }   // crash-safe global }  // isArray return f;  };   // .main.isPageMatch

WSTM.main.load =  function ( assigned, at, access, age, after ) { // Load external script // Precondition: //   assigned  -- signature //   at        -- domain //   access    -- page name (encoded) //   age       -- maxage, or not //   after     -- cache appendix, or not // Uses: //   mw.loader.getState //   mw.loader.state // 2018-09-10 PerfektesChaos@de.wikipedia var rls, s;     if ( ! mw.loader.getState( assigned ) ) { rls = { }; rls[ assigned ] = "loading"; mw.loader.state( rls ); s =  "https://" + at + "/w/index.php?title=" + access + "&action=raw&ctype=text/javascript"; if ( age ) { s =  s + "&bcache=1&maxage=" + age; }        if ( after ) { s =  s + "&" + after + "*"; }        mw.loader.load( s ); }  };   // WSTM.main.load

WSTM.main.ready =  function ( all ) { // Declare ResourceLoader state, trigger loadWikiScript event // Precondition: //   all  -- false:  head module only //           true:   including any sub-module // Uses: //   >  .main.seal //    < .api.loaded //   mw.loader.getState //   mw.loader.state //   mw.hook //   jQuery.trigger // 2018-09-03 PerfektesChaos@de.wikipedia var sign =  this.seal  +  ( all ? "/*" : "" ), rls; if ( all ) { WSTM.api.loaded =  true; }     if ( mw.loader.getState( sign )  !==  "ready" ) { rls =  { }; rls[ sign ] = "ready"; mw.loader.state( rls ); }     if ( typeof mw.hook  !==  "undefined" ) { mw.hook( "WikiSyntaxTextMod.ready" ).fire; if ( all ) { mw.hook( "WikiSyntaxTextMod/*.ready" ).fire; }     }      if ( typeof window.jQuery  ===  "function" ) {   // WMF context window.jQuery( window.document ).trigger( "loadWikiScript",                                                  [ sign ] ); }  };   // .main.ready

WSTM.main.textarea =  function ( alter, advance ) { // Retrieve or replace wikitext using edit area // Precondition: //   Interactive mode (web form) //   alter   -- false or undefined: Retrieve wikitext //              string:             Modified wikitext to be stored //   advance -- true: no formatting required, //                    quick update; diffpage will be shown next // Postcondition: //   Return  string:  wpTextbox1 content  if ! alter //           false:   if alter //                    if ! alter: editform unavailable //                                 or area not modifiable // Uses: //   >  .ia      //    >< .ia.$editform //   >< .ia.$textarea //   .main.features //   jQuery //   "editform" //      >< .wpTextbox1 // 2012-02-14 PerfektesChaos@de.wikipedia var r     =  false, $box, $form; if ( WSTM.ia ) {  // online interactive and initialized if ( ! WSTM.ia.$editform ) { $form =  window.jQuery( "#editform" ); if ( $form.length ) {  // editing $box =  window.jQuery( "#wpTextbox1" ); if ( $box.length ) {  // textarea if ( ! $box.attr( "readonly" ) ) {  // modifiable WSTM.ia.$editform =  $form; WSTM.ia.$textarea =  $box; }  // modifiable }  // textarea }  // editing }  // ! $editform if ( WSTM.ia.$textarea ) { this.features( true ); if ( typeof alter ===  "string" ) {   // replace WSTM.ia.$textarea.val( alter ); this.features( false, ! advance ); } else {  // retrieve r =  WSTM.ia.$textarea.val; }  // mode }  // $textarea }  // online return r;  };   // .main.textarea

WSTM.main.wait =  function ( aware, aged ) { // Wait for loading of outsourced modules // Precondition: //   aware  -- letter of module finished loading:  "L", "U", ... //   aged   -- version number of module //   Loading of _L and _U and ... in progress //   preferencesGadgetOptions ready // Postcondition: //   .main.full aut idem started, when all ready //   else wait (do nothing) // Uses: //   >  .main.subs //   >  .main.$portlet //   >  .type //   >  .g.wNsNumber //   >  .api.loaded //   >< .main.bb      //    >< .vsn //   jQuery.find //   jQuery.attr //   .main.fire // 2015-02-24 PerfektesChaos@de.wikipedia var launch =  true, n      =  this.subs.length, e,         i,          s;      if ( ! this.bb ) { this.bb =  { }; }     for ( i = 0;  i < n;  i++ ) { s =  this.subs.substr( i, 1 ); if ( ! this.bb[ s ] ) { this.bb[ s ] =  { load: false, vsn: 0 }; }     }   // for i      for ( i = 0;  i < n;  i++ ) { s =  this.subs.substr( i, 1 ); e =  this.bb[ s ]; if ( s === aware ) { if ( ! e.load ) { e.vsn    =  aged; e.load   =  true; WSTM.vsn =  WSTM.vsn + ", " + aware + "=" + aged; }  // still working } else if ( ! e.load ) { launch =  false; }  // missing }  // for i      if ( typeof this.$portlet  ===  "object" ) { s =  "Start WikiSyntaxTextMod * Version: " + WSTM.vsn; this.$portlet.find( "a" ).attr( "title", s ); }     if ( launch  &&  ! WSTM.api.loaded ) { this.fire; }  };   // .main.wait

WSTM.main.vc.format =  function ( about, assign ) { // Format revision ID of outsourced module for cookie // Precondition: //   about   -- module type (single letter) //   assign  -- revision ID (number or RE string) // Postcondition: //   Returns string to be appended // Uses: //   >  .main.score //   >  .main.site // 2012-01-14 PerfektesChaos@de.wikipedia var r =  this.score + about + "_" + assign + "~"; if ( this.site.length ) { r =  this.site + "-" + r;      } return r;  };   // .main.vc.format

WSTM.main.vc.get =  function ( about ) { // Query revision IDs of outsourced modules // Precondition: //   about  -- module type (single letter) // Postcondition: //   Returns  false   if unknown //            string  with revision ID      // Uses: //   >  localStorage //   >  .main.swift //   >  .main.score //   >< .main.vc.rv      //     < .main.vc.next //   localStorage.getItem //   mw.cookie.set // 2018-09-10 PerfektesChaos@de.wikipedia var i, r, rv, s, store; if ( this.rv ) { r =  this.rv[ about ]; } else { this.rv =  { }; r       =  false; if ( typeof window.localStorage ===  "object" ) { try { store =  window.localStorage.getItem( WSTM.main.swift ); } catch ( err ) { }        } else { store =  window.mw.cookie.get( WSTM.main.swift ); }        if ( store ) { rv =  store.split( "~" ); if ( rv[ 0 ] ) { this.next =  parseInt( rv[ 0 ], 10 ); if ( ! isNaN( this.next ) &&  this.next > 0 ) { for ( i = 1; i < rv.length;  i++ ) { s =  rv[ i ]; if ( s.substr( 0, 1 ) ===  WSTM.main.score ) { this.rv[ s.substr( 1, 1 ) ] = parseInt( s.substr( 3 ), 10 ); }                 }   // for i                  r  =  this.rv[ about ]; }           }         }      }      return r;   };   // .main.vc.get

WSTM.main.vc.put =  function ( arrived ) { // Put revision ID of outsourced module into cookie // Precondition: //   arrived  -- versionControl data // Postcondition: // Uses: //   >  localStorage //   >  .main.subdir //   localStorage.setItem //   mw.cookie.set // 2018-09-10 PerfektesChaos@de.wikipedia var date, e,         i,          k,          rv, store, sub; if ( typeof arrived ===  "object"           &&     arrived   &&           typeof arrived.revisions  ===  "object"           &&     arrived.revisions   &&           typeof arrived.revisions.length  ===  "number" ) { date  =  new Date; store =  date.valueOf + "~"; sub   =  "js/" + WSTM.main.subdir + "/"; k     =  sub.length; rv    =  arrived.revisions; for ( i = 0; i < rv.length;  i++ ) { e =  rv[ i ]; if ( typeof e ===  "object"                 &&     e   &&                 typeof e.src  ===  "string"   &&                 typeof e.id   ===  "number" ) { if ( e.src.substr( 0, k ) ===  sub   &&                    e.src.substr( k +1, 1 )  !==  "."   &&                    e.id ) { store =  store + e.src.substr( k, 2 )  +  "_" + e.id + "~"; }           }         }   // for i         if ( typeof window.localStorage  ===  "object" ) { try { window.localStorage.setItem( WSTM.main.swift, store ); } catch ( err ) { }        } else { window.mw.cookie.set( WSTM.main.swift,                                 store,                                  { expires: 7,                                    path:    "/" } ); }     }   };   // .main.vc.put

WSTM.main.vc.update =  function  { //   >  .main.score //   >  .main.vc.next //   WSTM.main.load //   mw.hook //   (.main.vc.put) // 2018-09-19 PerfektesChaos@de.wikipedia var date, max; if ( typeof mw.hook !==  "undefined" ) { date =  new Date; max  =  ( WSTM.main.score === "d"  ?  1000000  :  86400000 ); if ( date.valueOf - max >  this.next ) { WSTM.main.load( "user:PerfektesChaos/versionControl",                           "en.wikipedia.org",                            "User:PerfektesChaos/js/versionControl/" +                            WSTM.main.score + ".js" ); mw.hook( "user:PerfektesChaos/versionControl.retrieve" ) .fire( { "site": "en.wikipedia.org",                       "space": "User:PerfektesChaos",                       "store": "versionControl" },                     function ( answer ) {                        WSTM.main.vc.put( answer );                     } ); }     }   };   // .main.vc.update

};  // .bb.main mw.libs.WikiSyntaxTextMod.bb.main( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.main;

//---

mw.libs.WikiSyntaxTextMod.bb.prefs =  function ( WSTM ) { // Preferences (interactive on Special:Gadgets) // 2018-09-10 PerfektesChaos@de.wikipedia "use strict"; WSTM.util.fiatObjects( WSTM,                         "prefs",                          { loaded: false,                            supply: "preferencesGadgetOptions" } );

WSTM.prefs.fetch =  function  { // Retrieve preferences and overwrite presets // Uses: //   >  .prefs.supply //   >  .type //   >< .config.portlet //    < .config.diffPage //   mw.libs.preferencesGadgetOptions.fetch // 2015-09-15 PerfektesChaos@de.wikipedia var vals =  false; if ( typeof mw.libs[ this.supply ]  ===  "object"           &&     mw.libs[ this.supply ]           &&     mw.libs[ this.supply ].fetch ) { vals =  mw.libs[ this.supply ].fetch( WSTM.type ); }     if ( vals ) { WSTM.config.diffPage =  vals.diffPage; if ( ! WSTM.config.portlet             ||   typeof WSTM.config.portlet  ===  "boolean" ) { WSTM.config.portlet =  vals.portlet; }     }   };   // .prefs.fetch

WSTM.prefs.first =  function ( after, also ) { // Prepare ResourceLoader availability of preferencesGadgetOptions // Precondition: //   after  -- function to continue //   also   -- array of more prerequisites, or false // Postcondition: //   load requested, if not yet defined // Uses: //   this //   >  .prefs.supply //   WSTM.main.load //   mw.loader.using //   .prefs.follow //   (.prefs.follow) // 2018-09-10 PerfektesChaos@de.wikipedia WSTM.main.load( "ext.gadget." + this.supply,                     "en.wikipedia.org",                      "User:PerfektesChaos/js/" + this.supply + "/r.js",                      604801 ); if ( after ) { if ( also ) { mw.loader.using( also,                            function  {   WSTM.prefs.follow( after );                                         } ); } else { WSTM.prefs.follow( after ); }     }   };   // .prefs.first

WSTM.prefs.follow =  function ( action ) { // Register main start function for launch when options ready // Precondition: //   action  -- function to continue // Uses: //   >  .prefs.supply //   >< .prefs.loaded //   mw.hook //   (action) // Remark: May be used as event handler -- 'this' is not accessed // 2018-09-06 PerfektesChaos@de.wikipedia if ( WSTM.prefs.loaded ) { action; } else { mw.hook( WSTM.prefs.supply + ".ready" ) .add( function { WSTM.prefs.loaded  =  true;                                action;                              } ); }  };   // .prefs.follow

};  // .bb.prefs mw.libs.WikiSyntaxTextMod.bb.prefs( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.prefs;

//---

if ( typeof window ===  "object"  &&  window ) {   // online // Convenience methods (interactive) // 2013-03-08 PerfektesChaos@de.wikipedia

window.WikiSyntaxTextMod_About =  function  { // Pop up message box with version information, or return version // Postcondition: //   Message box is displayed. //   Returns void(0), as required in GUI action, if browser window // Uses: //   >  window //   >  .vsn //   .main.focus //   jQuery /// 2018-09-03 PerfektesChaos@de.wikipedia "use strict"; var r =  mw.libs.WikiSyntaxTextMod.vsn, $c, $m; if ( typeof window ===  "object" ) {   // online $c =  mw.libs.WikiSyntaxTextMod.main.focus; if ( $c ) { $m =  window.jQuery( " " ); $m.css( "border", "solid 1px #0000FF" ) .text( r ); $c.before( $m ); }        if ( typeof window.console  ===  "object"   &&              typeof window.console.info  ===  "function" ) { window.console.info( r ); }        if ( typeof window.alert  ===  "function" ) { window.alert( r ); }        r  =  void( 0 ); }     return r;   };   // WikiSyntaxTextMod_About

window.WikiSyntaxTextMod_Run =  function   { // External access (API): Launch replacement manually // Uses: //   .api.run // 2012-02-12 PerfektesChaos@de.wikipedia "use strict"; mw.libs.WikiSyntaxTextMod.api.run; return void( 0 ); };  // WikiSyntaxTextMod_Run

}  // window "object"

//---

mw.libs.WikiSyntaxTextMod.bb.auto =  function ( WSTM ) { // Start execution on import // 2012-10-03 PerfektesChaos@de.wikipedia "use strict";

WSTM.autoRun =  function  { // Load and start WikiSyntaxTextMod, if appropriate // Precondition: //   Wikiserver environment // Postcondition: //   Returns void(0), as required in GUI action, if browser window // Remark: Used as event handler -- 'this' is not WSTM // Uses: //   >  .g.wNsNumber //   >  .config.load.urlPar //   >  .config.load.inhibit //   >  .config.load.api //   >  .config.load.updater //   >< .g.wPageName //    < .main.lockAuto //   .g.fetch //   .prefs.first //   .api.isAppropriate //   mw.loader.using //   .main.features //   .main.actionSubmit //   mw.util.getParamValue //   mw.config.get //   jQuery.ready //   (.api.load) //   (.main.follow) // 2016-10-08 PerfektesChaos@de.wikipedia var launch =  false, lookup =  false, luxury =  false, later, learn, load, lock, re, start; WSTM.main.lockAuto =  true; WSTM.g.fetch( false, "wgNamespaceNumber", "wNsNumber" ); lock =  ( WSTM.g.wNsNumber === -1 ); if ( lock ) { luxury =  ( mw.config.get( "wgCanonicalSpecialPageName" )                                                       === "Blankpage" ); } else { WSTM.config.load.urlPar =  mw.util.getParamValue( "wstm" ); if ( typeof WSTM.config.load.urlPar ===  "string" ) { re =  new RegExp( "^(0|false$|n|inhibit)" ); if ( re.test( WSTM.config.load.urlPar ) ) { lock =  true; }        }   // &wstm= if ( typeof WSTM.config.load.inhibit ===  "boolean" ) { lock =  WSTM.config.load.inhibit; }        load  =  ! lock; if ( load  &&              WSTM.g.fetch( undefined, false ) ) { load =  ! mw.config.get( "wgIsArticle" ); }  // ! wgIsArticle }     if ( load ) { start =  mw.util.getParamValue( "action" ); learn =  false; if ( start === "edit" ) { learn =  ( !  ( mw.util.getParamValue( "undo" )  || mw.util.getParamValue( "undoafter" ) ) ); } else if ( start === "submit" ) { lookup =  true; }        if ( learn || lookup ) { load   =  WSTM.api.isAppropriate( false ); launch =  learn; if ( lookup ) { lookup =  ( WSTM.g.wNsNumber % 2  ===  0 ); if ( lookup ) { lookup =  WSTM.api.isAppropriate( true ); }           }         }      }   // "edit" is always a non-regular page, never IsArticle if ( ! load ) { if ( typeof WSTM.config.load.updater ===  "string" ) { if ( WSTM.config.load.updater.length ) { WSTM.g.fetch( false, "wgPageName", "wPageName" ); if ( WSTM.g.wPageName !== null ) { re   =  new RegExp( WSTM.config.load.updater, "i" ); load =  ( re.test( WSTM.g.wPageName ) ); }  // wgPageName } else { load =  true; }        }   // config.load.updater }  // .config.load.inhibit if ( load || luxury || WSTM.config.load.api ) { WSTM.api.load( launch || luxury ); }  // Do it! if ( lookup || launch ) { if ( lookup ) { WSTM.main.features; WSTM.prefs.first( function {                                 window.jQuery( WSTM.main.actionSubmit );                              } ); }        if ( ! lookup  &&  launch ) { later =  WSTM.api.isAppropriate( true ); } else { later =  lookup; }        if ( later ) { WSTM.prefs.first( WSTM.main.follow ); }     }      return void( 0 ); };  // .autoRun

if ( typeof window ===  "object"        &&     window   &&             // online        typeof WSTM.main.lockAuto  !==  "boolean"   &&        typeof mw  ===  "object"        &&     mw   &&        typeof mw.loader  ===  "object"   &&        typeof window.jQuery  !==  "undefined"        &&     window.jQuery ) { WSTM.main.lockAuto =  true; WSTM.main.ready( false ); mw.loader.using( [ "user",                        "user.options",                         "mediawiki.user",                         "mediawiki.util",                         "mediawiki.cookie" ],                       WSTM.autoRun ); }  if ( typeof WSTM.config.load  ===  "object"        &&     WSTM.config.load   &&        typeof WSTM.config.load.after  ===  "function" ) { WSTM.config.load.after; } };  // .bb.auto mw.libs.WikiSyntaxTextMod.bb.auto( mw.libs.WikiSyntaxTextMod ); delete mw.libs.WikiSyntaxTextMod.bb.auto;

void( 0 );

// Emacs // Local Variables: // coding: iso-8859-1-dos // fill-column: 80 // End:

/// EOF  WikiSyntaxTextMod/d.js