diff --git a/src/controller/controller.ts b/src/controller/controller.ts index 85f2c99..1770979 100644 --- a/src/controller/controller.ts +++ b/src/controller/controller.ts @@ -79,9 +79,7 @@ export class Controller { return [] } } - if (this.settings.useLeadingDashes) { - newText = `---\n${newText}` - } + newText = this.yamlutil.setLeadingDashes(newText) return this.applyEdits(newText) } @@ -129,8 +127,8 @@ export class Controller { return [] as TextEdit[] } }) - if (this.editor.selection.isEmpty && this.settings.useLeadingDashes) { - newText = `---\n${newText}` + if (this.editor.selection.isEmpty) { + newText = this.yamlutil.setLeadingDashes(newText) } this.vscodeadapter.showMessage(Severity.INFO, "Keys resorted successfully") return this.applyEdits(newText) diff --git a/src/test/files/getYamlFilesInDirectory/folder1/file.yaml b/src/test/files/getYamlFilesInDirectory/folder1/file.yaml index db13cb8..a437969 100644 --- a/src/test/files/getYamlFilesInDirectory/folder1/file.yaml +++ b/src/test/files/getYamlFilesInDirectory/folder1/file.yaml @@ -1,2 +1,3 @@ -key: value -akey: value \ No newline at end of file +--- +akey: value +key: value \ No newline at end of file diff --git a/src/test/files/getYamlFilesInDirectory/folder1/file2.yaml b/src/test/files/getYamlFilesInDirectory/folder1/file2.yaml index db13cb8..a437969 100644 --- a/src/test/files/getYamlFilesInDirectory/folder1/file2.yaml +++ b/src/test/files/getYamlFilesInDirectory/folder1/file2.yaml @@ -1,2 +1,3 @@ -key: value -akey: value \ No newline at end of file +--- +akey: value +key: value \ No newline at end of file diff --git a/src/test/suite/controller/controller.test.ts b/src/test/suite/controller/controller.test.ts index a0b2ae6..dcc5ed2 100644 --- a/src/test/suite/controller/controller.test.ts +++ b/src/test/suite/controller/controller.test.ts @@ -6,19 +6,22 @@ import { Uri, commands, window, workspace } from "vscode" import { Controller } from "../../../controller/controller" + suite("Test sortYamlFiles", () => { + const fileContent = "---\nakey: value\nkey: value" + test("should sort all yaml files in directory", async () => { const uri = Uri.parse(resolve("./src/test/files/getYamlFilesInDirectory/folder1")) await commands.executeCommand("vscode-yaml-sort.sortYamlFilesInDirectory", uri) let sortedFile = readFileSync("./src/test/files/getYamlFilesInDirectory/folder1/file.yaml", "utf-8").toString() - equal(sortedFile, "akey: value\nkey: value") + equal(sortedFile, fileContent) sortedFile = readFileSync("./src/test/files/getYamlFilesInDirectory/folder1/file2.yaml", "utf-8").toString() - equal(sortedFile, "akey: value\nkey: value") + equal(sortedFile, fileContent) - writeFileSync("./src/test/files/getYamlFilesInDirectory/folder1/file.yaml", "key: value\nakey: value") - writeFileSync("./src/test/files/getYamlFilesInDirectory/folder1/file2.yaml", "key: value\nakey: value") + writeFileSync("./src/test/files/getYamlFilesInDirectory/folder1/file.yaml", fileContent) + writeFileSync("./src/test/files/getYamlFilesInDirectory/folder1/file2.yaml", fileContent) }) }) diff --git a/src/test/suite/util/resources/subfolder/.customyaml b/src/test/suite/util/resources/subfolder/.customyaml index 7daacd5..95f455c 100644 --- a/src/test/suite/util/resources/subfolder/.customyaml +++ b/src/test/suite/util/resources/subfolder/.customyaml @@ -1 +1,2 @@ +--- foo: bar \ No newline at end of file diff --git a/src/test/suite/util/yaml-util.test.ts b/src/test/suite/util/yaml-util.test.ts index 695814a..3be04b0 100644 --- a/src/test/suite/util/yaml-util.test.ts +++ b/src/test/suite/util/yaml-util.test.ts @@ -52,9 +52,21 @@ suite("Test sortArrays", () => { }) }) -suite("Test dumpYaml", () => { +suite("Test YamlUtil - setLeadingDashes()", () => { + test("when setting useLeadingDashes is `true` should prepend `---\n` to text", () => { + const yamlutil = new YamlUtil() + const text = "lorem ipsum" + yamlutil.settings.useLeadingDashes = false + equal(yamlutil.setLeadingDashes(text), text) - test("when useCustomSortRecursively is set to `true` should recursively use customSort", () => { + yamlutil.settings.useLeadingDashes = true + const expected = "---\nlorem ipsum" + equal(yamlutil.setLeadingDashes(text), expected) + }) +}) + +suite("Test dumpYaml", () => { + test("when useCustomSortRecursively is set to`true` should recursively use customSort", () => { const actual = "keyword1: value\n" + "keyword: value\n" + diff --git a/src/util/file-util.ts b/src/util/file-util.ts index ef49468..f802118 100644 --- a/src/util/file-util.ts +++ b/src/util/file-util.ts @@ -27,10 +27,12 @@ export class FileUtil { } sortFile(file: string) { + const yamlutil = new YamlUtil() const text = readFileSync(file, this.encoding).toString() - const sortedYaml = new YamlUtil().sortYaml(text, 0) + let sortedYaml = yamlutil.sortYaml(text, 0) if (sortedYaml) { + sortedYaml = yamlutil.setLeadingDashes(sortedYaml) writeFileSync(file, sortedYaml) } else { throw new Error(`File ${file} could not be sorted`) diff --git a/src/util/yaml-util.ts b/src/util/yaml-util.ts index b9a49af..6166df7 100644 --- a/src/util/yaml-util.ts +++ b/src/util/yaml-util.ts @@ -54,6 +54,13 @@ export class YamlUtil { return (!text.startsWith("|") && text.includes(":")) || text.startsWith("-") } + setLeadingDashes(text: string) { + if (this.settings.useLeadingDashes) { + return `---\n${text}` + } + return text + } + transformMultilineValue(text: string) { let result = prependWhitespacesOnEachLine(text, this.settings.indent) if (text.endsWith("\n")) {