Skip to content

Instantly share code, notes, and snippets.

View bwmcadams's full-sized avatar

Brendan McAdams bwmcadams

View GitHub Profile
diff --git a/pom.xml b/pom.xml
index ac0f723..32853f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
</scm>
<properties>
- <scala.version>2.7.4</scala.version>
+ <scala.version>2.8.0</scala.version>
// Test Method
@Stache("unitTest", Some(3600)) def foo(x: Int) = {
println("Multiplying X (%s) by 2".format(x))
x * 2
}
// Compiler steps
var block = tree.find( _.isInstanceOf[Block] ) orElse tree.find( _.isInstanceOf[Apply] ) getOrElse(throw new IllegalArgumentException("Cannot find method body for Stache annotated DefDef '%s'. Was looking for either a code block or a one liner. Is method abstract or something else boneheaded?".format(dDef.name)))
val notHaveBlankRows = new Matcher[Iterable[Map[String, String]]] {
def apply(x: => Iterable[Map[String, String]]) = {
(x().forall(row => row.forall(kv => kv._2 != null && kv._2 != "" && kv._2 != None)),
"No blank rows contained in Iterable.",
"Blank rows (all values in row are either '', null or None) found in Iterable.")
}
}
@bwmcadams
bwmcadams / Homebrew for Scala 2.8.1 RC4.rb
Created October 31, 2010 18:21
Homebrew recipe for Scala 2.8.1 RC4
require 'formula'
class Scala <Formula
homepage 'http://www.scala-lang.org/'
url 'http://www.scala-lang.org/downloads/distrib/files/scala-2.8.1.RC4.tgz'
version '2.8.1.RC4'
md5 '835f07e494004b33b82ded8f9b291cb1'
def install
rm_f Dir["bin/*.bat"]
@bwmcadams
bwmcadams / scala2.8.1.final_homebrew.rb
Created November 9, 2010 18:44
Homebrew recipe for Scala 2.8.1 final
require 'formula'
class Scala <Formula
homepage 'http://www.scala-lang.org/'
url 'http://www.scala-lang.org/downloads/distrib/files/scala-2.8.1.final.tgz'
version '2.8.1'
md5 '4fa66742341b5c9f6877ce64d409cb92'
def install
rm_f Dir["bin/*.bat"]
@bwmcadams
bwmcadams / Oops.scala
Created December 22, 2010 19:39
When a one line change produces an error like this you may have a MINOR issue.
[error] /Users/bwmcadams/code/mongodb/casbah/casbah-query/src/test/scala/DSLCoreOperatorsSpec.scala:1271: type mismatch;
[error] found : ((some other)$anon(in value <local DSLCoreOperatorsSpec>) forSome { type (some other)$anon(in value <local DSLCoreOperatorsSpec>) <: java.lang.Object with com.mongodb.casbah.commons.MongoDBObject{def $maxDistance[T](radius: T)(implicit evidence$15: Numeric[T]): (some other)$anon(in value <local DSLCoreOperatorsSpec>)} })
[error] required: $anon(in value <local DSLCoreOperatorsSpec>) where type $anon(in value <local DSLCoreOperatorsSpec>) <: java.lang.Object with com.mongodb.casbah.commons.MongoDBObject{def $maxDistance[T](radius: T)(implicit evidence$15: Numeric[T]): $anon(in value <local DSLCoreOperatorsSpec>)}
[error] near must notBeNull
[error] ^
((some other)$anon(in value <local DSLCoreOperatorsSpec>) forSome { type (some other)$anon(in value <local DSLCoreOperatorsSpec>) <: java.lang.Object with com.mongodb.casbah.commons.MongoDBObject{def $maxDista
@bwmcadams
bwmcadams / Oops.scala
Created December 22, 2010 19:39
When a one line change produces an error like this you may have a MINOR issue.
[error] /Users/bwmcadams/code/mongodb/casbah/casbah-query/src/test/scala/DSLCoreOperatorsSpec.scala:1271: type mismatch;
[error] found : ((some other)$anon(in value <local DSLCoreOperatorsSpec>) forSome { type (some other)$anon(in value <local DSLCoreOperatorsSpec>) <: java.lang.Object with com.mongodb.casbah.commons.MongoDBObject{def $maxDistance[T](radius: T)(implicit evidence$15: Numeric[T]): (some other)$anon(in value <local DSLCoreOperatorsSpec>)} })
[error] required: $anon(in value <local DSLCoreOperatorsSpec>) where type $anon(in value <local DSLCoreOperatorsSpec>) <: java.lang.Object with com.mongodb.casbah.commons.MongoDBObject{def $maxDistance[T](radius: T)(implicit evidence$15: Numeric[T]): $anon(in value <local DSLCoreOperatorsSpec>)}
[error] near must notBeNull
[error] ^
((some other)$anon(in value <local DSLCoreOperatorsSpec>) forSome { type (some other)$anon(in value <local DSLCoreOperatorsSpec>) <: java.lang.Object with com.mongodb.casbah.commons.MongoDBObject{def $maxDista
@bwmcadams
bwmcadams / Casbah_Field_Limits.scala
Created January 3, 2011 20:06
Select a limited set of fields with Casbah
import com.mongodb.casbah.Imports._
val conn = MongoConnection()
val db = conn("test")
val coll = db("foo")
for (x <- coll.find(MongoDBObject("_id" -> new ObjectId("4cd2d357c575954934c5a975")),
MongoDBObject("x" -> 1))) println(x)
@bwmcadams
bwmcadams / PimpMyMap.scala
Created January 18, 2011 18:04
Adding some Casbah object methods to Scala Maps
implicit def pimpMyMap(underlying: Map[_,_]) = new {
/** Lazy utility method to allow typing without conflicting with Map's required get() method and causing ambiguity */
def getAs[A <: Any : Manifest](key: Any): Option[A] = {
require(manifest[A] != manifest[scala.Nothing],
"Type inference failed; getAs[A]() requires an explicit type argument " +
"(e.g. mapObject.getAs[<ReturnType>](somegetAKey) ) to function correctly.")
underlying.get(key) match {
case null => None
@bwmcadams
bwmcadams / CallableMap.scala
Created January 26, 2011 21:34
Quick and dirty version of Map in Scala that can be 'called' like Python dicts where unknown methods are pulled out as Map keys. Uses the 2.9 dynamic trait.
class CallableMap extends scala.collection.mutable.HashMap[String, Any] with Dynamic {
def invokeDynamic(name: String)(args: Any*) = {
println("Invoke Dynamic: (name = %s)(args: %s)".format(name, args))
get(name)
}
def typed[T]: T = {
asInstanceOf[T]
}