aboutsummaryrefslogtreecommitdiff
path: root/lib/filesystem/init.nom
diff options
context:
space:
mode:
Diffstat (limited to 'lib/filesystem/init.nom')
-rw-r--r--lib/filesystem/init.nom36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/filesystem/init.nom b/lib/filesystem/init.nom
new file mode 100644
index 0000000..a228bdc
--- /dev/null
+++ b/lib/filesystem/init.nom
@@ -0,0 +1,36 @@
+#!/usr/bin/env nomsu -V6.14
+#
+ This file defines some actions that interact with the filesystem.
+
+externally (files for $path) means:
+ $files = (=lua "Files.list(\$path)")
+ if $files:
+ $files = (List $files)
+ return $files
+
+external $(read file $filename) = $Files.read
+externally [
+ write to file $filename $text, to file $filename write $text
+ write $text to file $filename
+] all mean:
+ unless ($filename != "stdin"):
+ fail "Cannot write to stdin"
+
+ lua> ("
+ local file = io.open(\$filename, 'w')
+ file:write(\$text)
+ file:close()
+ ")
+
+externally (source lines of $tree) means:
+ $source = ($tree.source if ($tree is syntax tree) else $tree)
+ $file = (read file $source.filename)
+ return
+ [
+ : for $ in ($file, line number at $source.start) to
+ $file, line number at $source.stop
+ ..: add ($file, line $)
+ ], joined with "\n"
+
+external $(spoof file $text) = $Files.spoof
+external $(spoof file $filename = $text) = $Files.spoof