Allow falsey, yet valid options for codeFrameColumns() (#7341)

Allow for overriding default linesAbove/linesBelow values.
This commit is contained in:
Steven Hargrove 2018-02-08 16:52:12 -05:00 committed by Henry Zhu
parent 493996e02a
commit a01007a3d3
2 changed files with 52 additions and 3 deletions

View File

@ -127,9 +127,7 @@ function getMarkerLines(
loc.start,
);
const endLoc: Location = Object.assign({}, startLoc, loc.end);
const linesAbove = opts.linesAbove || 2;
const linesBelow = opts.linesBelow || 3;
const { linesAbove = 2, linesBelow = 3 } = opts || {};
const startLine = startLoc.line;
const startColumn = startLoc.column;
const endLine = endLoc.line;

View File

@ -184,6 +184,57 @@ describe("@babel/code-frame", function() {
);
});
it("opts.linesAbove no lines above", function() {
const rawLines = [
"class Foo {",
" constructor() {",
" console.log(arguments);",
" }",
"};",
].join("\n");
assert.equal(
codeFrameColumns(rawLines, { start: { line: 2 } }, { linesAbove: 0 }),
[
"> 2 | constructor() {",
" 3 | console.log(arguments);",
" 4 | }",
" 5 | };",
].join("\n"),
);
});
it("opts.linesBelow no lines below", function() {
const rawLines = [
"class Foo {",
" constructor() {",
" console.log(arguments);",
" }",
"};",
].join("\n");
assert.equal(
codeFrameColumns(rawLines, { start: { line: 2 } }, { linesBelow: 0 }),
[" 1 | class Foo {", "> 2 | constructor() {"].join("\n"),
);
});
it("opts.linesBelow single line", function() {
const rawLines = [
"class Foo {",
" constructor() {",
" console.log(arguments);",
" }",
"};",
].join("\n");
assert.equal(
codeFrameColumns(
rawLines,
{ start: { line: 2 } },
{ linesAbove: 0, linesBelow: 0 },
),
["> 2 | constructor() {"].join("\n"),
);
});
it("opts.forceColor", function() {
const marker = chalk.red.bold;
const gutter = chalk.grey;