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

Content deleted Content added
-1.24
-1.25
Line 1:
/// User:PerfektesChaos/js/citoidWikitext/core.js
// Execute core functionality for citoid on wikitext source editing
/// 2015-0609-1611 PerfektesChaos@de.wikipedia
// ResourceLoader: compatible;
// dependencies: --
Line 17:
( function ( mw, $ ) {
"use strict";
var VERSION = -1.2425,
MW_LIB = "citoidWikitext",
APIC = { },
Line 48:
CITWT.signature = "ext.gadget." + CITWT.type;
SIG = CITWT.signature + "/core";
mw.loader.state( SIG, "loading" );
CITWT.support = "user:PerfektesChaos/js/" + CITWT.type;
if ( typeof CITWT.core !== "object" || ! CITWT.core ) {
Line 88 ⟶ 87:
}
}; // APIC.fault()
 
 
 
APIC.finish = function () {
// All queries have been answered
// Uses:
// > APIC.results
// >< APIC.queries
// TASK.follow()
// GUIP.flat()
// 2015-06-24 PerfektesChaos@de.wikipedia
var n = APIC.queries.length,
i, j, q, r, ufo;
for ( i = 0; i < n; i++ ) {
r = APIC.results[ i ];
for ( j = 0; j < n; j++ ) {
q = APIC.queries[ j ];
if ( q === r.url ) {
r.lucky = true;
APIC.queries[ j ] = r;
r = false;
break; // for j
}
} // for j
if ( r ) {
if ( ! ufo ) {
ufo = [ ];
}
r.idResult = i;
ufo.push( r );
}
} // for i
if ( ufo ) {
i = 0;
if ( ufo.length === 1 ) {
ufo[ 0 ].idResult = false;
}
for ( j = 0; j < n; j++ ) {
q = APIC.queries[ j ];
if ( typeof q === "string" ) {
ufo[ i ].queryURL = q;
APIC.queries[ j ] = ufo[ i ];
i++;
}
} // for j
}
TASK.follow();
}; // APIC.finish()
 
 
Line 102 ⟶ 149:
// >< APIC.jq
// >< APIC.legacy
// < APIC.results
// < APIC.missing
// (APIC.found)
// (APIC.fault)
// Remark: Used as event handler -- 'this' is not APIC
// 2015-06-1424 PerfektesChaos@de.wikipedia
var f, i, seek, service;
if ( typeof APIC.jq !== "object" ) {
Line 128 ⟶ 177:
}
}
APIC.results = [ ];
APIC.missing = APIC.queries.length;
for ( i = 0; i < APIC.queries.length; i++ ) {
/* citoid.wmflabs appears to handle an Array of URL
Line 149 ⟶ 200:
 
APIC.found = function ( arrived ) {
// QueryAnswer has been answeredarrived
// Precondition:
// arrived -- object
// Uses:
// > < APIC.queriesmissing
// TASK>< APIC.follow()results
// APIC.finish()
// GUIP.flat()
// Remark: Used as event handler -- 'this' is not APIC
// 2015-06-1624 PerfektesChaos@de.wikipedia
var got, i, leap, lone, n, q;
if ( arrived &&
typeof arrived === "object" &&
Line 164 ⟶ 216:
got = arrived[ 0 ];
if ( typeof got.url === "string" ) {
n = APIC.queriesresults.lengthpush( got );
lone = ( n === 1 )APIC.missing--;
if ( lone! APIC.missing ) {
lone = APIC.queries[ 0 ]finish();
if ( lone === got.url ) {
lone = false;
} else {
APIC.queries[ 0 ] = got.url;
}
}
for ( i = 0; i < n; i++ ) {
q = APIC.queries[ i ];
if ( q === got.url ) {
APIC.queries[ i ] = got;
} else if ( typeof q === "string" ) {
leap = true;
}
} // for i
if ( ! leap ) {
if ( lone ) {
APIC.queries[ 0 ].urlQuery = lone;
}
TASK.follow();
}
} else if ( typeof got.Error === "string" ) {
Line 352 ⟶ 385:
// Uses:
// this
// > CITWT.isbn (user defined)
// < BOOK.catalogs
// 2015-05-01 PerfektesChaos@de.wikipedia
Line 414 ⟶ 447:
 
//-----------------------------------------------------------------------
 
 
 
DESC.re = { };
 
 
Line 428 ⟶ 465:
// DESC.fold()
// DESC.*()
// 2015-0507-3101 PerfektesChaos@de.wikipedia
var got, i, mode, r, s, start;
if ( attempt ) {
s = attempt.replace( /^\s+/, "" );
i = s.indexOf( "</ref>" );
if ( i >= 0 ) {
s = s.substr( 0, i );
}
if ( s ) {
switch ( s.substr( 0, 1 ) ) {
Line 478 ⟶ 519:
break;
} // switch s.substr( 0, 1 )
if ( ! s && CITWT.bibRecord && ! GUIP.caret.story ) {
s = CITWT.bibRecord.id;
}
if ( s ) {
if ( mode ) {
Line 621 ⟶ 659:
// Postcondition:
// Returns object, or not
// 2015-0506-0130 PerfektesChaos@de.wikipedia
var got, i, r, s;
switch ( achieved ) {
case 0:
Line 637 ⟶ 675:
s = got[ 1 ].replace( /^\s+/, "" )
.replace( /\s+$/, "" );
i = s.indexOf( "}}" );
if ( i > 0 && s.indexOf( "{", i ) < 0 ) {
s = s.substr( 0, i );
}
r = { scheme: "doi",
doi: s,
Line 672 ⟶ 714:
// Uses:
// > GUIP.caret.starter
// 2015-05-19 PerfektesChaos@de >< DESC.re.wikipediaurl
// 2015-09-07 PerfektesChaos@de.wikipedia
var got = /(\S+)\s?/.exec( attempt ),
i, r, re, s, site, suffix;
if ( got ) {
if ( typeof DESC.re.url !== "object" ) {
s = "^((?:f|ht)tps?://"
+ "(?:[^./]+\\.)+\\w+"
+ "(?::[0-9]+)?)"
+ "(/.*)$";
DESC.re.url = new RegExp( s, "i" );
}
s = got[ 1 ];
r = { scheme: "url" };
re got = /^((?:f|ht)tps?:\/\/(?:[^DESC.\/]+\re.)+\w+)url.exec(\/.* s )$/i;
got = re.exec( s );
if ( got ) {
site = got[ 1 ].toLowerCase();
Line 695 ⟶ 744:
}
}
re = /^([^#<]+)([#<])(.*)$/;
got = re.exec( suffix );
if ( got ) {
suffix = got[ 1 ];
if ( got[ 2 ] === "#" ) {
r.subtle = got[ 3 ];
}
}
r.url = site + suffix;
// TODO ///////// redirect URL
r.source = r.url;
got = /[.\/]?([^.\/]+\.\w+)(:[0-9]+)?$/.exec( site );
if ( got ) {
r.say = got[ 1 ];
Line 1,063 ⟶ 1,115:
// Uses:
// > GUIP.$panel
// > CITWT.bibRecord
// > CITWT.leading (user defined)
// < GUIP.$textarea
// < GUIP.submit
Line 1,722 ⟶ 1,774:
// Uses:
// this
// > GUIP.input.$text
// > GUIP.input.live
// GUIP.input.fire()
// 2015-05-01 PerfektesChaos@de.wikipedia
Line 2,176 ⟶ 2,228:
// .(project).fire()
// GUIP.caret.fill()
// GUIP.flat()
// GUIP.push.flip()
// Remark: Used as event handler -- 'this' is not TASK
// 2015-06-0130 PerfektesChaos@de.wikipedia
var result = CITWT.opus.fire( TASK.query, APIC.queries ),
mode;
//console.log("TASK.filter() " )
TASK.template = PROJ.fire( result );
//console.dir( result[ 0 ] )
Line 2,193 ⟶ 2,245:
GUIP.caret.fill( TASK.template );
TASK.template = false;
GUIP.flat( "translated", TASK.query.$links );
} else {
mode = 3;
Line 2,265 ⟶ 2,318:
// Uses:
// > GUIP.caret.selection
// > .bibRecord
// < APIC.queries
// DESC.fire()
Line 2,274 ⟶ 2,328:
// GUIP.input.filler()
// (APIC.fire)
// 2015-0506-1425 PerfektesChaos@de.wikipedia
var search = ( ask ? ask : GUIP.caret.selection ),
i, k, m, q, suggest, url;
if ( ! search && CITWT.bibRecord ) {
search = CITWT.bibRecord.sign + " " + CITWT.bibRecord.subject;
}
if ( search ) {
TASK.query = DESC.fire( search );
Line 2,508 ⟶ 2,565:
// Postcondition:
// Returns object, with components identified by strings
// Uses:
// 2015-05-12 PerfektesChaos@de.wikipedia
var i = 0,