Skip to content

Commit ecc3948

Browse files
committed
ref(FileTreeNode): create dir by path
1 parent 3a0b88e commit ecc3948

3 files changed

Lines changed: 29 additions & 32 deletions

File tree

src/com/dengzii/plugin/template/model/FileTreeDsl.kt

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ class FileTreeDsl() : FileTreeNode() {
1111
return this
1212
}
1313

14+
operator fun FileTreeNode.invoke(block: FileTreeDsl.() -> Unit): FileTreeNode {
15+
block()
16+
return this
17+
}
18+
1419
constructor(parent: FileTreeDsl?, name: String, isDir: Boolean) : this() {
1520
this.name = name
1621
this.parent = parent
@@ -43,6 +48,7 @@ class FileTreeDsl() : FileTreeNode() {
4348
.filter {
4449
it.isNotBlank()
4550
}.toMutableList()
51+
println(dirs)
4652
createDirs(dirs, this)(block)
4753
}
4854

@@ -58,20 +64,4 @@ class FileTreeDsl() : FileTreeNode() {
5864
fileTemplates!![fileName] = template
5965
}
6066

61-
private fun createDirs(dirs: MutableList<String>, parent: FileTreeDsl): FileTreeNode {
62-
if (dirs.isEmpty()) {
63-
return parent
64-
}
65-
// the first dir
66-
val first = dirs[0]
67-
dirs.removeAt(0)
68-
val firstDir = FileTreeDsl(parent, first, true)
69-
val findChild = getChild(first, true)
70-
if (findChild != null) {
71-
return createDirs(dirs, findChild)
72-
}
73-
addChild(firstDir)
74-
// create child dir
75-
return createDirs(dirs, firstDir)
76-
}
7767
}

src/com/dengzii/plugin/template/model/FileTreeNode.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,17 @@ open class FileTreeNode() {
224224
if (dirs.isEmpty()) {
225225
return parent
226226
}
227-
val current = dirs[0]
227+
// the first dir
228+
val first = dirs.first()
228229
dirs.removeAt(0)
229-
val dirNode = FileTreeNode(parent, current, true)
230-
addChild(dirNode)
231-
return createDirs(dirs, dirNode)
230+
val newNode = FileTreeNode(parent, first, true)
231+
val find = getChild(first, true)
232+
if (find != null) {
233+
return createDirs(dirs, find)
234+
}
235+
parent.addChild(newNode)
236+
// create child dir
237+
return createDirs(dirs, newNode)
232238
}
233239

234240
/**

src/test/FileTreeDslTest.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,49 @@ import org.junit.Test
66
class FileTreeDslTest {
77

88
@Test
9-
fun createSimpleFileTreeTest(){
9+
fun createSimpleFileTreeTest() {
1010
val tree = FileTreeDsl {
1111
file("file")
12-
dir("dir1"){
12+
dir("dir1") {
1313
file("file2")
14-
dir("dir2"){
15-
dir("dir3"){
14+
dir("dir2") {
15+
dir("dir3") {
1616
dir("dir4")
1717
}
18-
dir("dir5"){
18+
dir("dir5") {
1919
dir("dir6")
2020
dir("dir9")
2121
}
2222
}
2323
file("file3")
2424
}
25-
dir("dir7"){
25+
dir("dir7") {
2626
dir("dir8")
2727
}
2828
}
2929
println(tree.getTreeGraph())
3030
}
3131

3232
@Test
33-
fun createPackageDirTest(){
33+
fun createPackageDirTest() {
3434

3535
val tree = FileTreeDsl {
3636
dir("src") {
37-
dir("com/example/app"){
37+
dir("com/example/app") {
3838
file("Main.java")
3939
}
40-
dir("com/example")
40+
dir("com/example/app1")
4141
}
4242
file("README.md")
4343
}
4444
println(tree.getTreeGraph())
4545
}
46+
4647
@Test
47-
fun fileNamePlaceholderTest(){
48+
fun fileNamePlaceholderTest() {
4849
val tree = FileTreeDsl {
49-
placeholder("FILE_1","first_file")
50-
placeholder("FILE_2","second_file")
50+
placeholder("FILE_1", "first_file")
51+
placeholder("FILE_2", "second_file")
5152
file("\${FILE_1}.java")
5253
file("\${FILE_2}.java")
5354
dir("com/exmpale")

0 commit comments

Comments
 (0)