Skip to content

Commit 9192d49

Browse files
author
seal
committed
Release version 1.2.1
Fix insert improt class code upon package declare Format property name and class name to camelcase
1 parent ff9f6a7 commit 9192d49

File tree

7 files changed

+99
-22
lines changed

7 files changed

+99
-22
lines changed

resources/META-INF/plugin.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<idea-plugin>
22
<id>wu.seal.tool.jsontokotlin</id>
33
<name>JsonToKotlinClass</name>
4-
<version>1.2</version>
4+
<version>1.2.1</version>
55
<vendor email="[email protected]" url="https://www.github.com/wuseal">Seal</vendor>
66

77
<description><![CDATA[
@@ -11,6 +11,10 @@
1111
]]></description>
1212

1313
<change-notes><![CDATA[
14+
1.2.1:
15+
* Fix insert improt class code upon package declare
16+
* Format property name and class name to camelcase name
17+
1.2:
1418
* Add support for generate anotations for target json lib --gson<br>
1519
* Add Comment option to switch the comment content to append<br>
1620
]]>

src/wu/seal/jsontokotlin/ClassName.kt

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,55 @@ object KClassName : IKClassName {
2020

2121
private val ilegalCharactor = listOf<String>(
2222
"\\+", "\\-", "\\*", "/", "%", "=", "&", "|", "!", "\\[", "\\]", "\\{", "\\}", "\\(", "\\)"
23-
, ",", ".", ":", "\\?", "\\>", "\\<", "@", ";", "'", "\\`", "\\~", "\\$", "^", "#", "\\", "/", " "
23+
, ",", ".", ":", "\\?", "\\>", "\\<", "@", ";", "'", "\\`", "\\~", "\\$", "^", "#", "\\", "/"
2424
)
2525

2626
private val suffix = "X"
2727

2828

2929
override fun getLegalClassName(rawClassName: String): String {
3030

31-
val pattern = "${ilegalCharactor}"
31+
/**
32+
* keep " " character
33+
*/
34+
val pattern = "$ilegalCharactor".replace(" ", "")
3235

3336
val temp = rawClassName.replace(Regex(pattern), "").let {
3437

3538
return@let removeStartNumber(it)
3639

3740
}
3841

39-
return if (temp in ilegalClassNameList) {
40-
return temp + suffix
42+
val upperCamelCase = toUpperCamelCase(temp)
43+
44+
val legalName = toBeLegalName(upperCamelCase)
45+
46+
return legalName
47+
}
48+
49+
private fun toBeLegalName(name: String): String {
50+
val legalName = if (name in ilegalClassNameList) {
51+
name + suffix
4152
} else {
42-
temp
53+
name
54+
}
55+
return legalName
56+
}
57+
58+
private fun toUpperCamelCase(temp: String): String {
59+
60+
val stringBuilder = StringBuilder()
61+
62+
temp.split(Regex("[_ ]")).forEach {
63+
if (it.isNotBlank()) {
64+
stringBuilder.append(it.substring(0, 1).toUpperCase().plus(it.substring(1)))
65+
}
4366
}
67+
68+
val upperCamelCaseName = stringBuilder.toString()
69+
70+
return upperCamelCaseName
71+
4472
}
4573

4674
/**

src/wu/seal/jsontokotlin/ConfigManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.intellij.ide.util.PropertiesComponent
55
/**
66
* ConfigManager
77
* main purpose to obtain the detail corresponding config And the entry of modify
8-
* Created by LENOVO on 2017/9/13.
8+
* Created by Seal.Wu on 2017/9/13.
99
*/
1010
interface IConfigManager {
1111

@@ -16,7 +16,7 @@ interface IConfigManager {
1616
get() = "target_json_converter_lib_key"
1717

1818
private val IS_COMMENT_OFF: String
19-
get() = "need comment_key"
19+
get() = "need_comment_key"
2020

2121

2222
var isPropertiesVar: Boolean

src/wu/seal/jsontokotlin/ImportClassWriter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ object ImportClassWriter : IImportClassWriter {
5454
val text = editFile.text
5555
if (GsonSupporter.gsonAnotationImportString !in text) {
5656

57-
val index = Math.max(text.lastIndexOf("import"), 0)
58-
val tobeInsertEndline = editFile.getLineNumber(index)
59-
val insertIndex = if (index == 0) index else editFile.getLineEndOffset(tobeInsertEndline)
57+
val packageIndex = text.indexOf("package ")
58+
val importIndex = Math.max(text.lastIndexOf("import"), packageIndex)
59+
val insertIndex = if (importIndex == -1) 0 else editFile.getLineEndOffset(editFile.getLineNumber(importIndex))
6060

6161
CommandProcessor.getInstance().executeCommand(project, {
6262
ApplicationManager.getApplication().runWriteAction {

src/wu/seal/jsontokotlin/KotlinMaker.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
* Created by seal.wu on 2017/8/21.
1313
*/
1414
public class KotlinMaker {
15-
private final static Gson gson = new Gson();
1615

1716
private String className;
1817
private JsonElement inputElement;

src/wu/seal/jsontokotlin/NoneSupporter.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@ interface INoneLibSupporter {
1010
* create property String block
1111
*/
1212
fun getNoneLibSupporterProperty(rawPropertyName: String, propertyType: String): String
13+
14+
15+
fun getNoneLibSupporterClassName(rawClassName: String)
16+
1317
}
1418

1519

1620
object NoneSupporter : INoneLibSupporter {
1721

22+
override fun getNoneLibSupporterClassName(rawClassName: String) {
23+
}
24+
1825

1926
override fun getNoneLibSupporterProperty(rawPropertyName: String, propertyType: String): String {
2027

src/wu/seal/jsontokotlin/PropertyName.kt

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
2423
object 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

Comments
 (0)