gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat
-rw-r--r--demo-init.lua (renamed from demo.lua)36
-rw-r--r--gslext.lua 13
2 files changed, 23 insertions, 26 deletions
diff --git a/demo.lua b/demo-init.lua
index 9248780b..19881949 100644
--- a/demo.lua
+++ b/demo-init.lua
@@ -20,7 +20,7 @@ for i, name in ipairs(demo_files) do
load_demo(name)
end
-local function print_demos()
+local function print_demos_list()
for group, t in pairs(demo_list) do
echo('*** ', group)
for k, v in ipairs(t) do
@@ -30,33 +30,17 @@ local function print_demos()
end
end
-function demo(name)
- if name == 'list' then
- print_demos()
- else
- for group, t in pairs(demo_list) do
- for k, entry in ipairs(t) do
- if entry.name == name then
- echo(entry.description)
- return entry.f()
- end
+local function load_demo(name)
+ for group, t in pairs(demo_list) do
+ for k, entry in ipairs(t) do
+ if entry.name == name then
+ return entry
end
end
- error [[
- No such demo.
- Please type demo('list') for a list of all available demos
- ]]
end
end
-echo 'Available demos:'
-echo ''
-print_demos()
-
-echo [[
- Write :
-
- > demo('name')
-
- to execute any of them.
-]]
+return {
+ list = print_demos_list,
+ load = load_demo,
+}
diff --git a/gslext.lua b/gslext.lua
index e4ded368..a7818e90 100644
--- a/gslext.lua
+++ b/gslext.lua
@@ -10,3 +10,16 @@ require('import')
gsl.linfit = require 'linfit'
gsl.bspline = require 'bspline'
+
+local demomod
+
+function demo(name)
+ if not demomod then demomod = require 'demo-init' end
+ local entry = demomod.load(name)
+ if not entry then
+ demomod.list()
+ else
+ echo(entry.description)
+ entry.f()
+ end
+end
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月14日 13:49:13 +0000

AltStyle によって変換されたページ (->オリジナル) /