Skip to content

Instantly share code, notes, and snippets.

Eugenio Marletti Takhion

Block or report user

Report or block Takhion

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
Takhion / TwitterHandle.kt
Last active Feb 20, 2020 — forked from raulraja/TwitterHandle.kt
Type Refinements with Type Proofs in Kotlin
View TwitterHandle.kt
/* Coming up ~ April 2020 */
package test
import arrow.*
inline class TwitterHandle
private constructor(val handle: String) {
companion object : Refined<String> {
override val validate: String.() -> Map<String, Boolean> = {
View CloseableRefCallback.kt
interface Cleanup {
fun registerForCleanup(onCleanup: () -> Unit): Closeable
class CloseableRefCallback<T : Cleanup>(
private val callback: T.() -> Unit
) : Closeable {
private val resourceRef = AtomicReference<Pair<T, Closeable>?>(null)
git rebase "$(git merge-base HEAD master)" -x 'git commit --amend -C HEAD --date="$(date -R)" && sleep 1.05'
Takhion / CallbackUtils.kt
Created May 26, 2019
[Kotlin/Native] CallbackUtils.kt
View CallbackUtils.kt
import kotlinx.cinterop.ObjCAction
import kotlinx.cinterop.StableRef
import platform.AppKit.NSControl
import platform.Foundation.NSSelectorFromString
import platform.darwin.NSObject
import platform.objc.OBJC_ASSOCIATION_RETAIN
import platform.objc.objc_setAssociatedObject
* Specify a [callback][onAction] for an [NSControl] action, instead of setting
Takhion / ConvertJavaFilesToKotlin.kt
Created May 11, 2019
Convert Java files to Kotlin without the IDE
View ConvertJavaFilesToKotlin.kt
// adapted from
package me.eugeniomarletti
import com.intellij.codeInsight.ContainerProvider
import com.intellij.codeInsight.NullabilityAnnotationInfo
import com.intellij.codeInsight.NullableNotNullManager
import com.intellij.codeInsight.runner.JavaMainMethodProvider
import com.intellij.core.CoreApplicationEnvironment
import com.intellij.core.JavaCoreApplicationEnvironment
Takhion / 0_ViewModelHacks.kt
Last active Apr 10, 2019
Expose `ViewModel.clear()`
View 0_ViewModelHacks.kt
package android.arch.lifecycle
fun ViewModel.clear() = clear()
View RuntimeOnlyParcelable.kt
import android.content.Intent
import android.os.Parcel
import android.os.Parcelable
import java.util.UUID
import java.util.concurrent.ConcurrentHashMap
* A special [Parcelable] that carries an in-memory reference to any instance of type [T], which will obviously
Takhion / PairNestedDestructuring.kt
Last active Feb 16, 2019
Kotlin `Pair` nested destructuring
View PairNestedDestructuring.kt
package me.eugeniomarletti.util.destructuring.pair.nested
object NoDestructuring
typealias PairA<A> = Pair<A, *>
typealias PairB<B> = Pair<*, B>
//region nesting level: 1
Takhion / 0_build.gradle.kts
Last active Apr 3, 2019
Kotlin generics are 🍌🍌🍌
View 0_build.gradle.kts
// ...stuff...
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf(
Takhion / 1_property.kt
Created Sep 16, 2018
Kotlin property delegate utils
View 1_property.kt
import kotlin.reflect.KProperty
private typealias GetValue<This, R> = (thisRef: This, property: KProperty<*>) -> R
private typealias SetValue<This, R> = (thisRef: This, property: KProperty<*>, value: R) -> Unit
inline fun <This, R> property(
crossinline getValue: GetValue<This, R>
) =
You can’t perform that action at this time.