Skip to content

Commit 7ff1da7

Browse files
committed
替换 AUC 模板 DSL
1 parent 8ea4c20 commit 7ff1da7

6 files changed

Lines changed: 75 additions & 128 deletions

File tree

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package com.dengzii.plugin.template.model
55
import com.dengzii.plugin.template.utils.Logger
66
import java.io.File
77
import java.util.*
8+
import java.util.regex.Pattern
89

910
/**
1011
* <pre>
@@ -45,6 +46,7 @@ open class FileTreeNode() {
4546
companion object {
4647

4748
private val TAG = FileTreeNode::class.java.simpleName
49+
private val sPathSplitPattern = Pattern.compile("[./]")
4850

4951
fun root(path: String): FileTreeNode {
5052
val root = File(path)
@@ -109,7 +111,7 @@ open class FileTreeNode() {
109111
* get the real name replace with placeholder
110112
*/
111113
fun getRealName(): String {
112-
return name.replacePlaceholder(getPlaceholderInherit())
114+
return name.replacePlaceholder(getPlaceholderInherit(), !isDir)
113115
}
114116

115117
fun getFileTemplateInherit(): MutableMap<String, String>? {
@@ -220,7 +222,7 @@ open class FileTreeNode() {
220222
* @param dirs The dirs list to create tree
221223
* @param parent The parent of current node
222224
*/
223-
open fun createDirs(dirs: MutableList<String>, parent: FileTreeNode): FileTreeNode {
225+
fun createDirs(dirs: MutableList<String>, parent: FileTreeNode): FileTreeNode {
224226
if (dirs.isEmpty()) {
225227
return parent
226228
}
@@ -341,13 +343,18 @@ open class FileTreeNode() {
341343
return "FileTreeNode(path='${getPath()}' isDir=$isDir, fileTemplate=${getTemplateFile()}, children=${children.size})"
342344
}
343345

344-
private fun String.replacePlaceholder(placeholders: Map<String, String>?): String {
346+
private fun String.replacePlaceholder(placeholders: Map<String, String>?, capitalize: Boolean = false): String {
345347
var after = this
346348
if (placeholders.isNullOrEmpty()) {
347349
return this
348350
}
349351
placeholders.forEach { (k, v) ->
350-
after = after.replace("\${$k}", v)
352+
val replaced = if (capitalize) {
353+
v.toLowerCase().capitalize()
354+
} else {
355+
v
356+
}
357+
after = after.replace("\${$k}", replaced)
351358
}
352359
return after
353360
}

src/com/dengzii/plugin/template/template/AndroidModuleTempateExtensions.kt

Lines changed: 0 additions & 68 deletions
This file was deleted.

src/com/dengzii/plugin/template/template/AucTemplate.kt

Lines changed: 35 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.dengzii.plugin.template.template
22

33
import com.dengzii.plugin.template.model.FileTreeDsl
4-
import com.dengzii.plugin.template.model.FileTreeNode
54

65
/**
76
* <pre>
@@ -24,7 +23,7 @@ object AucTemplate {
2423

2524
private val aucPlaceholders: () -> MutableMap<String, String> = {
2625
mutableMapOf(
27-
Pair("PACKAGE_NAME", "com.example"),
26+
Pair("PACKAGE_NAME", "com/example"),
2827
Pair("FEATURE_NAME", "feature"),
2928
Pair("APPLICATION_NAME", "App")
3029
)
@@ -36,26 +35,25 @@ object AucTemplate {
3635
placeholder("MODULE_NAME", "app")
3736

3837
dir("app") {
39-
src {
40-
main {
41-
java {
42-
pkg_name {
43-
feature_name {
44-
module_name {
45-
app_name.java
38+
dir("src") {
39+
dir("main") {
40+
dir("java") {
41+
dir("\${PACKAGE_NAME}") {
42+
dir("\${FEATURE_NAME}") {
43+
dir("app") {
4644
file("MainActivity.java")
45+
file("\${FEATURE_NAME}App.java")
4746
}
4847
}
4948
}
5049
}
5150
include(Template.ANDROID_RES)
52-
AndroidManifest.xml
51+
file("AndroidManifest.xml")
5352
}
54-
test {}
5553
}
56-
gitignore
57-
build.gradle
58-
proguard_rules.pro
54+
file(".gitignore")
55+
file("build.gradle")
56+
file("proguard-rules.pro")
5957
}
6058
}
6159

@@ -64,25 +62,24 @@ object AucTemplate {
6462
placeholders(aucPlaceholders())
6563
placeholder("MODULE_NAME", "pkg")
6664
dir("pkg") {
67-
src {
68-
main {
69-
java {
70-
pkg_name {
71-
feature_name {
72-
module_name {
65+
dir("src") {
66+
dir("main") {
67+
dir("java") {
68+
dir("\${PACKAGE_NAME}") {
69+
dir("\${FEATURE_NAME}") {
70+
dir("pkg") {
7371
file("\${FEATURE_NAME}ApiImpl.java")
7472
}
75-
7673
}
7774
}
7875
}
7976
include(Template.ANDROID_RES)
80-
AndroidManifest.xml
77+
file("AndroidManifest.xml")
8178
}
8279
}
83-
gitignore
84-
build.gradle
85-
proguard_rules.pro
80+
file(".gitignore")
81+
file("build.gradle")
82+
file("proguard-rules.pro")
8683
}
8784
}
8885

@@ -91,33 +88,31 @@ object AucTemplate {
9188
placeholders(aucPlaceholders())
9289
placeholder("MODULE_NAME", "export")
9390
dir("export") {
94-
src {
95-
main {
96-
java {
97-
pkg_name {
98-
feature_name {
99-
module_name {
100-
dir("api") {
101-
file("\${FEATURE_NAME}Api.java")
102-
}
103-
dir("bean")
91+
dir("src") {
92+
dir("main") {
93+
dir("java") {
94+
dir("\${PACKAGE_NAME}") {
95+
dir("\${FEATURE_NAME}") {
96+
dir("export") {
97+
file("\${FEATURE_NAME}Api.java")
10498
}
10599
}
106100
}
107101
}
108-
AndroidManifest.xml
102+
include(Template.ANDROID_RES)
103+
file("AndroidManifest.xml")
109104
}
110105
}
111-
gitignore
112-
build.gradle
113-
proguard_rules.pro
106+
file(".gitignore")
107+
file("build.gradle")
108+
file("proguard-rules.pro")
114109
}
115110
}
116111

117112
val MODULE = FileTreeDsl {
118113
fileTemplates(aucFileTemplates())
119114
placeholders(aucPlaceholders())
120-
feature_name {
115+
dir("\${FEATURE_NAME}") {
121116
include(APP)
122117
include(PKG)
123118
include(EXPORT)

src/com/dengzii/plugin/template/template/Template.kt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ import com.dengzii.plugin.template.model.FileTreeDsl
1414
object Template {
1515

1616
val ANDROID_RES = FileTreeDsl {
17-
res {
18-
drawable { }
19-
layout { }
20-
values { }
17+
dir("res") {
18+
dir("drawable") { }
19+
dir("layout") { }
20+
dir("values") { }
2121
}
2222
}
2323
val ANDROID_TEST = FileTreeDsl {
@@ -33,7 +33,7 @@ object Template {
3333
}
3434

3535
val EMPTY = FileTreeDsl {
36-
src
36+
file("src")
3737
}
3838

3939
val ANDROID_APP = FileTreeDsl {
@@ -44,25 +44,25 @@ object Template {
4444
fileTemplate("AndroidManifest.xml", "Template Manifest.xml")
4545
fileTemplate("build.gradle", "Template build.gradle")
4646

47-
module_name {
48-
src {
47+
dir("\${MODULE_NAME}") {
48+
dir("src") {
4949
include(ANDROID_TEST)
50-
main {
51-
java {
52-
pkg_name {
53-
module_name {
50+
dir("main") {
51+
dir("java") {
52+
dir("\${PACKAGE_NAME}") {
53+
dir("\${MODULE_NAME}") {
5454
file("MainActivity.java")
5555
}
5656
}
5757
}
5858
include(ANDROID_RES)
59-
AndroidManifest.xml
59+
file("AndroidManifest.xml")
6060
}
6161
include(JUNIT_TEST)
6262
}
63-
gitignore
64-
build.gradle
65-
proguard_rules.pro
63+
file(".gitignore")
64+
file("build.gradle")
65+
file("ProGuard.pro")
6666
}
6767
}
6868
}

test/AucTemplateTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package test
2+
3+
import com.dengzii.plugin.template.template.AucTemplate
4+
import org.junit.Test
5+
6+
class AucTemplateTest {
7+
8+
@Test
9+
fun aucAppModuleTest() {
10+
println(AucTemplate.APP.getTreeGraph())
11+
}
12+
}

test/FileTreeDslTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package test
22

33
import com.dengzii.plugin.template.model.FileTreeDsl
44
import org.junit.Test
5+
import java.util.regex.Pattern
56

67
class FileTreeDslTest {
78

@@ -50,7 +51,7 @@ class FileTreeDslTest {
5051
placeholder("FILE_1", "first_file")
5152
placeholder("FILE_2", "second_file")
5253
file("\${FILE_1}.java")
53-
dir("com/example"){
54+
dir("com/example") {
5455
println(name)
5556
file("\${FILE_2}.java")
5657
}

0 commit comments

Comments
 (0)