Skip to content

Instantly share code, notes, and snippets.

View ElianFabian's full-sized avatar

Elián Fabián ElianFabian

View GitHub Profile
@ElianFabian
ElianFabian / LanguageContextWrapper.kt
Created July 18, 2024 10:52
ContextWrapper to propperly update the locale of your application. The default implementation takes the first supported locale, otherwise takes the default locale.. Gist to generate the supported and default locale: Gist to generate the supported locales: https://gist.github.com/ElianFabian/e94071f348998c24bedaa959ddb8df40
import android.annotation.SuppressLint
import android.app.Application
import android.content.ComponentCallbacks
import android.content.Context
import android.content.ContextWrapper
import android.content.res.Configuration
import android.content.res.Resources
import android.os.Build
import android.os.LocaleList
import androidx.core.os.ConfigurationCompat
# From the Kotlin standard library
class XorWowRandom {
hidden [int] $x
hidden [int] $y
hidden [int] $z
hidden [int] $w
hidden [int] $v
hidden [int] $addend
hidden XorWowRandom() { }
@ElianFabian
ElianFabian / PariGp.ps1
Created July 11, 2024 19:17
Example of how to use PARI/GP inside PowerShell
function Get-PrimeNumber([ulong] $position) {
return [System.UInt128] ("prime($position)" | gp.exe -q)
}
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.util.AttributeSet
import android.view.ViewGroup
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.annotation.DimenRes
import androidx.annotation.Dimension
import androidx.annotation.Px
@ElianFabian
ElianFabian / NetworkRequestError.kt
Last active June 1, 2024 01:05
Network utilities for Android.
sealed interface NetworkRequestError {
data class HttpError(
val code: Int,
val message: String?,
) : NetworkRequestError
data object IoError : NetworkRequestError
data object UnknownError : NetworkRequestError
}
@ElianFabian
ElianFabian / TextViewExt.kt
Last active May 11, 2024 18:06
TextView extension functions to easily implement reactivity.
import android.widget.TextView
import androidx.core.widget.doAfterTextChanged
// Source: https://stackoverflow.com/questions/9385081/how-can-i-change-the-edittext-text-without-triggering-the-text-watcher
/**
* Whenever the user makes a change to the text
* the action parameter will be triggered.
*
* This function is meant to be used with [setTextIfDistinct]
import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
@ElianFabian
ElianFabian / build.gradle.kts
Created April 1, 2024 20:34
How to read a property from local.properties file.
android {
namespace = ""
compileSdk = 34
defaultConfig {
applicationId = ""
minSdk = 21
targetSdk = 34
versionCode = 1
versionName = "1.0"
@ElianFabian
ElianFabian / ImageAndAscii.psm1
Last active March 5, 2024 00:20
Functions to convert an image into a ASCII text and vicerversa (only works for Windows).
function Convert-ImageToAscii(
[Parameter(ParameterSetName = "A")]
[string] $Path,
[Parameter(ParameterSetName = "B")]
[System.Drawing.Bitmap] $Image,
[switch] $UseAlpha
) {
$bitMap = if ($Path) {
[System.Drawing.Bitmap]::FromFile((Resolve-Path $Path))
}
fun getAllDivisiblePairsInRangeCount(
start: Int,
end: Int,
ignoreSelfDivision: Boolean = false,
): Int {
require(start != 0) {
"start parameter can't be $start"
}
require(start <= end) {
"start '$start' must be less or equal to end '$end'"