Skip to content

Instantly share code, notes, and snippets.

@jessitron
Created January 14, 2013 00:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jessitron/4526947 to your computer and use it in GitHub Desktop.
Save jessitron/4526947 to your computer and use it in GitHub Desktop.
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