diff options
Diffstat (limited to 'bundle-plugin/src/main/scala/com/yahoo/container/plugin/util/Extractors.scala')
-rw-r--r-- | bundle-plugin/src/main/scala/com/yahoo/container/plugin/util/Extractors.scala | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/bundle-plugin/src/main/scala/com/yahoo/container/plugin/util/Extractors.scala b/bundle-plugin/src/main/scala/com/yahoo/container/plugin/util/Extractors.scala new file mode 100644 index 00000000000..9d51d7c6d6d --- /dev/null +++ b/bundle-plugin/src/main/scala/com/yahoo/container/plugin/util/Extractors.scala @@ -0,0 +1,17 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.plugin.util + +/** +* @author tonytv +*/ +object Extractors { + class ListOf[C](val c : Class[C]) { + def unapply[X](xs : X) : Option[List[C]] = { + xs match { + case x :: xr if c.isInstance(x) => unapply(xr) map ( c.cast(x) :: _) + case Nil => Some(Nil) + case _ => None + } + } + } +} |