diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/parse5/lib/extensions/error-reporting | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/parse5/lib/extensions/error-reporting')
4 files changed, 136 insertions, 0 deletions
diff --git a/node_modules/parse5/lib/extensions/error-reporting/mixin-base.js b/node_modules/parse5/lib/extensions/error-reporting/mixin-base.js new file mode 100644 index 0000000..1e30cfc --- /dev/null +++ b/node_modules/parse5/lib/extensions/error-reporting/mixin-base.js @@ -0,0 +1,43 @@ +'use strict'; + +const Mixin = require('../../utils/mixin'); + +class ErrorReportingMixinBase extends Mixin { +    constructor(host, opts) { +        super(host); + +        this.posTracker = null; +        this.onParseError = opts.onParseError; +    } + +    _setErrorLocation(err) { +        err.startLine = err.endLine = this.posTracker.line; +        err.startCol = err.endCol = this.posTracker.col; +        err.startOffset = err.endOffset = this.posTracker.offset; +    } + +    _reportError(code) { +        const err = { +            code: code, +            startLine: -1, +            startCol: -1, +            startOffset: -1, +            endLine: -1, +            endCol: -1, +            endOffset: -1 +        }; + +        this._setErrorLocation(err); +        this.onParseError(err); +    } + +    _getOverriddenMethods(mxn) { +        return { +            _err(code) { +                mxn._reportError(code); +            } +        }; +    } +} + +module.exports = ErrorReportingMixinBase; diff --git a/node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js b/node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js new file mode 100644 index 0000000..107ec5a --- /dev/null +++ b/node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js @@ -0,0 +1,52 @@ +'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; diff --git a/node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js b/node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js new file mode 100644 index 0000000..398c966 --- /dev/null +++ b/node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js @@ -0,0 +1,24 @@ +'use strict'; + +const ErrorReportingMixinBase = require('./mixin-base'); +const PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin'); +const Mixin = require('../../utils/mixin'); + +class ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase { +    constructor(preprocessor, opts) { +        super(preprocessor, opts); + +        this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin); +        this.lastErrOffset = -1; +    } + +    _reportError(code) { +        //NOTE: avoid reporting error twice on advance/retreat +        if (this.lastErrOffset !== this.posTracker.offset) { +            this.lastErrOffset = this.posTracker.offset; +            super._reportError(code); +        } +    } +} + +module.exports = ErrorReportingPreprocessorMixin; diff --git a/node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js b/node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js new file mode 100644 index 0000000..219fcab --- /dev/null +++ b/node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js @@ -0,0 +1,17 @@ +'use strict'; + +const ErrorReportingMixinBase = require('./mixin-base'); +const ErrorReportingPreprocessorMixin = require('./preprocessor-mixin'); +const Mixin = require('../../utils/mixin'); + +class ErrorReportingTokenizerMixin extends ErrorReportingMixinBase { +    constructor(tokenizer, opts) { +        super(tokenizer, opts); + +        const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts); + +        this.posTracker = preprocessorMixin.posTracker; +    } +} + +module.exports = ErrorReportingTokenizerMixin;  | 
