aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/world/file.lux
diff options
context:
space:
mode:
authorEduardo Julian2017-12-04 20:47:29 -0400
committerEduardo Julian2017-12-04 20:47:29 -0400
commitf4c5f6ec0ad286f55a4c9e36677c321e99eefcbe (patch)
tree0ba7b268cc03eb67cf65b38d823b8eb8a10a71c9 /stdlib/source/lux/world/file.lux
parent077e8286b1168909d702ae0c28a0d2941c956f15 (diff)
- lux/world/file now works with Process, instead of Task.
Diffstat (limited to '')
-rw-r--r--stdlib/source/lux/world/file.lux80
1 files changed, 39 insertions, 41 deletions
diff --git a/stdlib/source/lux/world/file.lux b/stdlib/source/lux/world/file.lux
index 5fa4e1661..b33cf9540 100644
--- a/stdlib/source/lux/world/file.lux
+++ b/stdlib/source/lux/world/file.lux
@@ -2,14 +2,12 @@
lux
(lux (control [monad #+ do]
["ex" exception #+ exception:])
- (concurrency ["P" promise]
- ["T" task])
(data ["E" error]
(coll [array]))
(time ["i" instant]
["d" duration])
(world [blob #+ Blob])
- [io]
+ [io #+ Process]
[host]))
(exception: Could-Not-Read-All-Data)
@@ -51,47 +49,47 @@
(do-template [<name> <flag>]
[(def: #export (<name> data file)
- (-> Blob File (T.Task Unit))
- (P.future (do (E.ErrorT io.Monad<IO>)
- [stream (FileOutputStream::new [(java/io/File::new file) <flag>])
- _ (OutputStream::write [data] stream)
- _ (OutputStream::flush [] stream)]
- (AutoCloseable::close [] stream))))]
+ (-> Blob File (Process Unit))
+ (do (E.ErrorT io.Monad<IO>)
+ [stream (FileOutputStream::new [(java/io/File::new file) <flag>])
+ _ (OutputStream::write [data] stream)
+ _ (OutputStream::flush [] stream)]
+ (AutoCloseable::close [] stream)))]
[append true]
[write false]
)
(def: #export (read file)
- (-> File (T.Task Blob))
- (P.future (do (E.ErrorT io.Monad<IO>)
- [#let [file' (java/io/File::new file)]
- size (java/io/File::length [] file')
- #let [data (blob.create (int-to-nat size))]
- stream (FileInputStream::new [file'])
- bytes-read (InputStream::read [data] stream)
- _ (AutoCloseable::close [] stream)]
- (if (i/= size bytes-read)
- (wrap data)
- (io.io (ex.throw Could-Not-Read-All-Data file))))))
+ (-> File (Process Blob))
+ (do (E.ErrorT io.Monad<IO>)
+ [#let [file' (java/io/File::new file)]
+ size (java/io/File::length [] file')
+ #let [data (blob.create (int-to-nat size))]
+ stream (FileInputStream::new [file'])
+ bytes-read (InputStream::read [data] stream)
+ _ (AutoCloseable::close [] stream)]
+ (if (i/= size bytes-read)
+ (wrap data)
+ (io.io (ex.throw Could-Not-Read-All-Data file)))))
(def: #export (size file)
- (-> File (T.Task Nat))
- (P.future (do (E.ErrorT io.Monad<IO>)
- [size (java/io/File::length [] (java/io/File::new file))]
- (wrap (int-to-nat size)))))
+ (-> File (Process Nat))
+ (do (E.ErrorT io.Monad<IO>)
+ [size (java/io/File::length [] (java/io/File::new file))]
+ (wrap (int-to-nat size))))
(def: #export (files dir)
- (-> File (T.Task (List File)))
- (P.future (do (E.ErrorT io.Monad<IO>)
- [files (java/io/File::listFiles [] (java/io/File::new dir))]
- (monad.map @ (java/io/File::getAbsolutePath [])
- (array.to-list files)))))
+ (-> File (Process (List File)))
+ (do (E.ErrorT io.Monad<IO>)
+ [files (java/io/File::listFiles [] (java/io/File::new dir))]
+ (monad.map @ (java/io/File::getAbsolutePath [])
+ (array.to-list files))))
(do-template [<name> <method>]
[(def: #export (<name> file)
- (-> File (T.Task Bool))
- (P.future (<method> [] (java/io/File::new file))))]
+ (-> File (Process Bool))
+ (<method> [] (java/io/File::new file)))]
[exists? java/io/File::exists]
[make-dir java/io/File::mkdir]
@@ -104,17 +102,17 @@
)
(def: #export (move target source)
- (-> File File (T.Task Bool))
- (P.future (java/io/File::renameTo [(java/io/File::new target)]
- (java/io/File::new source))))
+ (-> File File (Process Bool))
+ (java/io/File::renameTo [(java/io/File::new target)]
+ (java/io/File::new source)))
(def: #export (get-last-modified file)
- (-> File (T.Task i.Instant))
- (P.future (do (E.ErrorT io.Monad<IO>)
- [millis (java/io/File::lastModified [] (java/io/File::new file))]
- (wrap (|> millis d.from-millis i.absolute)))))
+ (-> File (Process i.Instant))
+ (do (E.ErrorT io.Monad<IO>)
+ [millis (java/io/File::lastModified [] (java/io/File::new file))]
+ (wrap (|> millis d.from-millis i.absolute))))
(def: #export (set-last-modified time file)
- (-> i.Instant File (T.Task Bool))
- (P.future (java/io/File::setLastModified [(|> time i.relative d.to-millis)]
- (java/io/File::new file))))
+ (-> i.Instant File (Process Bool))
+ (java/io/File::setLastModified [(|> time i.relative d.to-millis)]
+ (java/io/File::new file)))