-rw-r--r-- | demo-init.lua (renamed from demo.lua) | 36 | ||||
-rw-r--r-- | gslext.lua | 13 |
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 |