Skip to content

Instantly share code, notes, and snippets.

@Centaur
Created August 14, 2014 03:17
Show Gist options
  • Save Centaur/cb0d95116b6b691993c0 to your computer and use it in GitHub Desktop.
Save Centaur/cb0d95116b6b691993c0 to your computer and use it in GitHub Desktop.
refactor challenge
object PathList {
def unapplySeq(path: String): Option[Seq[String]] =
if(path.isEmpty) None
else Some(path.split("/"))
}
def testMatch(str: String): Boolean = str match {
case PathList("org", "scalaconsole", "fxui", "main", "ace-builds", sub) => true
case PathList("org", "scalaconsole", "fxui", "main", "ace-builds", sub, xs@_*) if sub != "src-min-noconflict" => true
case PathList("org", "scalaconsole", "fxui", "main", "ace-builds", "src-min-noconflict", mode) if mode.startsWith("mode-") && mode != "mode-scala.js" || mode.startsWith("worker-") => true
case PathList("org", "scalaconsole", "fxui", "main", "ace-builds", "src-min-noconflict", "snippets", snippet) if snippet != "scala.js" => true
case _ => false
}
assert(testMatch("org/scalaconsole/fxui/main/ace-builds/a.file"))
assert(testMatch("org/scalaconsole/fxui/main/ace-builds/sub/b.file"))
assert(!testMatch("org/scalaconsole/fxui/main/ace-builds/src-min-noconflict/c.file"))
assert(testMatch("org/scalaconsole/fxui/main/ace-builds/src-min-noconflict/mode-d.file"))
assert(testMatch("org/scalaconsole/fxui/main/ace-builds/src-min-noconflict/worker-e.file"))
assert(!testMatch("org/scalaconsole/fxui/main/ace-builds/src-min-noconflict/mode-scala.js"))
assert(testMatch("org/scalaconsole/fxui/main/ace-builds/src-min-noconflict/snippets/f.js"))
assert(!testMatch("org/scalaconsole/fxui/main/ace-builds/src-min-noconflict/snippets/scala.js"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment