Skip to content

Instantly share code, notes, and snippets.

View mandubian's full-sized avatar

Pascal Voitot mandubian

View GitHub Profile
@mandubian
mandubian / Play2-Json-sample-correction.scala
Created February 16, 2012 17:25
Play2 Json sample correction
def index = Action {
import Json._
//val jsObj = Json( "alpha" \: 123 ++ "beta" \: "chboing" )
val data = JsObject(
Seq(("newspaper", JsObject(Seq(
("url", JsString("http://nytimes.com")),
("attributes", JsObject(Seq(
("name", JsString("nytimes")),
("country", JsString("US")),
@mandubian
mandubian / richjson.scala
Created February 18, 2012 13:57
enriched json for play2
object Application extends Controller {
def index = Action {
import RichJson._
// Classic Play20 JSon API
val oldVersion =
JsObject(Seq(
("key1", JsObject(Seq(
("key11", JsString("alpha11")),
@mandubian
mandubian / gist:2909163
Created June 11, 2012 08:56
Iteratee.mkString
def mkString[E](start: String, sep: String, end: String): Iteratee[E, String] = {
def step(s: String, isFirst: Boolean)(input: Input[E]): Iteratee[E, String] = {
input match {
case Input.EOF => Done(s + end, Input.EOF)
case Input.Empty => Cont(step(s, isFirst))
case Input.El(e) => { val s1 = if(isFirst) { s + e.toString } else { s + sep + e.toString }; Cont[E, String](i => step(s1, false)(i)) }
}
@mandubian
mandubian / gist:3377514
Created August 17, 2012 09:48
Play2 new plugin: File NonBlocking/Async API - Copying a file
"copy file" in {
var i = 0
val fileGenerator = Enumerator.fromCallback( () =>
if(i<1000){ i+=1; Future.successful(Some((new java.util.Date).getTime.toString + "\n")) } else Future(None)
)
val f = FileChannel("/tmp/testwrite.txt").delete.writing.create
val f2 = FileChannel("/tmp/testwrite2.txt").delete.writing.create
fileGenerator // generates data
@mandubian
mandubian / gist:4295367
Created December 15, 2012 14:06
Scala potential issue when importing similar implicits from different packages
case class ~[A, B](a: A, b: B)
package alpha {
trait AlphaReader[A] {
def read(s: String): A
}
object AlphaReader{
def apply[A](f: String => A): AlphaReader[A] = new AlphaReader[A] {
@mandubian
mandubian / gist:4313522
Created December 16, 2012 21:53
Reads[java.math.BigDecimal]
import play.api.libs.json._
import play.api.libs.functional.syntax._
import scala.util.control.Exception._
import java.lang.NumberFormatException
import play.api.data.validation.ValidationError
implicit val bigDecReads = Reads[java.math.BigDecimal]( js => js match {
case JsString(s) =>
catching(classOf[NumberFormatException])
.opt( JsSuccess(new java.math.BigDecimal(s)) )
@mandubian
mandubian / gist:4319123
Created December 17, 2012 15:28
Scala pb simplified
package alpha {
trait AlphaReader[A] {
def read(s: String): A
}
object AlphaReader{
def apply[A](f: String => A): AlphaReader[A] = new AlphaReader[A] {
def read(s: String) = f(s)
@mandubian
mandubian / answer.scala
Last active December 11, 2015 17:18
c'est une description
mon implementation à moi qui tue!
@mandubian
mandubian / 0. My awesome question.txt
Created January 25, 2013 14:24
PlayByExample: My awesome question
My awesome question
@mandubian
mandubian / 0. My awesome question.txt
Created January 25, 2013 14:41
PlayByExample: My awesome question
My awesome question