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

Version Path
jass-0.9.5 vendor/node_modules/buble/src/utils/getSnippet.js
jass-0.9.4 vendor/node_modules/buble/src/utils/getSnippet.js
jass-0.9.3 vendor/node_modules/buble/src/utils/getSnippet.js
jass-0.9.1 vendor/node_modules/buble/src/utils/getSnippet.js