mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-06 20:11:38 +08:00
This also adds the MPL-2.0 license as valid license to our allowed licenses list. R=jacktfranklin@chromium.org DISABLE_THIRD_PARTY_CHECK=NPM update Change-Id: I2a3bee2ffc0b328a0579ab62ab27f938bdc876c8 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2593130 Commit-Queue: Jack Franklin <jacktfranklin@chromium.org> Reviewed-by: Jack Franklin <jacktfranklin@chromium.org> Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
const Mixin = require('../../utils/mixin');
|
|
|
|
class PositionTrackingPreprocessorMixin extends Mixin {
|
|
constructor(preprocessor) {
|
|
super(preprocessor);
|
|
|
|
this.preprocessor = preprocessor;
|
|
this.isEol = false;
|
|
this.lineStartPos = 0;
|
|
this.droppedBufferSize = 0;
|
|
|
|
this.offset = 0;
|
|
this.col = 0;
|
|
this.line = 1;
|
|
}
|
|
|
|
_getOverriddenMethods(mxn, orig) {
|
|
return {
|
|
advance() {
|
|
const pos = this.pos + 1;
|
|
const ch = this.html[pos];
|
|
|
|
//NOTE: LF should be in the last column of the line
|
|
if (mxn.isEol) {
|
|
mxn.isEol = false;
|
|
mxn.line++;
|
|
mxn.lineStartPos = pos;
|
|
}
|
|
|
|
if (ch === '\n' || (ch === '\r' && this.html[pos + 1] !== '\n')) {
|
|
mxn.isEol = true;
|
|
}
|
|
|
|
mxn.col = pos - mxn.lineStartPos + 1;
|
|
mxn.offset = mxn.droppedBufferSize + pos;
|
|
|
|
return orig.advance.call(this);
|
|
},
|
|
|
|
retreat() {
|
|
orig.retreat.call(this);
|
|
|
|
mxn.isEol = false;
|
|
mxn.col = this.pos - mxn.lineStartPos + 1;
|
|
},
|
|
|
|
dropParsedChunk() {
|
|
const prevPos = this.pos;
|
|
|
|
orig.dropParsedChunk.call(this);
|
|
|
|
const reduction = prevPos - this.pos;
|
|
|
|
mxn.lineStartPos -= reduction;
|
|
mxn.droppedBufferSize += reduction;
|
|
mxn.offset = mxn.droppedBufferSize + this.pos;
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = PositionTrackingPreprocessorMixin;
|