Skip to content

Commit

Permalink
Improved timer example
Browse files Browse the repository at this point in the history
Also pushed other half of system::fs rename
  • Loading branch information
lbfalvy committed Oct 12, 2023
1 parent ff486a5 commit ce34777
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
16 changes: 8 additions & 8 deletions examples/file-browser/main.orc
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
import system::(io, directfs, async)
import system::(io, fs, async)
import std::(to_string, to_uint, inspect)

const folder_view := \path. \next. do{
cps println $ "Contents of " ++ directfs::os_print path;
cps entries = async::block_on $ directfs::read_dir path;
cps println $ "Contents of " ++ fs::os_print path;
cps entries = async::block_on $ fs::read_dir path;
cps list::enumerate entries
|> list::map (pass \id. pass \name. \is_dir.
println $ to_string id ++ ": " ++ directfs::os_print name ++ if is_dir then "/" else ""
println $ to_string id ++ ": " ++ fs::os_print name ++ if is_dir then "/" else ""
)
|> list::chain;
cps print "select an entry, or .. to move up: ";
cps choice = readln;
if (choice == "..") then do {
let parent_path = directfs::pop_path path
let parent_path = fs::pop_path path
|> option::unwrap
|> tuple::pick 0 2;
next parent_path
} else do {
cps subname, is_dir = to_uint choice
|> (list::get entries)
|> option::unwrap;
let subpath = directfs::join_paths path subname;
let subpath = fs::join_paths path subname;
if is_dir then next subpath
else do {
cps file = async::block_on $ directfs::read_file subpath;
cps file = async::block_on $ fs::read_file subpath;
cps contents = async::block_on $ io::read_string file;
cps println contents;
next path
}
}
}

const main := loop_over (path = directfs::cwd) {
const main := loop_over (path = fs::cwd) {
cps path = folder_view path;
}

11 changes: 6 additions & 5 deletions examples/yes/main.orc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import system::async::(set_timer, yield)
import system::io::(readln, println)
import std::exit_status

const main := (
set_timer true 1 (println "y" yield) \cancel.
readln \a.
cancel exit_status::success
)
const main := do{
cps cancel = set_timer true 1 (println "y" yield);
cps _ = readln;
cps cancel;
exit_status::success
}
2 changes: 1 addition & 1 deletion src/systems/directfs/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ impl IntoSystem<'static> for DirectFS {
lexer_plugin: None,
line_parser: None,
constants: ConstTree::namespace(
[i.i("system"), i.i("directfs")],
[i.i("system"), i.i("fs")],
ConstTree::tree([
(i.i("read_file"), ConstTree::xfn(xfn_1ary(open_file_read_cmd))),
(i.i("read_dir"), ConstTree::xfn(xfn_1ary(read_dir_cmd))),
Expand Down

0 comments on commit ce34777

Please sign in to comment.