Skip to content

Instantly share code, notes, and snippets.

@fedesilva
Created May 24, 2011 00:50
Show Gist options
  • Save fedesilva/987946 to your computer and use it in GitHub Desktop.
Save fedesilva/987946 to your computer and use it in GitHub Desktop.
A very naive but cool arguments parser.
class Arguments(val rawArgs:Array[String], val flagNames:Seq[String] = Seq()) {
import Arguments._
val flags:Seq[Argument] =
rawArgs.intersect(flagNames).toList.map{ s => Flag(s) }
val values:Seq[Argument] =
rawArgs.diff(flags).grouped(2).toList.collect{ case Array(n,v) => Value(n,v)}
val all = values ++ flags
}
object Arguments {
sealed trait Argument {
val name:String
}
case class Flag(name:String) extends Argument
case class Value(name:String, value:String) extends Argument
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment