Skip to content

Instantly share code, notes, and snippets.

object EitherUtils {
implicit class EitherWithFilter[L, R](either: Either[L, R]) {
def withFilter(filter: R => Boolean): Either[L, R] = either.flatMap { rv =>
try {
if (filter(rv)) Right(rv) else throw new RuntimeException("withFilter returned false")
} catch {
case e: EitherException[_] => Left(e.value.asInstanceOf[L])
}
}
@scf37
scf37 / Bootstrap.scala
Created September 24, 2017 11:34
Bootstrap4 as scala dsl
package me.scf37.finecss
import me.scf37.finecss.dsl.Dsl
trait TestModule20 extends Dsl {
val lead = rule("lead")
.style("font-size", "1.25rem")
.style("font-weight", "300")
val display_1 = rule("display-1")
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonDeserializer
import scala.reflect.runtime.universe._
class ScalaEnumDeserializer[T](implicit tag: TypeTag[T]) extends JsonDeserializer[T] {
private[this] val values: Map[String, T] = {
val knownSubclasses = tag.tpe.typeSymbol.asClass.knownDirectSubclasses.filter(_.isModuleClass)
@scf37
scf37 / DigCrypt.scala
Last active March 13, 2019 12:04
Encryption in field [0..10**n) based on Feistel network.
package digcrypt
import java.nio.ByteBuffer
import java.util.Random
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
/**
* Digit encryption.
const options = {
// background color
bgColor: 'rgba(0,0,0,0.9)',
// fade-in and fade-out duration
fadeDurationMs: 400,
// hide scroll when showing fullscreen image
hideScroll: true,
package bootstrap
import me.scf37.finecss.Dsl
trait Bootstrap0 extends Dsl {
val accordion = rule.cls("accordion")
val active = rule.cls("active")
val arrow = rule.cls("arrow")
val breadcrumb_item = rule.cls("breadcrumb-item")
@scf37
scf37 / TethysDyn.scala
Created August 13, 2019 20:56
Tethys Json via reflection
package me.scf37.json
import java.lang.reflect.Field
import java.lang.reflect.ParameterizedType
import java.lang.reflect.Type
import java.util.concurrent.ConcurrentHashMap
import me.scf37.fine.exception.JsonParsingException
import tethys.JsonReader
import tethys.JsonWriter
package me.scf37.rediska.dao
import java.sql.Connection
import java.sql.Timestamp
import java.time.Instant
import cats.Applicative
import me.scf37.db.sql.SqlEffectLift
import me.scf37.rediska.dao.meta.Sequences
import me.scf37.rediska.dao.meta.Tables.USER
import java.io._
/**
* Schema for efficient binary serialization of case classes
* Implementation must:
* - declare all fields using `required` and `optional` methods
* - implement doRead, transferring field values from declaration to case class instance
* - assign every field an unique tag
*
* Protocol.
@scf37
scf37 / README.md
Created October 12, 2021 19:44 — forked from Thomas-Ln/install_libffmpeg_for_opera_and_vivaldi.md
Install 'libffmpeg.so' in Vivaldi or Opera