blob: cdb0281db74a3529e5e46b2b582a7063aa4292fc [file] [log] [blame]
Tim van der Lippef2ea2c92021-11-08 10:55:56 +00001'use strict'
Mathias Bynens79e2cf02020-05-29 16:46:17 +02002
Tim van der Lippef2ea2c92021-11-08 10:55:56 +00003class Warning {
4 constructor(text, opts = {}) {
5 this.type = 'warning'
6 this.text = text
Alex Rudenko6c0f1612021-11-05 06:28:44 +00007
8 if (opts.node && opts.node.source) {
Tim van der Lippef2ea2c92021-11-08 10:55:56 +00009 let pos = opts.node.positionBy(opts)
10 this.line = pos.line
11 this.column = pos.column
Alex Rudenko6c0f1612021-11-05 06:28:44 +000012 }
13
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000014 for (let opt in opts) this[opt] = opts[opt]
Alex Rudenko6c0f1612021-11-05 06:28:44 +000015 }
Alex Rudenko6c0f1612021-11-05 06:28:44 +000016
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000017 toString() {
Mathias Bynens79e2cf02020-05-29 16:46:17 +020018 if (this.node) {
19 return this.node.error(this.text, {
20 plugin: this.plugin,
21 index: this.index,
22 word: this.word
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000023 }).message
Mathias Bynens79e2cf02020-05-29 16:46:17 +020024 }
25
26 if (this.plugin) {
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000027 return this.plugin + ': ' + this.text
Mathias Bynens79e2cf02020-05-29 16:46:17 +020028 }
29
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000030 return this.text
Mathias Bynens79e2cf02020-05-29 16:46:17 +020031 }
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000032}
Mathias Bynens79e2cf02020-05-29 16:46:17 +020033
Tim van der Lippef2ea2c92021-11-08 10:55:56 +000034module.exports = Warning
35Warning.default = Warning