@@ -15,12 +15,11 @@ interface IPropertyNameMaker {
1515 /* *
1616 * make legal property name from a input raw string
1717 */
18- fun makePropertyName (rawString : String , needTransformtToIlegalNameMaker : Boolean ): String
18+ fun makePropertyName (rawString : String , needTransformToLegalName : Boolean ): String
1919
2020
2121}
2222
23-
2423object PropertyNameMaker : IPropertyNameMaker {
2524
2625
@@ -32,33 +31,73 @@ object PropertyNameMaker : IPropertyNameMaker {
3231
3332 private val ilegalCharactor = listOf<String >(
3433 " \\ +" , " \\ -" , " \\ *" , " /" , " %" , " =" , " &" , " |" , " !" , " \\ [" , " \\ ]" , " \\ {" , " \\ }" , " \\ (" , " \\ )"
35- , " ," , " ." , " :" , " \\ ?" , " \\ >" , " \\ <" , " @" , " ;" , " '" , " \\ `" , " \\ ~" , " \\ $" , " ^" , " #" , " \\ " , " /" , " "
34+ , " ," , " ." , " :" , " \\ ?" , " \\ >" , " \\ <" , " @" , " ;" , " '" , " \\ `" , " \\ ~" , " \\ $" , " ^" , " #" , " \\ " , " /"
3635 )
3736
37+ @JvmStatic
38+ fun main (args : Array <String >) {
39+ println (PropertyNameMaker .ilegalCharactor)
40+ }
41+
3842 private val suffix = " X"
3943
4044 override fun makePropertyName (rawString : String ): String {
4145
4246 return rawString
4347 }
4448
45- override fun makePropertyName (rawString : String , needTransformtToIlegalNameMaker : Boolean ): String {
49+ override fun makePropertyName (rawString : String , needTransformToLegalName : Boolean ): String {
50+
51+ if (needTransformToLegalName) {
52+
53+ /* *
54+ * keep character " "
55+ */
56+ val pattern = " $ilegalCharactor " .replace(" " , " " )
4657
58+ val temp = rawString.replace(Regex (pattern), " " ).let {
4759
48- val pattern = " $ilegalCharactor "
60+ return @let removeStartNumber(it)
4961
50- val temp = rawString.replace( Regex (pattern), " " ). let {
62+ }
5163
52- return @let removeStartNumber(it )
64+ val lowerCamelCaseName = toLowerCamelCase(temp )
5365
66+ val legalName = toBeLegalName(lowerCamelCaseName)
67+
68+ return legalName
69+
70+ } else {
71+ return rawString
5472 }
5573
74+ }
5675
57- return if (temp in ilegalPropertyNameList) {
58- return temp + suffix
76+ private fun toBeLegalName (name : String ): String {
77+ val legalName = if (name in ilegalPropertyNameList) {
78+ name + suffix
5979 } else {
60- temp
80+ name
6181 }
82+ return legalName
83+ }
84+
85+ private fun toLowerCamelCase (temp : String ): String {
86+
87+ val stringBuilder = StringBuilder ()
88+
89+ temp.split(Regex (" [_ ]" )).forEach {
90+ if (it.isNotBlank()) {
91+ stringBuilder.append(it.substring(0 , 1 ).toUpperCase().plus(it.substring(1 )))
92+ }
93+ }
94+
95+ val camelCaseName = stringBuilder.toString()
96+
97+ val lowerCamelCaseName = camelCaseName.substring(0 , 1 ).toLowerCase().plus(camelCaseName.substring(1 ))
98+
99+ return lowerCamelCaseName
100+
62101 }
63102
64103 /* *
0 commit comments