Skip to content

Instantly share code, notes, and snippets.

View taig's full-sized avatar

Niklas Klein taig

View GitHub Profile
@taig
taig / load-image.scala
Last active February 2, 2020 16:30
Scala.js image loading with cats Deferred
import cats.effect.concurrent.Deferred
import cats.effect.implicits._
import cats.effect.{ConcurrentEffect, IO}
import cats.implicits._
import org.scalajs.dom.html.Image
import org.scalajs.dom.{document, Event}
def loadImage[F[_]](url: String)(implicit F: ConcurrentEffect[F]): F[Boolean] =
for {
promise <- Deferred[F, Boolean]
@taig
taig / circe.scala
Created November 26, 2016 10:30
Circe Value Class codecs
implicit def decoderValueClass[T <: AnyVal, V](
implicit
g: Lazy[Generic.Aux[T, V :: HNil]],
d: Decoder[V]
): Decoder[T] = Decoder.instance { cursor ⇒
d( cursor ).map { value ⇒
g.value.from( value :: HNil )
}
}
@taig
taig / Printer.scala
Last active January 24, 2016 23:37
Printer for (nested) Shapeless-HLists with proper brackets
trait Printer[L <: HList] extends DepFn1[L] with Serializable { type Out = String }
object Printer extends Printer0 {
def apply[L <: HList]( implicit printer: Printer[L] ): Printer[L] = printer
implicit def hnilPrinter[C]: Printer[HNil] = new Printer[HNil] {
override def apply( t: HNil ) = "HNil"
}
implicit def nestedHlistPrinter[H <: HList, T <: HList](

Keybase proof

I hereby claim:

  • I am taig on github.
  • I am taig (https://keybase.io/taig) on keybase.
  • I have a public key whose fingerprint is 920E F3BC 0BA6 68C4 EDFD 3846 C03D B551 6D21 4D58

To claim this, I am signing this object:

@taig
taig / Activity.java
Last active October 7, 2015 10:18
Add SearchWidget to Android ActionBar
public class Activity extends android.app.Activity
{
@Override
public boolean onCreateOptionsMenu( Menu menu )
{
getMenuInflater().inflate( R.menu.main, menu );
// Add SearchWidget.
SearchManager searchManager = (SearchManager) getSystemService( Context.SEARCH_SERVICE );
SearchView searchView = (SearchView) menu.findItem( R.id.options_menu_main_search ).getActionView();