|
1 | 1 | package com.funny.data_saver.core |
2 | 2 |
|
| 3 | +import com.funny.data_saver.kmp.Log |
3 | 4 | import kotlin.reflect.KClass |
4 | 5 | import kotlin.reflect.KType |
5 | 6 | import kotlin.reflect.typeOf |
@@ -109,53 +110,23 @@ object DataSaverConverter { |
109 | 110 | } |
110 | 111 | } |
111 | 112 |
|
112 | | - fun <T: Any> findSaver(data: T): ((Any?) -> String)? { |
113 | | - return typeConverters.find { it.accept(data) }?.let { |
| 113 | + fun <T> findSaver(data: T): ((Any?) -> String)? { |
| 114 | + return typeConverters.findLast { it.accept(data) }?.let { |
114 | 115 | it::save |
115 | 116 | } |
116 | 117 | } |
117 | 118 |
|
118 | 119 | inline fun <reified T> findTypeConverter(data: T): ITypeConverter? { |
119 | | - return typeConverters.find { it.accept(data) } |
| 120 | + return typeConverters.findLast { it.accept(data) }.also { |
| 121 | + Log.d("DataSaverConverter", "findTypeConverter for data($data): $it") |
| 122 | + } |
120 | 123 | } |
121 | 124 |
|
122 | 125 | fun unsupportedType(data: Any?, action: String = "save"): Nothing = |
123 | 126 | error("Unable to $action data: type of $data (class: ${if (data == null)"null" else data::class.java} is not supported, please call [registerTypeConverters] at first!") |
124 | 127 |
|
125 | 128 |
|
126 | 129 | private fun registerDefaultTypeConverters() { |
127 | | - // kotlin.collections.EmptyList |
128 | | - val emptyList: List<Nothing> = emptyList() |
129 | | - registerTypeConverters(object : ITypeConverter { |
130 | | - override fun save(data: Any?): String { |
131 | | - return "[]" |
132 | | - } |
133 | | - |
134 | | - override fun restore(str: String): Any { |
135 | | - return emptyList |
136 | | - } |
137 | | - |
138 | | - override fun accept(data: Any?): Boolean { |
139 | | - return data is List<*> && data.isEmpty() |
140 | | - } |
141 | | - }) |
142 | | - |
143 | | - // kotlin.collections.EmptyMap |
144 | | - val emptyMap = emptyMap<String, Any>() |
145 | | - registerTypeConverters(object : ITypeConverter { |
146 | | - override fun save(data: Any?): String { |
147 | | - return "{}" |
148 | | - } |
149 | | - |
150 | | - override fun restore(str: String): Any { |
151 | | - return emptyMap |
152 | | - } |
153 | | - |
154 | | - override fun accept(data: Any?): Boolean { |
155 | | - return data is Map<*, *> && data.isEmpty() |
156 | | - } |
157 | | - }) |
158 | | - |
159 | 130 | // String |
160 | 131 | registerTypeConverters<String>( |
161 | 132 | save = { it }, |
|
0 commit comments