mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-25 11:16:51 +00:00
Clean up transform callback interface
This commit is contained in:
parent
1f6db903e9
commit
b4892102a4
Notes:
Gabriel Wicke
2012-02-27 16:40:01 +00:00
|
@ -31,7 +31,7 @@ PostExpandParagraphHandler.prototype.register = function ( dispatcher ) {
|
|||
this.newlineRank, 'end' );
|
||||
};
|
||||
|
||||
PostExpandParagraphHandler.prototype.reset = function ( token, cb, frame, prevToken ) {
|
||||
PostExpandParagraphHandler.prototype.reset = function ( token, frame, cb ) {
|
||||
//console.log( 'PostExpandParagraphHandler.reset ' + JSON.stringify( this.tokens ) );
|
||||
if ( this.newLines ) {
|
||||
return { tokens: this._finish() };
|
||||
|
@ -55,7 +55,7 @@ PostExpandParagraphHandler.prototype._finish = function ( ) {
|
|||
|
||||
// Handle NEWLINE tokens, which trigger the actual quote analysis on the
|
||||
// collected quote tokens so far.
|
||||
PostExpandParagraphHandler.prototype.onNewLine = function ( token, cb, frame, prevToken ) {
|
||||
PostExpandParagraphHandler.prototype.onNewLine = function ( token, frame, cb ) {
|
||||
//console.log( 'PostExpandParagraphHandler.onNewLine: ' + JSON.stringify( token, null , 2 ) );
|
||||
var res;
|
||||
this.tokens.push( token );
|
||||
|
@ -70,7 +70,7 @@ PostExpandParagraphHandler.prototype.onNewLine = function ( token, cb, frame, p
|
|||
};
|
||||
|
||||
|
||||
PostExpandParagraphHandler.prototype.onAny = function ( token, cb, frame, prevToken ) {
|
||||
PostExpandParagraphHandler.prototype.onAny = function ( token, frame, cb ) {
|
||||
//console.log( 'PostExpandParagraphHandler.onAny' );
|
||||
this.tokens.push( token );
|
||||
if ( token.type === 'COMMENT' ||
|
||||
|
|
|
@ -54,17 +54,15 @@ QuoteTransformer.prototype._startNewChunk = function ( ) {
|
|||
// the length of quote string. Actual analysis and conversion to the
|
||||
// appropriate tag tokens is deferred until the next NEWLINE token triggers
|
||||
// onNewLine.
|
||||
QuoteTransformer.prototype.onQuote = function ( token, cb, frame, prevToken ) {
|
||||
QuoteTransformer.prototype.onQuote = function ( token, frame, prevToken ) {
|
||||
var qlen = token.value.length,
|
||||
tokens = [], // output tokens
|
||||
ctx = {
|
||||
token: token,
|
||||
cb: cb,
|
||||
frame: frame,
|
||||
prevToken: prevToken
|
||||
},
|
||||
ctx2 = {
|
||||
cb: cb,
|
||||
frame: frame,
|
||||
prevToken: prevToken
|
||||
};
|
||||
|
@ -122,7 +120,7 @@ QuoteTransformer.prototype.onQuote = function ( token, cb, frame, prevToken ) {
|
|||
return {};
|
||||
};
|
||||
|
||||
QuoteTransformer.prototype.onAny = function ( token, cb, frame, prevToken ) {
|
||||
QuoteTransformer.prototype.onAny = function ( token, frame, prevToken ) {
|
||||
//console.log('qt onAny: ' + JSON.stringify(token, null, 2));
|
||||
this.currentChunk.push( token );
|
||||
return {};
|
||||
|
@ -130,7 +128,7 @@ QuoteTransformer.prototype.onAny = function ( token, cb, frame, prevToken ) {
|
|||
|
||||
// Handle NEWLINE tokens, which trigger the actual quote analysis on the
|
||||
// collected quote tokens so far.
|
||||
QuoteTransformer.prototype.onNewLine = function ( token, cb, frame, prevToken ) {
|
||||
QuoteTransformer.prototype.onNewLine = function ( token, frame, prevToken ) {
|
||||
var res;
|
||||
|
||||
if( ! this.isActive ) {
|
||||
|
|
|
@ -53,7 +53,7 @@ TemplateHandler.prototype.register = function ( manager ) {
|
|||
* calls or sets up the callback to _expandTemplate, which then fetches and
|
||||
* processes the template.
|
||||
*/
|
||||
TemplateHandler.prototype.onTemplate = function ( token, cb ) {
|
||||
TemplateHandler.prototype.onTemplate = function ( token, frame, cb ) {
|
||||
//console.log('onTemplate! ' + JSON.stringify( token, null, 2 ) +
|
||||
// ' args: ' + JSON.stringify( this.manager.args ));
|
||||
|
||||
|
@ -353,7 +353,7 @@ TemplateHandler.prototype._fetchTemplateAndTitle = function ( title, callback, t
|
|||
/**
|
||||
* Expand template arguments with tokens from the containing frame.
|
||||
*/
|
||||
TemplateHandler.prototype.onTemplateArg = function ( token, cb, frame ) {
|
||||
TemplateHandler.prototype.onTemplateArg = function ( token, frame, cb ) {
|
||||
|
||||
var attributes = [{k: token.argname, v: token.defaultvalue}];
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ TokenCollector.prototype._anyDelta = 0.00001;
|
|||
* Handle the delimiter token.
|
||||
* XXX: Adjust to sync phase callback when that is modified!
|
||||
*/
|
||||
TokenCollector.prototype._onDelimiterToken = function ( token, cb, frame ) {
|
||||
TokenCollector.prototype._onDelimiterToken = function ( token, frame, cb ) {
|
||||
var res;
|
||||
if ( this.isActive ) {
|
||||
// finish processing
|
||||
|
@ -93,7 +93,7 @@ TokenCollector.prototype._onDelimiterToken = function ( token, cb, frame ) {
|
|||
* encountering the delimiter token, and collects all tokens until the end
|
||||
* token is reached.
|
||||
*/
|
||||
TokenCollector.prototype._onAnyToken = function ( token, cb, frame ) {
|
||||
TokenCollector.prototype._onAnyToken = function ( token, frame, cb ) {
|
||||
// Simply collect anything ordinary in between
|
||||
this.tokens.push( token );
|
||||
return { };
|
||||
|
|
|
@ -199,7 +199,7 @@ TokenTransformManager.prototype._cmpTransformations = function ( a, b ) {
|
|||
* processed tokens.
|
||||
* @returns {Object} Token(s) and async indication.
|
||||
*/
|
||||
TokenTransformManager.prototype._transformTagToken = function ( token, cb, phaseEndRank ) {
|
||||
TokenTransformManager.prototype._transformTagToken = function ( token, phaseEndRank, cbOrPrevToken ) {
|
||||
// prepend 'any' transformers
|
||||
var ts = this.transformers.any,
|
||||
res = { token: token },
|
||||
|
@ -225,7 +225,7 @@ TokenTransformManager.prototype._transformTagToken = function ( token, cb, phase
|
|||
continue;
|
||||
}
|
||||
// Transform token with side effects
|
||||
res = transformer.transform( res.token, cb, this, this.prevToken );
|
||||
res = transformer.transform( res.token, this, cbOrPrevToken );
|
||||
// XXX: Sync transform:
|
||||
// res = transformer.transform( res.token, this, this.prevToken );
|
||||
// XXX: Async transform:
|
||||
|
@ -269,7 +269,7 @@ TokenTransformManager.prototype._transformTagToken = function ( token, cb, phase
|
|||
* @param {Array} ts List of token transformers for this token type.
|
||||
* @returns {Object} Token(s) and async indication.
|
||||
*/
|
||||
TokenTransformManager.prototype._transformToken = function ( token, cb, phaseEndRank, ts ) {
|
||||
TokenTransformManager.prototype._transformToken = function ( token, phaseEndRank, ts, cbOrPrevToken ) {
|
||||
// prepend 'any' transformers
|
||||
var anyTrans = this.transformers.any;
|
||||
if ( anyTrans.length ) {
|
||||
|
@ -290,7 +290,7 @@ TokenTransformManager.prototype._transformToken = function ( token, cb, phaseEnd
|
|||
// XXX: consider moving the rank out of the token itself to avoid
|
||||
// transformations messing with it in broken ways. Not sure if
|
||||
// some transformations need to manipulate it though. gwicke
|
||||
res = transformer.transform( res.token, cb, this, this.prevToken );
|
||||
res = transformer.transform( res.token, this, cbOrPrevToken );
|
||||
if ( !res.token ||
|
||||
res.token.type !== token.type ) {
|
||||
this._resetTokenRank ( res, transformer );
|
||||
|
@ -489,26 +489,26 @@ AsyncTokenTransformManager.prototype.transformTokens = function ( tokens, parent
|
|||
|
||||
switch ( token.constructor ) {
|
||||
case String:
|
||||
res = this._transformToken( token, cb, phaseEndRank, ts.text );
|
||||
res = this._transformToken( token, phaseEndRank, ts.text, cb );
|
||||
break;
|
||||
case NlTk:
|
||||
res = this._transformToken( token, cb, phaseEndRank, ts.newline );
|
||||
res = this._transformToken( token, phaseEndRank, ts.newline, cb );
|
||||
break;
|
||||
case TagTk:
|
||||
case EndTagTk:
|
||||
case SelfclosingTagTk:
|
||||
res = this._transformTagToken( token, cb, phaseEndRank );
|
||||
res = this._transformTagToken( token, phaseEndRank, cb );
|
||||
break;
|
||||
default:
|
||||
switch( token.type ) {
|
||||
case 'COMMENT':
|
||||
res = this._transformToken( token, cb, phaseEndRank, ts.comment);
|
||||
res = this._transformToken( token, phaseEndRank, ts.comment, cb );
|
||||
break;
|
||||
case 'END':
|
||||
res = this._transformToken( token, cb, phaseEndRank, ts.end );
|
||||
res = this._transformToken( token, phaseEndRank, ts.end, cb );
|
||||
break;
|
||||
default:
|
||||
res = this._transformToken( token, cb, phaseEndRank, ts.martian );
|
||||
res = this._transformToken( token, phaseEndRank, ts.martian, cb );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -670,27 +670,27 @@ SyncTokenTransformManager.prototype.onChunk = function ( tokens ) {
|
|||
|
||||
switch( token.constructor ) {
|
||||
case String:
|
||||
res = this._transformToken( token, cb, this.phaseEndRank,
|
||||
ts.text );
|
||||
res = this._transformToken( token, this.phaseEndRank,
|
||||
ts.text, this.prevToken );
|
||||
break;
|
||||
case NlTk:
|
||||
res = this._transformToken( token, cb, this.phaseEndRank, ts.newline );
|
||||
res = this._transformToken( token, this.phaseEndRank, ts.newline, this.prevToken );
|
||||
break;
|
||||
case TagTk:
|
||||
case EndTagTk:
|
||||
case SelfclosingTagTk:
|
||||
res = this._transformTagToken( token, cb, this.phaseEndRank );
|
||||
res = this._transformTagToken( token, this.phaseEndRank, this.prevToken );
|
||||
break;
|
||||
default:
|
||||
switch( token.type ) {
|
||||
case 'COMMENT':
|
||||
res = this._transformToken( token, cb, this.phaseEndRank, ts.comment );
|
||||
res = this._transformToken( token, this.phaseEndRank, ts.comment, this.prevToken );
|
||||
break;
|
||||
case 'END':
|
||||
res = this._transformToken( token, cb, this.phaseEndRank, ts.end );
|
||||
res = this._transformToken( token, this.phaseEndRank, ts.end, this.prevToken );
|
||||
break;
|
||||
default:
|
||||
res = this._transformToken( token, cb, this.phaseEndRank, ts.martian );
|
||||
res = this._transformToken( token, this.phaseEndRank, ts.martian, this.prevToken );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue