diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2017-05-24 20:41:10 +0100 |
---|---|---|
committer | Jon Pretty <jon.pretty@propensive.com> | 2017-05-24 20:41:10 +0100 |
commit | b039a653e9e90530a76aef42df9215c151c65b67 (patch) | |
tree | b925339332ed2824bb4a4910800fb0e923719c1a /examples/src/main/scala | |
download | magnolia-b039a653e9e90530a76aef42df9215c151c65b67.tar.gz magnolia-b039a653e9e90530a76aef42df9215c151c65b67.tar.bz2 magnolia-b039a653e9e90530a76aef42df9215c151c65b67.zip |
Initial checkin of messy code which appears to be a PoC
Diffstat (limited to 'examples/src/main/scala')
-rw-r--r-- | examples/src/main/scala/example.scala | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/examples/src/main/scala/example.scala b/examples/src/main/scala/example.scala new file mode 100644 index 0000000..7e9d80b --- /dev/null +++ b/examples/src/main/scala/example.scala @@ -0,0 +1,22 @@ +package magnolia + +import language.experimental.macros + +trait Extractor[T] { + def extract(src: String): T +} + +object Extractor extends Extractor_1 { + + def apply[T](fn: String => T): Extractor[T] = new Extractor[T] { + def extract(source: String): T = fn(source) + } + + implicit val intExtractor: Extractor[Int] = Extractor(_.toInt) + implicit val stringExtractor: Extractor[String] = Extractor(identity) + implicit val doubleExtractor: Extractor[Double] = Extractor(_.toDouble) +} + +trait Extractor_1 { + implicit def generic[T]: Extractor[T] = macro Macros.generic[T, Extractor[_]] +} |