@@ -21,7 +21,6 @@ import org.json.JSONObject
21
21
import java.io.StringReader
22
22
import java.io.StringWriter
23
23
import java.lang.reflect.Modifier
24
- import java.util.*
25
24
import javax.xml.transform.OutputKeys
26
25
import javax.xml.transform.TransformerException
27
26
import javax.xml.transform.TransformerFactory
@@ -38,10 +37,12 @@ class EasyFormatter private constructor(private val builder: Builder) {
38
37
private val indent = " "
39
38
private val list = mutableListOf<Any >()// 用于临时存放当前已被解析的类。防止出现循环引用导致栈溢出
40
39
41
- fun formatWithArgs (message : String , vararg args : Any ):String {
40
+ fun formatWithArgs (message : String , vararg args : Any ): String {
42
41
val array = arrayOfNulls<String >(args.size)
43
42
args.forEachIndexed { index, any -> array[index] = format(any) }
44
- return String .format(" $message %s" , * array)
43
+ return if (array.filterNotNull().isEmpty()) {
44
+ message
45
+ } else String .format(" $message %s" , * array)
45
46
}
46
47
47
48
/* *
@@ -101,7 +102,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
101
102
return StringBuilder (data)
102
103
}
103
104
104
- private fun formatXML (data : String ):StringBuilder {
105
+ private fun formatXML (data : String ): StringBuilder {
105
106
return try {
106
107
val xmlInput = StreamSource (StringReader (data))
107
108
val xmlOutput = StreamResult (StringWriter ())
@@ -131,7 +132,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
131
132
val length = array.length()
132
133
val isFlat = isFlat(builder.maxArraySize, length)
133
134
134
- for (index in 0 .. (length - 1 ) ) {
135
+ for (index in 0 until length ) {
135
136
val sub = StringBuilder ()
136
137
if (! isFlat) {
137
138
result.append(" \n " )
@@ -145,7 +146,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
145
146
if (! isFlat) {
146
147
result.append(" \n " )
147
148
}
148
- } catch (e: Exception ) {
149
+ } catch (e: Exception ) {
149
150
return StringBuilder (data)
150
151
}
151
152
result.append(" ]" )
@@ -178,14 +179,14 @@ class EasyFormatter private constructor(private val builder: Builder) {
178
179
if (! isFlat) {
179
180
result.append(" \n " )
180
181
}
181
- } catch (e: Exception ) {
182
+ } catch (e: Exception ) {
182
183
return StringBuilder (data)
183
184
}
184
185
result.append(" }" )
185
186
return result
186
187
}
187
188
188
- private fun isFlat (maxSize : Int , length : Int ):Boolean {
189
+ private fun isFlat (maxSize : Int , length : Int ): Boolean {
189
190
return when {
190
191
maxSize < 0 -> false
191
192
length <= maxSize -> false
@@ -219,23 +220,22 @@ class EasyFormatter private constructor(private val builder: Builder) {
219
220
}
220
221
221
222
223
+ private fun formatAny (any : Any? ): StringBuilder =
224
+ when (any) {
225
+ null -> StringBuilder ()
226
+ is Collection <* > -> checkIfFormatted(any) { return @checkIfFormatted formatCollection(any) }
227
+ is Map <* , * > -> checkIfFormatted(any) { return @checkIfFormatted formatMap(any) }
228
+ is Array <* > -> checkIfFormatted(any) { return @checkIfFormatted formatCollection(listOf (* any)) }
229
+ is String -> formatString(any)
230
+ is Throwable -> formatException(any)
231
+ is Int , is Boolean , is Short , is Char , is Byte , is Long , is Float , is Double
232
+ -> StringBuilder (any.toString())
233
+ else -> checkIfFormatted(any) { return @checkIfFormatted formatOther(any) }
234
+ }
222
235
223
- private fun formatAny (any : Any? ):StringBuilder =
224
- when (any) {
225
- null -> StringBuilder ()
226
- is Collection <* > -> checkIfFormatted(any) {return @checkIfFormatted formatCollection(any)}
227
- is Map <* , * > -> checkIfFormatted(any) {return @checkIfFormatted formatMap(any)}
228
- is Array <* > -> checkIfFormatted(any) {return @checkIfFormatted formatCollection(Arrays .asList(* any))}
229
- is String -> formatString(any)
230
- is Throwable -> formatException(any)
231
- is Int , is Boolean , is Short , is Char , is Byte , is Long , is Float , is Double
232
- -> StringBuilder (any.toString())
233
- else -> checkIfFormatted(any) {return @checkIfFormatted formatOther(any)}
234
- }
235
-
236
- private fun appendIterator (container : StringBuilder , /* 数据存储容器*/
237
- iterator : Iterator <* >,
238
- isFlat : Boolean ) {
236
+ private fun appendIterator (container : StringBuilder , /* 数据存储容器*/
237
+ iterator : Iterator <* >,
238
+ isFlat : Boolean ) {
239
239
var hasNext = iterator.hasNext()
240
240
while (hasNext) {
241
241
if (! isFlat) {
@@ -305,7 +305,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
305
305
scanFields(any, clazz.superclass, container)
306
306
}
307
307
308
- private fun checkIfFormatted (any : Any , invoke : () -> StringBuilder ):StringBuilder {
308
+ private fun checkIfFormatted (any : Any , invoke : () -> StringBuilder ): StringBuilder {
309
309
return if (list.contains(any)) {
310
310
StringBuilder (" {(circle ref):${any.javaClass.simpleName} }" )
311
311
} else {
@@ -329,15 +329,17 @@ class EasyFormatter private constructor(private val builder: Builder) {
329
329
/* *
330
330
* 最大行数,当格式化后的数据行数超过此数量后,将对超出部分数据进行平铺展示
331
331
*/
332
- var maxLines: Int = - 1
332
+ var maxLines: Int = - 1
333
+
333
334
/* *
334
335
* 最大Array尺寸,当Array(包括List/Set/Array/JSONArray)的长度超过此数量限制时:数据以平铺模式展示。
335
336
*/
336
- var maxArraySize: Int = - 1
337
+ var maxArraySize: Int = - 1
338
+
337
339
/* *
338
340
* 最大Map尺寸,当Map(包括Map/JSONObject/Bean)的长度超过此数量限制时:数据以平铺模式展示
339
341
*/
340
- var maxMapSize: Int = - 1
342
+ var maxMapSize: Int = - 1
341
343
342
344
fun build (): EasyFormatter {
343
345
return EasyFormatter (this )
0 commit comments