MCPcopy
hub / github.com/livebud/bud / sourceFragment

Function sourceFragment

package/svelte/compiler.js:7972–8005  ·  view source on GitHub ↗
(error2, extraLines)

Source from the content-addressed store, hash-verified

7970 var OFFSET_CORRECTION = 60;
7971 var TAB_REPLACEMENT = " ";
7972 function sourceFragment(error2, extraLines) {
7973 function processLines(start, end) {
7974 return lines.slice(start, end).map(function(line2, idx) {
7975 var num = String(start + idx + 1);
7976 while (num.length < maxNumLength) {
7977 num = " " + num;
7978 }
7979 return num + " |" + line2;
7980 }).join("\n");
7981 }
7982 var lines = error2.source.split(/\r\n?|\n|\f/);
7983 var line = error2.line;
7984 var column = error2.column;
7985 var startLine = Math.max(1, line - extraLines) - 1;
7986 var endLine = Math.min(line + extraLines, lines.length + 1);
7987 var maxNumLength = Math.max(4, String(endLine).length) + 1;
7988 var cutLeft = 0;
7989 column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\t/g) || []).length;
7990 if (column > MAX_LINE_LENGTH) {
7991 cutLeft = column - OFFSET_CORRECTION + 3;
7992 column = OFFSET_CORRECTION - 2;
7993 }
7994 for (var i = startLine; i <= endLine; i++) {
7995 if (i >= 0 && i < lines.length) {
7996 lines[i] = lines[i].replace(/\t/g, TAB_REPLACEMENT);
7997 lines[i] = (cutLeft > 0 && lines[i].length > cutLeft ? "\u2026" : "") + lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) + (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? "\u2026" : "");
7998 }
7999 }
8000 return [
8001 processLines(startLine, line),
8002 new Array(column + maxNumLength + 2).join("-") + "^",
8003 processLines(line, endLine)
8004 ].filter(Boolean).join("\n");
8005 }
8006 var SyntaxError$1 = function(message, source, offset2, line, column) {
8007 var error2 = createCustomError("SyntaxError", message);
8008 error2.source = source;

Callers 1

SyntaxError$1Function · 0.85

Calls 4

processLinesFunction · 0.85
replaceMethod · 0.80
StringStruct · 0.50
matchMethod · 0.45

Tested by

no test coverage detected