User:PerfektesChaos/js/lintHint/d.js: Difference between revisions

Content deleted Content added
-4.9
-5.8
 
(7 intermediate revisions by the same user not shown)
Line 1:
/// User:PerfektesChaos/js/lintHint/d.js
/// 20212024-1207-2704 PerfektesChaos@de.wikipedia
// Show LintErrors analysis live
// ResourceLoader: compatible;
// dependencies: user,
// mw mediawiki.API, mediawiki.storage, mediawiki.util
/// Fingerprint: #0#0#
/// License: CC-by-sa/4.0
Line 12 ⟶ 13:
laxbreak:true,
nocomma:true, strict:true, undef:true, unused:true */
 
 
 
Line 17 ⟶ 19:
( function ( mw, $ ) {
"use strict";
var Version = -45.98,
Signature = "lintHint",
HINT = { cmodels: { "wikitext": true,
Line 23 ⟶ 25:
"proofread-page": true },
doc: "en:User:PerfektesChaos/js/" + Signature,
drop: false,
errors: [ "bogus-image-options",
"deletable-table-tag",
Line 29 ⟶ 32:
"ignored-table-attr",
"inline-media-caption",
"large-tables",
"misc-tidy-replacement-issues",
"misnested-tag",
Line 37 ⟶ 41:
"multiline-html-table-in-list",
"multiple-unclosed-formatting-tags",
"night-mode-unaware-background-color",
"obsolete-tag",
"pwrap-bug-workaround",
Line 55 ⟶ 60:
live: false,
ltr: true,
quiet: [ "large-tables",
"night-mode-unaware-background-color"
],
selMain: "[role='main']",
silent: false,
source: false,
spaces: false,
using: [ "mediawiki.api",
"mediawiki.storage",
Line 108 ⟶ 118:
"mediawiki.ui.input" ],
$pagename: false },
INFO = { },
LINTER = { live: false },
PREGO = { app: false,
Line 117 ⟶ 128:
// [ "layer", "boolean" ],
[ "lazy", "boolean" ],
[ "silent", "string" ],
[ "spaces", "string" ] ],
signature: "preferencesGadgetOptions",
Line 216 ⟶ 228:
+ " dove effettuare l’analisi."
+ " Usare - per la lista vuota"
+ " e * per indicarli tutti."},
"^^silent":{"en": "Suppress these error types"
+ " (space separated list),"
+ " or - for all shown or * for auto default",
"de": "Unterdrücke diese Fehlertypen"
+ " (Leerzeichen-getrennte Liste),"
+ " oder - für alle zeigen"
+ " oder * für Vorgabe"}
}; // HINT.texts
 
Line 248 ⟶ 267:
if ( mw.config.get( "skin" ) !== "minerva" ) { // T49858
if ( action ) {
mw.loader.using( [ "jquery.tablesorter" ],
action );
} else {
Line 272 ⟶ 291:
// < HINT.later
// < HINT.lazy
// < HINT.drop
// mw.loader.using()
// BOX.flat()
// (API.full)
// (BOX.feed)
// 20192023-0105-1914 PerfektesChaos@de.wikipedia
var i, live, s;
if ( typeof apply === "object"
&& apply ) {
Line 331 ⟶ 351:
} else if ( HINT.live && ! live ) {
BOX.flat();
}
if ( typeof apply.quiet === "object"
&& apply.quiet &&
typeof apply.quiet.length === "number" ) {
HINT.drop = [ ];
for ( i = 0; i < apply.quiet.length; i++ ) {
s = apply.quiet[ i ];
if ( typeof s === "string" ) {
s = s.trim();
if ( s ) {
HINT.drop.push( s );
}
}
} // for i
if ( HINT.drop.length > 0 ) {
HINT.silent = HINT.drop.join( " " );
} else {
HINT.silent = "-";
}
}
}
Line 372 ⟶ 411:
// mw.hook()
// (TMPLXPAND.first)
// (INFO.first)
// (LINTER.first)
// (features)
// 20212022-1202-2607 PerfektesChaos@de.wikipedia
var i, later, listen, live, re, rls, s;
HINT.signature = "ext.gadget." + Signature;
Line 410 ⟶ 450:
EDIT.selector = "textarea#output";
fair( TMPLXPAND.first );
break;
case "Info":
$( INFO.first );
break;
case "LintErrors":
Line 474 ⟶ 517:
}
// mw.hook( "CodeMirror.enabled" ).add( CODMIRROR.fire );
break;
case "info":
$( INFO.first );
break;
} // switch wgAction
Line 561 ⟶ 607:
// arrived -- JSON result of ajax lint query
// Uses:
// > < APIHINT.errorsquiet
// < API.scream
// < API.errors
// (BOX.fill)
// (BOX.flat)
// 20172024-0807-0104 PerfektesChaos@de.wikipedia
var starte, i, s;
API.scream = false;
API.errors = false;
if ( typeof arrived === "object"
&& arrived &&
typeof arrived.length === "number"
&& arrived.length ) {
APIif ( HINT.errorsquiet =) arrived;{
start for ( i = "fill"0; i < arrived.length; i++ ) {
} else { e = arrived[ i ];
if ( $.inArray( e.type, HINT.quiet ) < 0 ) {
API.errors = false;
start API.errors = "flat"API.errors || [ ];
API.errors.push( e );
}
} // for i
} else {
API.errors = arrived;
}
}
s = ( API.screamerrors =? "fill" : "flat" false);
mw.hook( "wikipage.content" ).add( BOX[ starts ] );
}; // API.fine()
 
Line 710 ⟶ 765:
// Uses:
// > HINT.ltr
// > BOX.$box
// 2018-09-25 PerfektesChaos@de.wikipedia
if ( $activate ) {
Line 869 ⟶ 924:
// Precondition:
// $area -- mw-content-text
// mediawiki.api.messages available
// Uses:
// > BOX.$collapsed
Line 986 ⟶ 1,041:
// mw.message()
// UPDATE.feed()
// mw.hook()
// BOX.future()
// (BOX.find)
// (BOX.future)
// 20212022-1205-2301 PerfektesChaos@de.wikipedia
var n = 0,
e, i, k, loc, par, s, $e, $e2, $e3, $td, $tr;
for ( i = 0; i < API.errors.length; i++ ) {
e = API.errors[ i ];
Line 1,077 ⟶ 1,133:
.data( "range", e.dsr )
.data( "sort-value", i )
.attr( { "data-beg": "" + e.dsr[ 0 ],
"data-end": "" + e.dsr[ 1 ],
"data-type": e.type } )
.text( String.fromCharCode( 160, 8595, 160 ) );
if ( typeof BOX.swift === "string" ) {
Line 1,082 ⟶ 1,141:
}
$tr.append( $td );
loc = true;
}
BOX.$tbody.append( $tr );
Line 1,096 ⟶ 1,156:
}
BOX.$table.show();
if ( loc ) {
mw.hook( Signature + ".table-range" ).fire( BOX.$table );
}
} else {
BOX.$table.hide();
Line 1,261 ⟶ 1,324:
// > HINT.launched
// > HINT.selector
// > Signature
// > BOX.fgc
// > HINT.ltr
Line 2,059 ⟶ 2,121:
// Request messages
// Precondition:
// mediawiki.api.messages available
// Uses:
// >< API.Api
Line 2,272 ⟶ 2,334:
Signature );
}; // GUIDER.furnish()
 
 
 
INFO.fiat = function () {
// Link headline on Special:info or &action=info if not yet linked
// Precondition:
// mediawiki.util available
// Uses:
// > INFO.$h
// mw.config.get()
// mw.util.getUrl()
// 2022-02-07 PerfektesChaos@de.wikipedia
var s = mw.config.get( "wgRelevantPageName" ),
$a = $( "<a>" );
$a.attr( { href: mw.util.getUrl( "Special:LintErrors",
{ pagename: s } ) } )
.text( INFO.$h.text() );
INFO.$h.empty()
.append( $a );
}; // INFO.fiat()
 
 
 
INFO.first = function () {
// Seek linter statistics headline on Special:info or &action=info
// Precondition:
// DOM ready
// Uses:
// < INFO.$h
// mw.loader.using()
// (INFO.fiat)
// 2022-02-07 PerfektesChaos@de.wikipedia
INFO.$h = $( "#mw-pageinfo-linter" );
if ( INFO.$h.length &&
! INFO.$h.find( "a" ).length ) {
mw.loader.using( [ "mediawiki.util" ],
INFO.fiat );
}
}; // INFO.first()
 
 
Line 2,286 ⟶ 2,387:
// > HINT.using
// > PREGO.live
// > HINT.drop
// >< HINT.spaces
// >< HINT.live
// >< LINTER.live
// >< HINT.silent
// < HINT.quiet
// mw.hook()
// PREGO.form()
Line 2,293 ⟶ 2,398:
// mw.loader.using()
// (BOX.feed)
// 20192023-0105-1914 PerfektesChaos@de.wikipedia
var i, n, s, v, vals;
if ( typeof applied === "object"
Line 2,302 ⟶ 2,407:
s = v[ 0 ];
if ( typeof applied[ s ] === v[ 1 ] ) {
HINT[ s ] = applied[ s ];
}
} // for i
Line 2,315 ⟶ 2,420:
}
if ( PREGO.live ) {
if ( ! HINT.drop ) {
HINT.silent = "*";
}
PREGO.form();
} else if ( LINTER.live ) {
Line 2,337 ⟶ 2,445:
}
if ( HINT.live && HINT.nsn >= 0 ) {
switch ( HINT.silent ) {
case false:
case "*":
break;
case "-":
HINT.quiet = false;
break;
default:
HINT.quiet = HINT.silent.split( " " );
} // switch HINT.silent
 
mw.loader.using( HINT.using, BOX.feed );
}
Line 2,374 ⟶ 2,493:
 
 
PREGO.fiatfiat1 = function () {
// Namespaces text input field has been generatedused
// Uses:
// > PREGO.$spaces
Line 2,416 ⟶ 2,535:
}
PREGO.$spaces.val( s );
}; // PREGO.fiatfiat1()
 
 
 
PREGO.fieldfiat2 = function ( $applying ) {
// Quiet text input field has been used
// Uses:
// > PREGO.$silent
// >< PREGO.reID
// 2023-05-14 PerfektesChaos@de.wikipedia
var s = PREGO.$silent.val(),
got, i, quiet, single;
if ( s.indexOf( "*" ) >= 0 ) {
s = "*";
} else {
got = s.trim().split( " " );
if ( got.length > 0 ) {
quiet = [ ];
if ( typeof PREGO.reID !== "object" ) {
PREGO.reID = new RegExp( "^[a-z][a-z-]*[a-z]$" );
}
for ( i = 0; i < got.length; i++ ) {
single = got[ i ];
if ( PREGO.reID.test( single ) &&
$.inArray( single, quiet ) < 0 ) {
quiet.push( single );
} else if ( single === "-" ) {
quiet = [ ];
break; // for i
}
} // for i
if ( quiet.length > 0 ) {
s = quiet.join( " " );
} else {
s = "-";
}
} else {
s = "*";
}
}
PREGO.$silent.val( s );
}; // PREGO.fiat2()
 
 
 
PREGO.field1 = function ( $applying ) {
// Namespaces text input field has been generated
// Precondition:
Line 2,426 ⟶ 2,586:
// Uses:
// < PREGO.$spaces
// 2018-05-02 PerfektesChaos@de (PREGO.wikipediafiat1)
// 2023-05-14 PerfektesChaos@de.wikipedia
PREGO.$spaces = $applying;
PREGO.$spaces.change( PREGO.fiatfiat1 );
}; // PREGO.fieldfield1()
 
 
 
PREGO.field2 = function ( $applying ) {
// Quiet text input field has been generated
// Precondition:
// $applying -- jQuery object of text input field
// Uses:
// < PREGO.$spaces
// (PREGO.fiat2)
// 2023-05-14 PerfektesChaos@de.wikipedia
PREGO.$silent = $applying;
PREGO.$silent.change( PREGO.fiat2 );
}; // PREGO.field2()
 
 
Line 2,461 ⟶ 2,636:
// > Signature
// mw.hook()
// (PREGO.fiatfield1)
// 2019-01-19 PerfektesChaos@de (PREGO.wikipediafield2)
// 2023-05-14 PerfektesChaos@de.wikipedia
var support = ".wikipedia.org/wiki/" + HINT.doc.substr( 3 ),
docs = { "en": "//en" + support,
Line 2,472 ⟶ 2,648:
val: ( HINT.spaces ? HINT.spaces
: "" ),
field: PREGO.fieldfield1 },
{ signature: "launch",
type: "checkbox",
Line 2,484 ⟶ 2,660:
type: "checkbox",
show: HINT.texts[ "^^lazy" ],
val: HINT.lazy },
/*
,
Line 2,490 ⟶ 2,666:
type: "checkbox",
show: HINT.texts[ "^^layer" ],
val: HINT.layer },
*/
{ signature: "silent",
type: "text",
show: HINT.texts[ "^^silent" ],
val: ( HINT.silent ? HINT.silent
: "*" ),
field: PREGO.field2 }
];
dialog = { script: Signature,
Line 2,617 ⟶ 2,799:
// 2018-05-20 PerfektesChaos@de.wikipedia
mw.hook( "wikipage.content" ).add( BOX.flip );
}; // TMPLXPAND.firstfurther()