@@ -22,26 +22,59 @@ package com.github.openEdgn.logger4k.format
22
22
23
23
/* *
24
24
* 类名称格式化工具
25
- * @property maxLine Int
25
+ * @property maxLength Int
26
26
*/
27
27
class MaxLengthClassFormat : ClassNameFormat () {
28
- private val maxLine = 30
28
+ private val maxLength = 40
29
29
override fun format (name : String ): String {
30
- return if (name.length > maxLine) {
31
- val list = name.split(" ." )
32
- val stringBuilder = StringBuilder ()
33
- for (i in 0 until list.size - 1 ) {
34
- stringBuilder.append(list[i].first()).append(" ." )
30
+ if (maxLength == - 1 ) {
31
+ return name
32
+ }
33
+ return if (name.length > maxLength) {
34
+ var length = name.length
35
+ var accept = false
36
+ val builder = StringBuilder ()
37
+ val split = name.split(" ." )
38
+ if (split.size == 1 ) {
39
+ return formatLength(name, maxLength)
35
40
}
36
- if (maxLine - stringBuilder.length < list.last().length) {
37
- stringBuilder.append(list.last().replace(Regex (" [a-z]" ), " " ))
38
- } else {
39
- stringBuilder.append(list.last())
41
+ for (item in 0 until split.size - 1 ) {
42
+ if (accept) {
43
+ builder.append(split[item]).append(" ." )
44
+ } else {
45
+ if ((length + 2 - split[item].length) <= maxLength) {
46
+ accept = true
47
+ }
48
+ builder.append(split[item].first()).append(" ." )
49
+ length - = split[item].length - 2
50
+ }
40
51
}
41
52
42
- String .format(" %${- maxLine} s" , stringBuilder.toString())
53
+ val lastName = split.last()
54
+ if (lastName.length > maxLength - builder.length) {
55
+ builder.append(lastName)
56
+ builder.toString()
57
+ } else {
58
+ builder.append(lastName)
59
+ formatLength(builder.toString(), maxLength)
60
+ }
43
61
} else {
44
- String .format( " % ${ - maxLine} s " , name )
62
+ formatLength(name, maxLength )
45
63
}
46
64
}
65
+
66
+ private fun formatLength (data : String , len : Int ): String {
67
+ if (len <= 0 ) {
68
+ return " "
69
+ }
70
+ val item = data.substring(
71
+ 0 ,
72
+ if (data.length > len) {
73
+ len
74
+ } else {
75
+ data.length
76
+ }
77
+ )
78
+ return String .format(" %${- len} s" , item)
79
+ }
47
80
}
0 commit comments