Skip to content

Instantly share code, notes, and snippets.

View drawers's full-sized avatar
🟩
In greenish twilight at the bottom of the Rhine

David Rawson drawers

🟩
In greenish twilight at the bottom of the Rhine
View GitHub Profile
import com.google.devtools.ksp.symbol.*
class IntSummableProcessorProvider : SymbolProcessorProvider {
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
return IntSummableProcessor(
options = environment.options,
codeGenerator = environment.codeGenerator,
logger = environment.logger
)
plugins {
kotlin("jvm")
id("com.google.devtools.ksp") version "1.5.31-1.0.0"
}
repositories {
mavenCentral()
google()
}
public fun FooSummable.sumInts(): Int {
val sum = bar + baz
return sum
}
@IntSummable
data class Foo(
val bar: Int = 234,
val baz: Int = 123
)
@drawers
drawers / DDDTest.kt
Last active January 25, 2021 01:26
DDDTest.kt
class TasksViewModel: ViewModel {
val taskItems: LiveData<List<TaskItem>>
val _tasksItems: MutableLiveData<List<TaskItem>>
fun loadTasks() {
val tasks = tasksRepository.getAllTasks()
_taskItems.value = tasks.map { it.toTaskItem() }
}
}
@drawers
drawers / TaskItem.kt
Last active January 25, 2021 01:17
TaskItem.kt
/**
* A presentation-layer item for display in a RecyclerView
*/
class TaskItem(
val id: String,
val title: String,
val description: String,
val color: @ColorRes Int
)
@drawers
drawers / TaskWithColor.kt
Created January 22, 2021 00:14
TaskWithColor.kt
class Task(
/*
* snip
*/
val color: @ColorRes Int
)
@drawers
drawers / DomainLeakingIntoPresentation.kt
Created January 21, 2021 23:12
DomainLeakingIntoPresentation.kt
class TasksFragment {
private lateinit var tasksAdapter: TasksAdapter
fun showTasks(tasks: List<Tasks>) {
tasksAdapter.setData(tasks)
}
}
// inside tasks adapter
@drawers
drawers / Separating.kt
Created January 21, 2021 21:40
Extracting a separate
// data layer object
open class RealmTask constructor(
var title: String = "",
var description: String,
var isCompleted: Boolean,
@PrimaryKey var entryId: String
): RealmObject()
fun RealmTask.toDomain() {
return Task(
@drawers
drawers / Task.kt
Created January 21, 2021 21:29
Task.kt
// Realm models must be open
open class Task constructor(
var title: String = "",
var description: String,
var isCompleted: Boolean,
@PrimaryKey var entryId: String
): RealmObject()