]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
feat(compiler): accept line offset in codeframe
authorEvan You <yyx990803@gmail.com>
Fri, 13 Dec 2019 23:01:04 +0000 (18:01 -0500)
committerEvan You <yyx990803@gmail.com>
Fri, 13 Dec 2019 23:01:04 +0000 (18:01 -0500)
packages/compiler-core/src/index.ts
packages/shared/src/codeframe.ts

index 723fe8c3b21d01c4c9ef23cbd1fa9d556061b654..b1304a498c5bcd093d80476a2c1325106dad7492 100644 (file)
@@ -36,6 +36,7 @@ import { generateCodeFrame as _genCodeFrame } from '@vue/shared'
 const generateCodeFrame = _genCodeFrame as (
   source: string,
   start?: number,
-  end?: number
+  end?: number,
+  lineOffset?: number
 ) => string
 export { generateCodeFrame }
index 890675432c7e6afc270272186e38176e5a7eed5b..22b283a23e6c42a31c46caddaeba5aca3db01fac 100644 (file)
@@ -2,8 +2,9 @@ const range: number = 2
 
 export function generateCodeFrame(
   source: string,
-  start: number = 0,
-  end: number = source.length
+  start = 0,
+  end = source.length,
+  lineOffset = 0
 ): string {
   const lines = source.split(/\r?\n/)
   let count = 0
@@ -13,9 +14,8 @@ export function generateCodeFrame(
     if (count >= start) {
       for (let j = i - range; j <= i + range || end > count; j++) {
         if (j < 0 || j >= lines.length) continue
-        res.push(
-          `${j + 1}${' '.repeat(3 - String(j + 1).length)}|  ${lines[j]}`
-        )
+        const line = j + 1 + lineOffset
+        res.push(`${line}${' '.repeat(3 - String(line).length)}|  ${lines[j]}`)
         const lineLength = lines[j].length
         if (j === i) {
           // push underline