@@ -21,7 +21,6 @@ import org.json.JSONObject
2121import java.io.StringReader
2222import java.io.StringWriter
2323import java.lang.reflect.Modifier
24- import java.util.*
2524import javax.xml.transform.OutputKeys
2625import javax.xml.transform.TransformerException
2726import javax.xml.transform.TransformerFactory
@@ -38,10 +37,12 @@ class EasyFormatter private constructor(private val builder: Builder) {
3837 private val indent = " "
3938 private val list = mutableListOf<Any >()// 用于临时存放当前已被解析的类。防止出现循环引用导致栈溢出
4039
41- fun formatWithArgs (message : String , vararg args : Any ):String {
40+ fun formatWithArgs (message : String , vararg args : Any ): String {
4241 val array = arrayOfNulls<String >(args.size)
4342 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)
4546 }
4647
4748 /* *
@@ -101,7 +102,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
101102 return StringBuilder (data)
102103 }
103104
104- private fun formatXML (data : String ):StringBuilder {
105+ private fun formatXML (data : String ): StringBuilder {
105106 return try {
106107 val xmlInput = StreamSource (StringReader (data))
107108 val xmlOutput = StreamResult (StringWriter ())
@@ -131,7 +132,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
131132 val length = array.length()
132133 val isFlat = isFlat(builder.maxArraySize, length)
133134
134- for (index in 0 .. (length - 1 ) ) {
135+ for (index in 0 until length ) {
135136 val sub = StringBuilder ()
136137 if (! isFlat) {
137138 result.append(" \n " )
@@ -145,7 +146,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
145146 if (! isFlat) {
146147 result.append(" \n " )
147148 }
148- } catch (e: Exception ) {
149+ } catch (e: Exception ) {
149150 return StringBuilder (data)
150151 }
151152 result.append(" ]" )
@@ -178,14 +179,14 @@ class EasyFormatter private constructor(private val builder: Builder) {
178179 if (! isFlat) {
179180 result.append(" \n " )
180181 }
181- } catch (e: Exception ) {
182+ } catch (e: Exception ) {
182183 return StringBuilder (data)
183184 }
184185 result.append(" }" )
185186 return result
186187 }
187188
188- private fun isFlat (maxSize : Int , length : Int ):Boolean {
189+ private fun isFlat (maxSize : Int , length : Int ): Boolean {
189190 return when {
190191 maxSize < 0 -> false
191192 length <= maxSize -> false
@@ -219,23 +220,22 @@ class EasyFormatter private constructor(private val builder: Builder) {
219220 }
220221
221222
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+ }
222235
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 ) {
239239 var hasNext = iterator.hasNext()
240240 while (hasNext) {
241241 if (! isFlat) {
@@ -305,7 +305,7 @@ class EasyFormatter private constructor(private val builder: Builder) {
305305 scanFields(any, clazz.superclass, container)
306306 }
307307
308- private fun checkIfFormatted (any : Any , invoke : () -> StringBuilder ):StringBuilder {
308+ private fun checkIfFormatted (any : Any , invoke : () -> StringBuilder ): StringBuilder {
309309 return if (list.contains(any)) {
310310 StringBuilder (" {(circle ref):${any.javaClass.simpleName} }" )
311311 } else {
@@ -329,15 +329,17 @@ class EasyFormatter private constructor(private val builder: Builder) {
329329 /* *
330330 * 最大行数,当格式化后的数据行数超过此数量后,将对超出部分数据进行平铺展示
331331 */
332- var maxLines: Int = - 1
332+ var maxLines: Int = - 1
333+
333334 /* *
334335 * 最大Array尺寸,当Array(包括List/Set/Array/JSONArray)的长度超过此数量限制时:数据以平铺模式展示。
335336 */
336- var maxArraySize: Int = - 1
337+ var maxArraySize: Int = - 1
338+
337339 /* *
338340 * 最大Map尺寸,当Map(包括Map/JSONObject/Bean)的长度超过此数量限制时:数据以平铺模式展示
339341 */
340- var maxMapSize: Int = - 1
342+ var maxMapSize: Int = - 1
341343
342344 fun build (): EasyFormatter {
343345 return EasyFormatter (this )
0 commit comments