Subramanya Sastry has uploaded a new change for review.
https://gerrit.wikimedia.org/r/68614
Change subject: WIP: Cleanup switchToConfig + bug fix in removeInterwiki
......................................................................
WIP: Cleanup switchToConfig + bug fix in removeInterwiki
* env.switchToConfig was a bit convoluted -- cleaned it up.
Also added error checking for missing prefix and unavailable
API uri.
Removed hack from ConfigRequest.
* ParsoidConfig.removeInterwiki had edge case bugs -- this is
currently unused, so no harm done.
* Currently some tests fail (because we dont have a local config
for the be-tarask prefix wiki).
Change-Id: I6fa40c9f4cf4101d041fb0cf584266874d95d199
---
M js/lib/mediawiki.ApiRequest.js
M js/lib/mediawiki.ParsoidConfig.js
M js/lib/mediawiki.parser.environment.js
3 files changed, 34 insertions(+), 36 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid
refs/changes/14/68614/1
diff --git a/js/lib/mediawiki.ApiRequest.js b/js/lib/mediawiki.ApiRequest.js
index e5ce2ca..39e0917 100644
--- a/js/lib/mediawiki.ApiRequest.js
+++ b/js/lib/mediawiki.ApiRequest.js
@@ -556,15 +556,6 @@
var ConfigRequest = function ( confSource, env ) {
ApiRequest.call( this, env, null );
- if ( !env.conf.parsoid.fetchConfig ) {
- // Hack! Configured to use local configurations, probably for
- // parserTests. Fetch the cached versions and use those.
- // The confSource will be a filename in this case.
- var localConf = require( confSource );
- this._handleJSON( null, localConf );
- return;
- }
-
var metas = [
'siteinfo'
],
diff --git a/js/lib/mediawiki.ParsoidConfig.js
b/js/lib/mediawiki.ParsoidConfig.js
index 37e682a..81b616b 100644
--- a/js/lib/mediawiki.ParsoidConfig.js
+++ b/js/lib/mediawiki.ParsoidConfig.js
@@ -81,7 +81,7 @@
ParsoidConfig.prototype.removeInterwiki = function ( prefix ) {
delete this.interwikiMap[prefix];
this.interwikiRegexp = this.interwikiRegexp.replace(
- new RegExp( '\\|' + prefix + '\\|' ), '|' );
+ new RegExp( '\\|' + prefix + '|' + prefix + '\\|' ), '' );
};
/**
diff --git a/js/lib/mediawiki.parser.environment.js
b/js/lib/mediawiki.parser.environment.js
index ccfbbdf..cf44572 100644
--- a/js/lib/mediawiki.parser.environment.js
+++ b/js/lib/mediawiki.parser.environment.js
@@ -281,36 +281,43 @@
* @param {Error} cb.err
*/
MWParserEnvironment.prototype.switchToConfig = function ( prefix, cb ) {
- // This is sometimes a URI, sometimes a prefix.
- var confSource,
- uri = this.conf.parsoid.interwikiMap[prefix] ||
- this.conf.parsoid.interwikiMap.en;
- this.conf.parsoid.apiURI = uri;
- if ( !this.conf.parsoid.fetchConfig ) {
- // Use the name of a cache file as the source of the config.
- confSource = './baseconfig/' + prefix + '.json';
- } else {
- confSource = uri;
+ function setupWikiConfig(env, apiURI, error, config) {
+ if ( error === null ) {
+ env.conf.wiki = new WikiConfig( config, prefix, apiURI
);
+ env.confCache[prefix] = env.conf.wiki;
+ }
+
+ cb( error );
}
- if ( this.confCache[prefix || ''] ) {
- this.conf.wiki = this.confCache[prefix || ''];
- cb( null );
- } else {
- var confRequest = new ConfigRequest( confSource, this );
- confRequest.on( 'src', function ( error, resultConf ) {
- var thisuri = confSource;
- if ( !this.conf.parsoid.fetchConfig && uri ) {
- thisuri = uri;
- }
- if ( error === null ) {
- this.conf.wiki = new WikiConfig( resultConf,
prefix, thisuri );
- this.confCache[prefix || ''] = this.conf.wiki;
- }
+ if (!prefix) {
+ cb(new Error("Wiki prefix not provided"));
+ }
- cb( error );
- }.bind( this ) );
+ var uri = this.conf.parsoid.interwikiMap[prefix];
+ if (!uri) {
+ cb(new Error("No API URI available for prefix: " + prefix));
+ }
+
+ this.conf.parsoid.apiURI = uri;
+
+ if ( this.confCache[prefix] ) {
+ this.conf.wiki = this.confCache[prefix];
+ cb( null );
+ } else if ( this.conf.parsoid.fetchConfig ) {
+ var confRequest = new ConfigRequest( uri, this );
+ confRequest.on( 'src', setupWikiConfig.bind(null, this, uri));
+ } else {
+ // Load the config from cached config on disk
+ var localConfigFile = './baseconfig/' + prefix + '.json',
+ localConfig = require(localConfigFile);
+
+ if (localConfig && localConfig.query) {
+ setupWikiConfig(this, uri, null, localConfig.query);
+ } else {
+ cb(new Error("Could not read valid config from file: "
+ localConfigFile));
+ }
}
};
--
To view, visit https://gerrit.wikimedia.org/r/68614
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6fa40c9f4cf4101d041fb0cf584266874d95d199
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits