Skip to content

Instantly share code, notes, and snippets.

View sergiandreplace's full-sized avatar
:shipit:
Fluuuttering

Sergi Martínez sergiandreplace

:shipit:
Fluuuttering
View GitHub Profile
@sergiandreplace
sergiandreplace / RemoveAccents.kt
Created November 17, 2021 14:06
Remove accents
private val accentRegex = Regex("\\p{InCombiningDiacriticalMarks}+")
Normalizer.normalize("camión", Normalizer.Form.NFD)
.replace(accentRegex, "")
.toLowerCase(Locale.getDefault())
.split(" ")
@sergiandreplace
sergiandreplace / TestingTimeAndDate.kt
Created January 13, 2021 08:14
Tests to play with the Time & Date Java 8 API
import org.junit.Test
import java.time.*
import java.time.format.DateTimeFormatter
import java.time.format.FormatStyle
import java.time.temporal.ChronoField
import java.time.temporal.ChronoUnit
import java.time.temporal.TemporalAdjusters
import java.util.*
import kotlin.time.days
import kotlin.time.minutes
@sergiandreplace
sergiandreplace / join.sh
Last active July 4, 2020 20:51
Join US medicine tables
xsv join --no-case PRODUCTNDC product.txt PRODUCTNDC package.txt -d '\t' \
|xsv select NDCPACKAGECODE,PROPRIETARYNAME,PACKAGEDESCRIPTION,DOSAGEFORMNAME \
|xsv sample 10 \
|xsv table
drop table if exists medicines_import;
CREATE TABLE medicines_import (
country text NOT NULL,
code text NOT NULL,
name text NOT NULL,
quantity int4 NOT NULL,
unit text NOT NULL,
CONSTRAINT medicines_pkey PRIMARY KEY (code, country)
);
var a = Math.cos(Math.sin(((4 + 3) * 3)))
const PI = 3.14159
const GRAVITY = 9.8
// function concatenate(array) {
// let a = ""
// for (let i = 0; i < array.length; i++) {
// const element=array[i]
// a += element
// }
// return a
@sergiandreplace
sergiandreplace / CnDetectorProcessor.kt
Last active March 18, 2020 09:27
CnDetectorProcessor
class CnDetectorProcessor(private val context: Context, private val onCnDetected: ((cn: String, checksum: String) -> Unit)) :
Detector.Processor<TextBlock?> {
private val pattern = Pattern.compile("^C?\\.?N?\\.? ?(\\d\\d\\d\\d\\d\\d)\\.(\\d) ?[0O]?\$")
private var detected = false
override fun release() {}
override fun receiveDetections(detections: Detections<TextBlock?>) {
detections.detectedItems.forEach { _, item ->
if (detected) return
@sergiandreplace
sergiandreplace / OverlayView.kt
Created March 11, 2020 18:40
A semitransparent view with a rounded corner hole in it
class OverlayWithHoleImageView(context: Context?, attrs: AttributeSet?) : androidx.appcompat.widget.AppCompatImageView(context, attrs) {
private var rect: RectF? = null
private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = Color.parseColor("#a8000000")
style = Paint.Style.FILL
}
private val addMode = PorterDuffXfermode(PorterDuff.Mode.ADD)
private val clearMode = PorterDuffXfermode(PorterDuff.Mode.CLEAR)
private val radius = 40.dp
private val margin = 32.dp
select name, address from customers where country = 'United States'
select * from customers order by name
/* Retrieve all the products which cost more than 100 */
select * from products where unit_price > 100
/* Retrieve all the products whose name contains the word socks */
var fs = require('fs');
class LineMatcher {
constructor(regex) {
this.regex = regex
}
matches(line) {
return this.regex.test(line)
}
@sergiandreplace
sergiandreplace / CatalanDateFormatTest.kt
Last active August 25, 2019 18:30
A test to check if standalone month formatting for catalan works correctly
package com.sergiandreplace.localization
import org.junit.Test
import org.threeten.bp.LocalDate
import org.threeten.bp.Month
import org.threeten.bp.format.DateTimeFormatter
import java.util.Locale
import org.junit.Assert.assertEquals
class CatalanDateFormatTest {