Skip to content

Instantly share code, notes, and snippets.

@Arneball
Arneball / gist:6364058
Last active Dec 21, 2015
My json parser
View gist:6364058
object Parser {
def main(args: Array[String]): Unit = {
val shit = new JsonParser1()
println{
shit.parseAll(shit.something, """{"nagger": 3, "dicklen": 3.14e2, "slask": null, "arne": "sket", "gammelarray": ["arne", 3, true], "nested": {"apa": true}}""")
}
}
}
class JsonParser1 extends RegexParsers {
View gist:8241700
import java.io.{OutputStream, InputStream}
import Skandal._
import scala.annotation.tailrec
import scala.collection.mutable.LazyBuilder
import scala.collection.generic.CanBuildFrom
import scala.collection.mutable.Builder
import scala.collection.SeqLike
import scala.collection.generic.GenericTraversableTemplate
import scala.collection.generic.GenericCompanion
object Mustivar {
View gist:8317874
<target name="init" depends="-set-release-mode, -build-setup">
<property
name="scala-library.jar"
value="${scala.dir}/lib/scala-library.jar"
/>
<path id="build.classpath">
<pathelement location="${scala-library.jar}" />
<!--<pathelement location="${your.path}" />-->
<pathelement location="${build.dir}" />
</path>
View gist:8399601
/** For every collection that is a sequence, pimp the method groupedSeq */
implicit class GroupedSeq[SEQ[X]<:Seq[X], T](val seq: SEQ[T]) extends AnyVal {
/** Takes a function that maps elems of type T to the grouping kind U
* All sequential elements that has the same group U will be grouped in a SEQ
* Example {{{
* class Person(name: String)
* val people = List(Person("ADAM"), Person("adam"), Person("pelle"))
* people.groupeSeq{ _.name.toUpperCase } => List(List(Person(ADAM), Person(adam)), List(pelle))
* }}}
View gist:8541738
import scala.collection.generic.CanBuildFrom
object Batik extends App {
val fun: Int => Option[Int] = {
case 3 => Some(1337)
case 5 => None
case n => Some(n * 3)
}
val mustare = List(1,2,3,4,5).filterMap(fun)
View gist:9349865
import java.util.concurrent.LinkedBlockingDeque
import scala.annotation.tailrec
object `MyOwnFsm;)` extends App{
// val musta = new Musta
// musta ! "to5"
// musta ! "to6"
// musta ! "should crash"
// println
val pc = new PorcheCounter
1 to 3 foreach { _ => pc ! Car("porsche") }
@Arneball
Arneball / gist:9414661
Created Mar 7, 2014
Json Quasiquotes example
View gist:9414661
sealed trait JsValue {
override final def toString = mkString
def mkString: String
}
case class JsArray(value: JsValue*) extends JsValue {
def mkString = value.map{ _.mkString }.mkString("[", ", ", "]")
}
case class JsObj(value: (String, JsValue)*) extends JsValue {
def mkString = value.map{
case (k, v) => s""""$k": ${v.mkString}"""
@Arneball
Arneball / Macro
Last active Aug 29, 2015
"Serialize" an sequence of objects to an sequence of AnyRefs containing the elements of the object
View Macro
case class PackedArray[T](elems: Array[AnyRef])
object Packer {
def unapply[T](pa: PackedArray[T]): Seq[T] = macro unpack_impl[T]
def unpack_impl[T : c.WeakTypeTag](c: Context)(pa: c.Expr[PackedArray[T]]): c.Expr[Seq[T]] = {
import c.universe._
val tTyp = weakTypeOf[T]
val Some(fields) = tTyp.declarations.collectFirst {
case cons: MethodSymbol if cons.isPrimaryConstructor && !cons.isPublic =>
c.error(c.enclosingPosition, "No public primary constructor found")
Nil
View gist:b89ad0ac7a1ae81b3099
/**
* Created by arneball on 2014-05-08.
*/
import java.util.{List => JList}
import retrofit.client.Response
import retrofit.http.{Path, GET}
import retrofit.{RetrofitError, Callback, RestAdapter}
import collection.JavaConversions._
object RetroFit extends App {
@Arneball
Arneball / gist:a222b99a7b689bde9585
Last active Aug 29, 2015
Macro annotation extension method
View gist:a222b99a7b689bde9585
class ext extends StaticAnnotation {
def macroTransform(annottees: Any*) = macro extension.impl
}
object extension {
def impl(c: Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
import c.universe._
annottees.map{ _.tree }.head match {
case q"def $name[..$tp](...$params): $ret = $b" =>
val Seq(Seq(thiz, rest @ _*), rest2 @ _*) = params
You can’t perform that action at this time.