Files

57 lines
1.5 KiB
JavaScript

const blockStyles = ["|", ">", "|+", "|-", ">+", ">-"];
const trailingSpace = ["", " ".repeat(3), " \t"];
const newlines = ["", "\n", "\n\n", "\n".repeat(3)];
const snippets = blockStyles.flatMap((blockStyle) =>
trailingSpace.flatMap((space) =>
newlines.flatMap((lines) =>
[
`foo: ${blockStyle}\n${lines}`,
// `foo: ${blockStyle}\n ${space}${lines}`,
`foo: ${blockStyle}\n x\n${lines}`,
`foo: ${blockStyle}\n x\n${space}\n${lines}`,
].flatMap((code) => [code, `${code}\n...`]),
),
),
);
runFormatTest(
{
importMeta: import.meta,
snippets: snippets.map((code) => ({
name: JSON.stringify(code),
code,
})),
},
["yaml"],
);
runFormatTest(
{
importMeta: import.meta,
snippets: [
{
name: "preserves trailing spaces in a stripped block literal",
code: "foo: |-\n value \n",
output: "foo: |-\n value \n",
},
{
name: "preserves trailing spaces before the next mapping item",
code: "foo: |-\n value \nbar: baz\n",
output: "foo: |-\n value \nbar: baz\n",
},
{
name: "preserves a trailing tab before the next sequence item",
code: "- >-\n value\t\n- next\n",
output: "- >-\n value\t\n- next\n",
},
{
name: "preserves trailing spaces before the next document",
code: "foo: |-\n value \n---\nbar: baz\n",
output: "foo: |-\n value \n---\nbar: baz\n",
},
],
},
["yaml"],
);