Sha256: be20dde108b336de18eba6886dddb10bda4d73fdb4fcc96ff07349667dd44a5d
Contents?: true
Size: 771 Bytes
Versions: 4
Compression:
Stored size: 771 Bytes
Contents
function pad(num, len) { let result = String(num); return result + repeat(' ', len - result.length); } function repeat(str, times) { let result = ''; while (times--) result += str; return result; } export default function getSnippet(source, loc, length = 1) { const first = Math.max(loc.line - 5, 0); const last = loc.line; const numDigits = String(last).length; const lines = source.split('\n').slice(first, last); const lastLine = lines[lines.length - 1]; const offset = lastLine.slice(0, loc.column).replace(/\t/g, ' ').length; let snippet = lines .map((line, i) => `${pad(i + first + 1, numDigits)} : ${line.replace(/\t/g, ' ')}`) .join('\n'); snippet += '\n' + repeat(' ', numDigits + 3 + offset) + repeat('^', length); return snippet; }
Version data entries
4 entries across 4 versions & 1 rubygems