Skip to content

Instantly share code, notes, and snippets.

View mariussoutier's full-sized avatar

Marius Soutier mariussoutier

View GitHub Profile
@mariussoutier
mariussoutier / core.clj
Created November 18, 2011 08:54
Conway's Game of Life in Clojure
;;; Conway's Game of Life
;;; Using a set of coordinates to provide a infinite world
;;;
;;; Moritz Ulrich <ulrich.moritz@googlemail.com>
;;; Cologne Clojure User Group
;;; November 17, 2011
(ns game-of-life.core
(:use [clojure.set :as set]))
@mariussoutier
mariussoutier / gist:1376684
Created November 18, 2011 15:01
Game of Life in Scala
package keeponlyalive
/** A cell that exists is alive */
case class Cell(x: Int, y: Int) {
def survives(implicit world: Set[Cell]) = neighborCount(world) match {
case 2 => true
case 3 => true
case _ => false
}
@mariussoutier
mariussoutier / gist:1669512
Created January 24, 2012 10:28
Edit user or display 404 Not Found in Play 2.0
UserDAO.findByEmail(email).map { user =>
Ok(views.html.edit(userForm.fill(user)))
}.getOrElse(NotFound("User not found!"))
@mariussoutier
mariussoutier / gist:3237595
Created August 2, 2012 14:49
repeat helper with index
package views.html.helper
import play.api.templates.Html
object repeatWithIndex {
def apply(field: play.api.data.Field, min: Int = 1)(f: (play.api.data.Field, Int) => Html) = {
(0 until math.max(if (field.indexes.isEmpty) 0 else field.indexes.max + 1, min)).map(i => f(field("[" + i + "]"), i))
}
}
@mariussoutier
mariussoutier / Helper.scala
Created August 7, 2012 14:28
Helper for using sequences in Play Scala templates
package views.html.helper
import play.api.templates.Html
object definingNonEmpty {
def apply[T <: Seq[_]](t: T)(block: (T) => Html) = {
if (t.nonEmpty) block(t) else Html("")
}
}
@mariussoutier
mariussoutier / Time.scala
Created August 8, 2012 09:19
Executes a given block of code and prints the elapsed time
def time[T](block: => T): T = {
val start = System.currentTimeMillis
val res = block
val totalTime = System.currentTimeMillis - start
println("Elapsed time: %1d ms".format(totalTime))
res
}
@mariussoutier
mariussoutier / Helper.scala
Created August 21, 2012 11:46
More template sequence helpers
package views.html.helper
import play.api.templates.Html
// Executes the first block if non-empty, the second otherwise
// Passes the entire seq (as in defining)
object ifEmptyOrElse {
def apply[T <: Seq[_]](t: T)(nonEmptyBlock: (T) => Html)(emptyBlock: => Html) = {
if (t.nonEmpty) nonEmptyBlock(t) else emptyBlock
}
@mariussoutier
mariussoutier / Mail.scala
Created August 23, 2012 12:13
Sending mails fluently in Scala
package object mail {
implicit def stringToSeq(single: String): Seq[String] = Seq(single)
implicit def liftToOption[T](t: T): Option[T] = Some(t)
sealed abstract class MailType
case object Plain extends MailType
case object Rich extends MailType
case object MultiPart extends MailType
# Map to language via RegEx
/$language<[a-z]{2}>/videos/:id controllers.Video.showVideo(id: Long, language: String)
# Hard-code supported languages
/de/videos/:id controllers.Video.showVideo(id: Long, language = "de")
/en/videos/:id controllers.Video.showVideo(id: Long, language = "en")
package controllers
import play.api._
import play.api.mvc._
import play.api.libs.oauth._
import play.api.libs.ws._
import play.api.libs.iteratee._
object Twitter extends Controller {