From d4410bcde3b05069e529488c0f41c33f430f3e20 Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Thu, 1 Dec 2022 07:07:05 -0500 Subject: [PATCH] with file reader --- data/example.txt | 2 ++ .../scala/com/htmlism/firepower/demo/File.scala | 9 +++++++++ .../com/htmlism/firepower/demo/PrintPrograms.scala | 9 ++++++--- .../scala/com/htmlism/firepower/demo/package.scala | 13 +++++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 data/example.txt create mode 100644 firepower-demo/src/main/scala/com/htmlism/firepower/demo/File.scala create mode 100644 firepower-demo/src/main/scala/com/htmlism/firepower/demo/package.scala diff --git a/data/example.txt b/data/example.txt new file mode 100644 index 0000000..3bd1f0e --- /dev/null +++ b/data/example.txt @@ -0,0 +1,2 @@ +foo +bar diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/File.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/File.scala new file mode 100644 index 0000000..ffa383e --- /dev/null +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/File.scala @@ -0,0 +1,9 @@ +package com.htmlism.firepower.demo + +import java.nio.file.Path + +case class File(path: Path) + +object File: + def apply(first: String, fragments: String*): File = + File(Path.of(first, fragments: _*)) diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala index b39ef14..4fe4efe 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/PrintPrograms.scala @@ -1,8 +1,11 @@ +package com.htmlism.firepower.demo + import zio.* import java.io.IOException object PrintPrograms extends ZIOAppDefault: - def run: IO[IOException, Unit] = - Console - .printLine("Hello, World!") + def run: ZIO[Any, Throwable, Unit] = + File("data/example.txt") + .contents + .map(println) diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/package.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/package.scala new file mode 100644 index 0000000..4a84f72 --- /dev/null +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/package.scala @@ -0,0 +1,13 @@ +package com.htmlism.firepower + +import java.nio.charset.Charset +import java.nio.file.Files + +import zio.* + +package object demo: + implicit class FileOps(f: demo.File): + def contents: Task[String] = + ZIO.attempt { + Files.readAllBytes(f.path) + }.map(xs => new String(xs, Charset.defaultCharset()))