Skip to content

Instantly share code, notes, and snippets.

View japgolly's full-sized avatar
☠️
Non-existant

David Barri japgolly

☠️
Non-existant
View GitHub Profile
@japgolly
japgolly / blog-201706.scala
Created June 5, 2017 10:44
blog-201706.scala
sealed trait Field {
type Value
def fold[F[_]](f: Field.Fold[F]): F[Value]
}
object Field {
case object Name extends Field {
override type Value = String
override def fold[F[_]](f: Field.Fold[F]): F[Value] = f.name(this)
}
@japgolly
japgolly / setup.sh
Last active April 27, 2017 07:06
NodeJS + Scala.JS
npm config set prefix ~/.npm
npm install -g jsdom source-map-support yarn
export NODE_PATH="$(npm config get prefix)"/lib/node_modules
export PATH="$PATH:$(npm config get prefix)/bin"
@japgolly
japgolly / SelectOne.scala
Created February 11, 2015 08:02
scalajs-react select example
import japgolly.scalajs.react._, vdom.prefix_<^._, ScalazReact._
import org.scalajs.dom.raw.HTMLSelectElement
import scala.scalajs.js
import scalaz.Equal
import scalaz.effect.IO
object SelectOne {
case class Choice[A](value : A,
label : String,
@japgolly
japgolly / example.scala
Created February 28, 2015 21:00
AADT folds
object Example {
// Data types
sealed trait Base {
sealed trait Token
}
sealed trait PlainText extends Base {
case class PlainText(text: String) extends Token
@japgolly
japgolly / InBrowserTesting.scala
Last active November 18, 2016 22:35
SBT + Scala.JS + Selenium
import sbt._
import sbt.Keys._
import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._
import org.scalajs.sbtplugin.cross.CrossProject
import org.scalajs.sbtplugin.ScalaJSPluginInternal._
import org.scalajs.jsenv.selenium._
object InBrowserTesting {
lazy val testAll = TaskKey[Unit]("test-all", "Run tests in all test platforms.")
@japgolly
japgolly / keybase.md
Created September 3, 2016 13:07
keybase.md

Keybase proof

I hereby claim:

  • I am japgolly on github.
  • I am japgolly (https://keybase.io/japgolly) on keybase.
  • I have a public key ASA2mh3TjdvZuvSBDifylawPHaTJDuBE4NQhXtZR8vhF4Ao

To claim this, I am signing this object:

import japgolly.scalajs.react._
import scalajs.js.{undefined, Dictionary, Dynamic, Object, UndefOr}
import shipreq.base.util.Memo
import ReactCollapse._
/**
* Component-wrapper for collapse animation with react-motion for elements with variable (and dynamic) height.
*
* https://github.com/nkbt/react-collapse
*/
import scala.util.Try
import scalajs.js.Dynamic.global
object JsEnvUtils {
/** Sample (real) values are:
* - Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1
* - Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
* - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36
*/
{-# LANGUAGE TypeOperators #-}
module Main where
import Data.Bifunctor (first)
type (~>?) s a = (Either a s) -> (Either s a)
data Inter s a = Inter { getE :: s ~>? a
, reverseGetE :: a ~>? s }
composeS :: (a ~>? b) -> (b ~>? c) -> (a ~>? c)
@japgolly
japgolly / AutoCompleteFeature.scala
Created February 3, 2016 00:05
scalajs-react + AutoComplete
package shipreq.webapp.client.feature
import japgolly.scalajs.react._
import japgolly.scalajs.react.extra._
import org.scalajs.dom.html
import scala.scalajs.js
import shipreq.base.util.ScalaExt.EndoFn
import shipreq.base.util.Vector1
import shipreq.webapp.client.jsfacade.TextComplete
import shipreq.webapp.client.lib.TextEditor