diff --git a/src/Lib/IO.php b/src/Lib/IO.php index a7842dd..3da2abd 100644 --- a/src/Lib/IO.php +++ b/src/Lib/IO.php @@ -67,21 +67,22 @@ class IO implements ILib )); // Readline support + if (extension_loaded('readline')) { + $env->set('readline', new CoreFunc('readline', 'Read line of user input.', 0, 1, + fn ($prompt = null) => readline($prompt) + )); - $env->set('readline', new CoreFunc('readline', 'Read line of user input.', 0, 1, - fn ($prompt = null) => readline($prompt) - )); + $env->set('readline-add', new CoreFunc('readline-add', 'Add new line of input to history.', 1, 1, + fn (string $line) => readline_add_history($line) + )); - $env->set('readline-add', new CoreFunc('readline-add', 'Add new line of input to history.', 1, 1, - fn (string $line) => readline_add_history($line) - )); + $env->set('readline-load', new CoreFunc('readline-load', 'Load the history for readline from a file.', 1, 1, + fn (string $file) => readline_read_history($file) + )); - $env->set('readline-load', new CoreFunc('readline-load', 'Load the history for readline from a file.', 1, 1, - fn (string $file) => readline_read_history($file) - )); - - $env->set('readline-save', new CoreFunc('readline-save', 'Save the readline history into a file.', 1, 1, - fn (string $file) => readline_write_history($file) - )); + $env->set('readline-save', new CoreFunc('readline-save', 'Save the readline history into a file.', 1, 1, + fn (string $file) => readline_write_history($file) + )); + } } } diff --git a/src/LispFactory.php b/src/LispFactory.php index e1d8de5..5114143 100644 --- a/src/LispFactory.php +++ b/src/LispFactory.php @@ -19,17 +19,25 @@ class LispFactory // Register core libraries (new Lib\Collections())->register($env); (new Lib\Compare())->register($env); - (new Lib\Json())->register($env); + if (extension_loaded('json')) { + (new Lib\Json())->register($env); + } (new Lib\Math())->register($env); - (new Lib\Regex())->register($env); + if (extension_loaded('pcre')) { + (new Lib\Regex())->register($env); + } (new Lib\Strings())->register($env); (new Lib\Time())->register($env); (new Lib\Types())->register($env); // Register unsafe libraries if not in safe-mode if (!$safemode) { - (new Lib\Database())->register($env); - (new Lib\Http())->register($env); + if (extension_loaded('PDO')) { + (new Lib\Database())->register($env); + } + if (extension_loaded('curl')) { + (new Lib\Http())->register($env); + } (new Lib\IO())->register($env); }