diff --git a/bootstrap.php b/bootstrap.php index 7891748..a6a61f2 100644 --- a/bootstrap.php +++ b/bootstrap.php @@ -19,6 +19,7 @@ function ml_get_lisp(): array // Register libraries (new MadLisp\Lib\Collections())->register($env); (new MadLisp\Lib\Compare())->register($env); + (new MadLisp\Lib\IO())->register($env); (new MadLisp\Lib\Math())->register($env); (new MadLisp\Lib\Strings())->register($env); (new MadLisp\Lib\Time())->register($env); diff --git a/src/Lib/IO.php b/src/Lib/IO.php new file mode 100644 index 0000000..f197d9f --- /dev/null +++ b/src/Lib/IO.php @@ -0,0 +1,34 @@ +set('file?', new CoreFunc('file?', 'Check if file exists.', 1, 1, + fn (string $filename) => file_exists($filename) + )); + + $env->set('fread', new CoreFunc('fread', 'Read contents of a file.', 1, 1, + function (string $filename) { + return @file_get_contents($filename); + } + )); + + $env->set('fwrite', new CoreFunc('fwrite', 'Write string (second argument) to file (first argument). Give true as optional third argument to append instead of overwrite.', 2, 3, + function (string $filename, $data, $append = false) { + $flags = 0; + if ($append) { + $flags = \FILE_APPEND; + } + + $result = @file_put_contents($filename, $data, $flags); + + return $result !== false; + } + )); + } +}