mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-04 06:00:22 +00:00 
			
		
		
		
	@@ -1,5 +1,11 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 0.4.20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `Serialization`
 | 
				
			||||||
 | 
					    * `Encapsulator`:
 | 
				
			||||||
 | 
					        * Has been created
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 0.4.19
 | 
					## 0.4.19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* `Coroutines`:
 | 
					* `Coroutines`:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,5 +40,5 @@ dokka_version=1.4.20
 | 
				
			|||||||
# Project data
 | 
					# Project data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group=dev.inmo
 | 
					group=dev.inmo
 | 
				
			||||||
version=0.4.19
 | 
					version=0.4.20
 | 
				
			||||||
android_code_version=23
 | 
					android_code_version=24
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								serialization/encapsulator/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								serialization/encapsulator/build.gradle
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					plugins {
 | 
				
			||||||
 | 
					    id "org.jetbrains.kotlin.multiplatform"
 | 
				
			||||||
 | 
					    id "org.jetbrains.kotlin.plugin.serialization"
 | 
				
			||||||
 | 
					    id "com.android.library"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					apply from: "$mppProjectWithSerializationPresetPath"
 | 
				
			||||||
@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					package dev.inmo.micro_utils.serialization.encapsulator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import kotlinx.serialization.KSerializer
 | 
				
			||||||
 | 
					import kotlinx.serialization.encoding.Encoder
 | 
				
			||||||
 | 
					import kotlin.reflect.KClass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					data class Encapsulator<T : Any>(
 | 
				
			||||||
 | 
					    val klass: KClass<T>,
 | 
				
			||||||
 | 
					    val serializer: KSerializer<T>
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					    fun <O> encapsulate(
 | 
				
			||||||
 | 
					        value: Any,
 | 
				
			||||||
 | 
					        callback: KSerializer<T>.(T) -> O
 | 
				
			||||||
 | 
					    ): O? = if (klass.isInstance(value)) {
 | 
				
			||||||
 | 
					        callback(serializer, value as T)
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        null
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fun <T : Any> Encapsulator<T>.tryEncode(encoder: Encoder, value: Any) = encapsulate(value) {
 | 
				
			||||||
 | 
					    encoder.encodeSerializableValue(this, it)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								serialization/encapsulator/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								serialization/encapsulator/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<manifest package="dev.inmo.micro_utils.serialization.encapsulator"/>
 | 
				
			||||||
@@ -22,6 +22,7 @@ String[] includes = [
 | 
				
			|||||||
    ":android:alerts:common",
 | 
					    ":android:alerts:common",
 | 
				
			||||||
    ":android:alerts:recyclerview",
 | 
					    ":android:alerts:recyclerview",
 | 
				
			||||||
    ":serialization:base64",
 | 
					    ":serialization:base64",
 | 
				
			||||||
 | 
					    ":serialization:encapsulator",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ":dokka"
 | 
					    ":dokka"
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user