Skip to content

Commit

Permalink
Set leading dashes when sorting folders (#149)
Browse files Browse the repository at this point in the history
  • Loading branch information
pascalre committed Oct 22, 2023
1 parent ebfb6b9 commit 1c6ec05
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 16 deletions.
8 changes: 3 additions & 5 deletions src/controller/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,7 @@ export class Controller {
return []
}
}
if (this.settings.useLeadingDashes) {
newText = `---\n${newText}`
}
newText = this.yamlutil.setLeadingDashes(newText)
return this.applyEdits(newText)
}

Expand Down Expand Up @@ -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)
Expand Down
5 changes: 3 additions & 2 deletions src/test/files/getYamlFilesInDirectory/folder1/file.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
key: value
akey: value
---
akey: value
key: value
5 changes: 3 additions & 2 deletions src/test/files/getYamlFilesInDirectory/folder1/file2.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
key: value
akey: value
---
akey: value
key: value
11 changes: 7 additions & 4 deletions src/test/suite/controller/controller.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
})
})

Expand Down
1 change: 1 addition & 0 deletions src/test/suite/util/resources/subfolder/.customyaml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
---
foo: bar
16 changes: 14 additions & 2 deletions src/test/suite/util/yaml-util.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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" +
Expand Down
4 changes: 3 additions & 1 deletion src/util/file-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`)
Expand Down
7 changes: 7 additions & 0 deletions src/util/yaml-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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")) {
Expand Down

0 comments on commit 1c6ec05

Please sign in to comment.