summaryrefslogtreecommitdiff
path: root/node_modules/postcss/lib/css-syntax-error.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-10-13 10:37:19 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-10-13 10:37:19 +0800
commite29b244aeab08ea36fb385c7beb2ad0560217039 (patch)
treec66b744dc29573f1acc871862937a23f1b80e6bf /node_modules/postcss/lib/css-syntax-error.js
parent62c2881629e6413a8fec6d3dd092e4568e2a81dc (diff)
bump: @babel/cli 7.25.6 → 7.25.7, @babel/core 7.25.2 → 7.25.8, @babel/preset-env 7.25.4 → 7.25.8, postcss 8.4.41 → 8.4.47, swup 4.7.0 → 4.8.1
Diffstat (limited to 'node_modules/postcss/lib/css-syntax-error.js')
-rw-r--r--node_modules/postcss/lib/css-syntax-error.js61
1 files changed, 47 insertions, 14 deletions
diff --git a/node_modules/postcss/lib/css-syntax-error.js b/node_modules/postcss/lib/css-syntax-error.js
index 16930332..275a4f64 100644
--- a/node_modules/postcss/lib/css-syntax-error.js
+++ b/node_modules/postcss/lib/css-syntax-error.js
@@ -52,37 +52,70 @@ class CssSyntaxError extends Error {
let css = this.source
if (color == null) color = pico.isColorSupported
- if (terminalHighlight) {
- if (color) css = terminalHighlight(css)
- }
-
- let lines = css.split(/\r?\n/)
- let start = Math.max(this.line - 3, 0)
- let end = Math.min(this.line + 2, lines.length)
- let maxWidth = String(end).length
-
- let mark, aside
+ let aside = text => text
+ let mark = text => text
+ let highlight = text => text
if (color) {
let { bold, gray, red } = pico.createColors(true)
mark = text => bold(red(text))
aside = text => gray(text)
- } else {
- mark = aside = str => str
+ if (terminalHighlight) {
+ highlight = text => terminalHighlight(text)
+ }
}
+ let lines = css.split(/\r?\n/)
+ let start = Math.max(this.line - 3, 0)
+ let end = Math.min(this.line + 2, lines.length)
+ let maxWidth = String(end).length
+
return lines
.slice(start, end)
.map((line, index) => {
let number = start + 1 + index
let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '
if (number === this.line) {
+ if (line.length > 160) {
+ let padding = 20
+ let subLineStart = Math.max(0, this.column - padding)
+ let subLineEnd = Math.max(
+ this.column + padding,
+ this.endColumn + padding
+ )
+ let subLine = line.slice(subLineStart, subLineEnd)
+
+ let spacing =
+ aside(gutter.replace(/\d/g, ' ')) +
+ line
+ .slice(0, Math.min(this.column - 1, padding - 1))
+ .replace(/[^\t]/g, ' ')
+
+ return (
+ mark('>') +
+ aside(gutter) +
+ highlight(subLine) +
+ '\n ' +
+ spacing +
+ mark('^')
+ )
+ }
+
let spacing =
aside(gutter.replace(/\d/g, ' ')) +
line.slice(0, this.column - 1).replace(/[^\t]/g, ' ')
- return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^')
+
+ return (
+ mark('>') +
+ aside(gutter) +
+ highlight(line) +
+ '\n ' +
+ spacing +
+ mark('^')
+ )
}
- return ' ' + aside(gutter) + line
+
+ return ' ' + aside(gutter) + highlight(line)
})
.join('\n')
}