Sha256: 4c727e7b022d1d52ffe0814a5c5eea83bf3a30acf13a42725a3313519f9723b6

Contents?: true

Size: 1.69 KB

Versions: 22

Compression:

Stored size: 1.69 KB

Contents

'use strict';

const ErrorReportingMixinBase = require('./mixin-base');
const ErrorReportingTokenizerMixin = require('./tokenizer-mixin');
const LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');
const Mixin = require('../../utils/mixin');

class ErrorReportingParserMixin extends ErrorReportingMixinBase {
    constructor(parser, opts) {
        super(parser, opts);

        this.opts = opts;
        this.ctLoc = null;
        this.locBeforeToken = false;
    }

    _setErrorLocation(err) {
        if (this.ctLoc) {
            err.startLine = this.ctLoc.startLine;
            err.startCol = this.ctLoc.startCol;
            err.startOffset = this.ctLoc.startOffset;

            err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;
            err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;
            err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;
        }
    }

    _getOverriddenMethods(mxn, orig) {
        return {
            _bootstrap(document, fragmentContext) {
                orig._bootstrap.call(this, document, fragmentContext);

                Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);
                Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);
            },

            _processInputToken(token) {
                mxn.ctLoc = token.location;

                orig._processInputToken.call(this, token);
            },

            _err(code, options) {
                mxn.locBeforeToken = options && options.beforeToken;
                mxn._reportError(code);
            }
        };
    }
}

module.exports = ErrorReportingParserMixin;

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
appmap-0.72.2 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.72.1 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.72.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.71.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.70.2 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.70.1 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.70.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.69.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.68.2 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.68.1 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.68.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.67.1 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.67.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.66.2 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.66.1 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.66.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.65.1 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.65.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.64.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js
appmap-0.63.0 ./node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js