User:PerfektesChaos/js/refNames/core/d.js: Difference between revisions

Content deleted Content added
-0.04
-1.5
 
(6 intermediate revisions by the same user not shown)
Line 1:
/// User:PerfektesChaos/js/refNames/core/d.js
/// 20222023-0705-2801 PerfektesChaos@de.wikipedia
// <ref name="..."> major work
// ResourceLoader: compatible;
Line 19:
( function ( mw, $ ) {
"use strict";
var Version = -01.045,
Signature = "refNames",
THIS = { lapsus: false,
Line 54:
0x2003, // emsp
0x2009, // thinsp
0x200A, // HAIRsp
0x200B, // ZEROsp
0x200C, // zwnj
0x200D, // zwj
Line 67 ⟶ 69:
0x2032, // prime
0x2033, // Prime
seek: SOURCE.start 0x2039, // ‹
0x203A, // ›
0x5D )
],
Line 72 ⟶ 76:
},
PARSER = { reQuot: false,
reWS: shift: s };false,
pending: false,
$textarea: false },
Line 89 ⟶ 94:
wait: [ "de", "Ajax-loader.gif" ]
},
section: "section",
$box: false,
$editor: false,
Line 172 ⟶ 178:
// Portlet request
// Uses:
// > THIS.$widget
// > PARSER.$textarea
// > THIS.$widget
// > THIS.showselector
// >< SOURCE.$deny.hide();section
// VIEW.fire()
// SOURCE.first()
// 2022-0708-0108 PerfektesChaos@de.wikipedia
var learn = ( PARSER.lock$textarea =? true : false );
if ( THIS.$widget ) {
THIS.$widget.empty();
var s;}
if ( ! lapsuslearn ) {
SOURCE.execsection = {THIS.selector group:+ SOURCE.pre.group,section;
} else {
SOURCE.section = false;
}
VIEW.fire();
if ( PARSER.$textarealearn ) {
SOURCE.first( true );
}
Line 348 ⟶ 362:
// > THIS.selItem
// > THIS.selWarn
// > SOURCE.$doit.show();section
// failure()
// $fault()
// 2022-07-01 PerfektesChaos@de (SOURCE.wikipediaforward)
// 2022-08-08 PerfektesChaos@de.wikipedia
var $r = $( "<span>" ),
$swap;
Line 361 ⟶ 377:
$r.append( $fault( apply ) )
.append( $swap );
}
if ( SOURCE.section ) {
$r.click( SOURCE.forward );
}
return $r;
Line 453 ⟶ 472:
 
 
PARSER.fault = function ( all, at, alert, about ) {
// Communicate error details (browser console)
// Precondition:
// all -- string, with entire story
// at -- number, position in wikitext
// alert -- string, with message
Line 461 ⟶ 481:
// Uses:
// > Signature
// 2022-07-01 PerfektesChaos@de >< PARSER.wikipediareWS
// 2022-08-25 PerfektesChaos@de.wikipedia
var s;
var i, n, s;
if ( typeof window.console === "object" &&
typeof window.console.warn === "function" ) {
si = Signature + " #" + at + " " + alert-1;
}n = // for i0;
do {
i = all.indexOf( "\n", i + 1 );
n++;
} while ( i >= 0 && i < at );
s = Signature + " #" + at + " @" + n + " " + alert;
if ( about ) {
s = s + " -- " + about;
}
if ( ! PARSER.reWS ) {
PARSER.fault(reWS i,= "Trailingnew garbageRegExp( "\\s+" );
}
i = at;
while ( all.charCodeAt( i ) !== 0x3C && i >= 0 ) {
i--;
} // while
n = all.indexOf( ">", i + 1 );
if ( n < 0 ) {
n = i + 100;
}
s = s + "\n"
+ all.substring( i, n + 1).replace( PARSER.reWS, " " );
window.console.warn( s );
}
Line 492 ⟶ 532:
// PARSER.focus()
// flat()
// 2022-0708-0124 PerfektesChaos@de.wikipedia
var r = { "set": "",
"lock": false,
Line 504 ⟶ 544:
if ( k < 0 || k > after ) {
r.lock = true;
PARSER.fault( atall,
at,
"Unbalanced delimiter",
about + "=" + s );
} else if ( k === i + 1 ) {
r.lock = true;
PARSER.fault( atall,
at,
"Missing identifier",
about + "=" + s + s );
Line 517 ⟶ 559:
}
} else if ( k === 0x2F || k === 0x3E ) { // / >
PARSER.fault( all, at, "Identifier missing", about + "=" );
r.lock = true;
} else {
Line 526 ⟶ 568:
if ( k === i ) {
r.lock = true;
PARSER.fault( atall,
at,
"Missing identifier",
about + "=" );
Line 566 ⟶ 609:
// PARSER.feature()
// PARSER.first()
// 2022-0708-2724 PerfektesChaos@de.wikipedia
var i = at,
j, lock, r, s, v;
Line 590 ⟶ 633:
}
if ( typeof r[ s ] === "string" ) {
PARSER.fault( all, at, "Duplicated keyword", s );
lock = true;
} else {
Line 600 ⟶ 643:
break;
default:
PARSER.fault( all, at, "Unknown keyword", s );
lock = true;
} // switch
Line 607 ⟶ 650:
if ( lock ) {
PARSER.lock = true;
} else if ( alone && r ) {
i = PARSER.first( all, i, after );
if ( all.charCodeAt( i ) === 0x2F ) { // /
Line 613 ⟶ 656:
i = PARSER.first( all, ++i, after );
}
if ( ialone ===|| afterr.lone ) {
ifi (= r && ! rPARSER.namefirst( all, &&i, aloneafter ) {;
if ( ri === after ) false;{
if ( r && ! r.name && alone ) {
r = false;
}
} else {
PARSER.lock = true;
PARSER.fault( all, i, "Trailing garbage" );
}
} else {
PARSER.lock = true;
PARSER.fault( i, "Trailing garbage" );
}
}
Line 870 ⟶ 916:
// Uses:
// PARSER.front()
// 2022-0708-2701 PerfektesChaos@de.wikipedia
var i = 0,
s = all,
Line 920 ⟶ 966:
if ( e.name === v.name &&
e.group === v.group ) {
if ( v.content &&
e.content === v.content ) {
r[ k ].multi++;
}
r[ k ].content = e.content || v.content;
if ( r[ k ].content ) {
Line 1,106 ⟶ 1,156:
} else {
PARSER.lock = true;
PARSER.fault( iall, "Missing </ref>" );
i,
"Missing </ref>" );
}
}
Line 1,153 ⟶ 1,205:
// PARSER.features()
// PARSER.finish()
// 2022-0708-2809 PerfektesChaos@de.wikipedia
var s = all.substring( at, at + 10 ).toLowerCase(),
k, q;
Line 1,160 ⟶ 1,212:
if ( k === 0x20 ) {
q = PARSER.features( all, at + 10, after, false );
if ( q && q.group && ! q.lone ) {
PARSER.pending = { shared: q.group };
q = PARSER.finish( all, at + 10, false );
Line 1,494 ⟶ 1,546:
// > SOURCE.before
// > THIS.selItem
// > THIS.show
// > THIS.selector
// > SOURCE.section
// > THIS.show
// < SOURCE.grouped
// < SOURCE.groups
Line 1,506 ⟶ 1,559:
// SOURCE.fill()
// (SOURCE.favour)
// 2022-0708-0108 PerfektesChaos@de.wikipedia
var collection = PARSER.fire( always ),
i, $before, $editform, $head, $header;
Line 1,520 ⟶ 1,573:
$head = $( "<span>" );
$head.addClass( THIS.selItem )
.attr( { "langid": "en" SOURCE.section,
"lang": "en",
"role": "link",
"title": "help" } )
.click( SOURCE.favour )
.css( { "cursor": "pointer",
"font-size": "130%" } )
.html( THIS.show );
Line 1,551 ⟶ 1,605:
// < SOURCE.lock
// PARSER.fire()
// 2022-07-0129 PerfektesChaos@de.wikipedia
var $li = about.data[ 0 ],
pre = about.data[ 1 ],
Line 1,557 ⟶ 1,611:
$drag = about.data[ 3 ],
$drop = about.data[ 5 ];
if ( $drop.remove( ); {
$drop.remove();
}
if ( PARSER.fire( false,
{ group: group,
Line 1,567 ⟶ 1,623:
pre.name = false;
$li.remove();
} else if ( $drag ) {
$drag.show();
}
Line 1,651 ⟶ 1,707:
// Uses:
// >< SOURCE.lock
// 2022-07-0129 PerfektesChaos@de.wikipedia
var $drag, $drop;
if ( SOURCE.lock ) {
$drag = about.data[ 3 ];
$drop = about.data[ 5 ];
if ( $drop ) {
$drop.remove();
}
if ( $drag ) {
$drag.show();
}
SOURCE.lock = false;
}
}; // SOURCE.flopped()
Line 1,758 ⟶ 1,814:
// SOURCE.fresh()
// SOURCE.focus()
// 20222023-0705-01 PerfektesChaos@de.wikipedia
var s = fruit( PARSER.focus( SOURCE.$input.val() ) ),
group, i, lapsus;
Line 1,772 ⟶ 1,828:
SOURCE.fresh();
group = SOURCE.grouped[ SOURCE.pre.group ];
if ( group ) {
for ( i = 0; i < group.length; i++ ) {
if ( s === group[ i ].name ) {
lapsus = true;
break; // for i
}
} // for i
if ( ! lapsus ) {
SOURCE.exec = { group: SOURCE.pre.group,
seek: SOURCE.start,
shift: s };
SOURCE.$deny.hide();
SOURCE.$doit.show();
}
} // for i
if ( ! lapsus ) {
SOURCE.exec = { group: SOURCE.pre.group,
seek: SOURCE.start,
shift: s };
SOURCE.$deny.hide();
SOURCE.$doit.show();
}
}
Line 1,793 ⟶ 1,851:
}
}; // SOURCE.formal()
 
 
 
SOURCE.forward = function () {
// Jump to section
// Uses:
// > SOURCE.section
// 2022-08-08 PerfektesChaos@de.wikipedia
var url = window.___location;
url.hash = "#" + SOURCE.section;
window.___location = url;
}; // SOURCE.forward()