Create a gist now

Instantly share code, notes, and snippets.

These methods perform transformations on their input. They'll be tied together in different ways separately. Look for the blog post at blog.jessitron.com.
// from https://github.com/jessitron/BlogCode/blob/master/optionAsFlow.scala
object transformers {
def openFile(n: String) : Option[java.io.File] = {
val f = new java.io.File(n) // catch IOException
if (f.exists)
Some(f)
else
None
}
def readFirstLine (f : java.io.File) : Option[String] = {
val source = io.Source.fromFile(f)
try {
if (!source.hasNext)
None
else
Some(source.getLines.next)
} finally {
source.close
}
}
def parseLine(line : String) : Option[SecretMessage] = {
val ExpectedFormat = "The secret message is '(.*)'".r
line match {
case ExpectedFormat(secretMessage) => Some(SecretMessage(secretMessage))
case _ => None
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment