| 'use strict' |
| |
| let Container = require('./container') |
| let { my } = require('./symbols') |
| |
| class Warning { |
| constructor(text, opts = {}) { |
| this.type = 'warning' |
| this.text = text |
| |
| if (opts.node && opts.node.source) { |
| if (!opts.node[my]) { |
| // The node comes from another PostCSS copy in node_modules, so it does |
| // not have this copy’s methods. Container#normalize() rebuilds such |
| // nodes on insert, but a node passed straight to Result#warn() never |
| // goes through it. |
| Container.rebuild(opts.node) |
| } |
| let range = opts.node.rangeBy(opts) |
| this.line = range.start.line |
| this.column = range.start.column |
| this.endLine = range.end.line |
| this.endColumn = range.end.column |
| } |
| |
| for (let opt in opts) this[opt] = opts[opt] |
| } |
| |
| toString() { |
| if (this.node) { |
| return this.node.error(this.text, { |
| index: this.index, |
| plugin: this.plugin, |
| word: this.word |
| }).message |
| } |
| |
| if (this.plugin) { |
| return this.plugin + ': ' + this.text |
| } |
| |
| return this.text |
| } |
| } |
| |
| module.exports = Warning |
| Warning.default = Warning |