rufus-lua-win 5.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/lib/rufus/lua/win.rb +18 -0
- data/lib/rufus/lua/win/version.rb +7 -0
- data/rufus-lua-win.gemspec +23 -0
- data/vendor/lua/bin/liblua.dll +0 -0
- data/vendor/lua/lib/lua/LuaXml.lua +119 -0
- data/vendor/lua/lib/lua/alien.lua +250 -0
- data/vendor/lua/lib/lua/alien/core.dll +0 -0
- data/vendor/lua/lib/lua/alien/struct.dll +0 -0
- data/vendor/lua/lib/lua/base.lua +536 -0
- data/vendor/lua/lib/lua/bin.lua +20 -0
- data/vendor/lua/lib/lua/bit.dll +0 -0
- data/vendor/lua/lib/lua/cdlua.dll +0 -0
- data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
- data/vendor/lua/lib/lua/cdluagl.dll +0 -0
- data/vendor/lua/lib/lua/cdluaim.dll +0 -0
- data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
- data/vendor/lua/lib/lua/copas.lua +543 -0
- data/vendor/lua/lib/lua/coxpcall.lua +57 -0
- data/vendor/lua/lib/lua/date.lua +745 -0
- data/vendor/lua/lib/lua/debug_ext.lua +84 -0
- data/vendor/lua/lib/lua/debug_init.lua +2 -0
- data/vendor/lua/lib/lua/des56.dll +0 -0
- data/vendor/lua/lib/lua/dist/config.lua +109 -0
- data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
- data/vendor/lua/lib/lua/dist/depends.lua +601 -0
- data/vendor/lua/lib/lua/dist/git.lua +307 -0
- data/vendor/lua/lib/lua/dist/init.lua +278 -0
- data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
- data/vendor/lua/lib/lua/dist/package.lua +583 -0
- data/vendor/lua/lib/lua/dist/sys.lua +367 -0
- data/vendor/lua/lib/lua/dist/utils.lua +130 -0
- data/vendor/lua/lib/lua/ex.dll +0 -0
- data/vendor/lua/lib/lua/fstable.lua +116 -0
- data/vendor/lua/lib/lua/getopt.lua +273 -0
- data/vendor/lua/lib/lua/git.lua +5 -0
- data/vendor/lua/lib/lua/git/core.dll +0 -0
- data/vendor/lua/lib/lua/git/objects.lua +121 -0
- data/vendor/lua/lib/lua/git/pack.lua +316 -0
- data/vendor/lua/lib/lua/git/protocol.lua +188 -0
- data/vendor/lua/lib/lua/git/repo.lua +283 -0
- data/vendor/lua/lib/lua/git/util.lua +233 -0
- data/vendor/lua/lib/lua/gzio.dll +0 -0
- data/vendor/lua/lib/lua/gzip.lua +81 -0
- data/vendor/lua/lib/lua/iconv.dll +0 -0
- data/vendor/lua/lib/lua/imlua.dll +0 -0
- data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
- data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
- data/vendor/lua/lib/lua/io_ext.lua +115 -0
- data/vendor/lua/lib/lua/iuplua.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
- data/vendor/lua/lib/lua/iupluacd.dll +0 -0
- data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
- data/vendor/lua/lib/lua/iupluagl.dll +0 -0
- data/vendor/lua/lib/lua/iupluaim.dll +0 -0
- data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
- data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
- data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
- data/vendor/lua/lib/lua/lanes.lua +591 -0
- data/vendor/lua/lib/lua/lanes/core.dll +0 -0
- data/vendor/lua/lib/lua/lcs.lua +55 -0
- data/vendor/lua/lib/lua/lemock.lua +659 -0
- data/vendor/lua/lib/lua/lfs.dll +0 -0
- data/vendor/lua/lib/lua/list.lua +375 -0
- data/vendor/lua/lib/lua/logging.lua +189 -0
- data/vendor/lua/lib/lua/logging/console.lua +22 -0
- data/vendor/lua/lib/lua/logging/email.lua +44 -0
- data/vendor/lua/lib/lua/logging/file.lua +55 -0
- data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
- data/vendor/lua/lib/lua/logging/socket.lua +35 -0
- data/vendor/lua/lib/lua/logging/sql.lua +64 -0
- data/vendor/lua/lib/lua/loop/base.lua +68 -0
- data/vendor/lua/lib/lua/loop/cached.lua +312 -0
- data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
- data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
- data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
- data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
- data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
- data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
- data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
- data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
- data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
- data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
- data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
- data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
- data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
- data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
- data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
- data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
- data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
- data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
- data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
- data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
- data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
- data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
- data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
- data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
- data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
- data/vendor/lua/lib/lua/loop/simple.lua +75 -0
- data/vendor/lua/lib/lua/loop/table.lua +71 -0
- data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
- data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
- data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
- data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
- data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
- data/vendor/lua/lib/lua/lpeg.dll +0 -0
- data/vendor/lua/lib/lua/ltn12.lua +292 -0
- data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
- data/vendor/lua/lib/lua/luacurl.dll +0 -0
- data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
- data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
- data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
- data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
- data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
- data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
- data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
- data/vendor/lua/lib/lua/luagl.dll +0 -0
- data/vendor/lua/lib/lua/luaglu.dll +0 -0
- data/vendor/lua/lib/lua/luaidl.lua +113 -0
- data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
- data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
- data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
- data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
- data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
- data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
- data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
- data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
- data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
- data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
- data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
- data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
- data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
- data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
- data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
- data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
- data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
- data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
- data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
- data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
- data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
- data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
- data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
- data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
- data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
- data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
- data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
- data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
- data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
- data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
- data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
- data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
- data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
- data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
- data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
- data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
- data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
- data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
- data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
- data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
- data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
- data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
- data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
- data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
- data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
- data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
- data/vendor/lua/lib/lua/luars232.dll +0 -0
- data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
- data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
- data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
- data/vendor/lua/lib/lua/luaunit.lua +601 -0
- data/vendor/lua/lib/lua/lxp.dll +0 -0
- data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
- data/vendor/lua/lib/lua/math_ext.lua +27 -0
- data/vendor/lua/lib/lua/mbox.lua +53 -0
- data/vendor/lua/lib/lua/md5.lua +19 -0
- data/vendor/lua/lib/lua/md5/core.dll +0 -0
- data/vendor/lua/lib/lua/metalua.lua +0 -0
- data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
- data/vendor/lua/lib/lua/metalua/base.lua +104 -0
- data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
- data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
- data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
- data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
- data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
- data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
- data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
- data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
- data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
- data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
- data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
- data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
- data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
- data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
- data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
- data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
- data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
- data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
- data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
- data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
- data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
- data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
- data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
- data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
- data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
- data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
- data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
- data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
- data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
- data/vendor/lua/lib/lua/mime.lua +87 -0
- data/vendor/lua/lib/lua/mime/core.dll +0 -0
- data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
- data/vendor/lua/lib/lua/modules.lua +16 -0
- data/vendor/lua/lib/lua/object.lua +56 -0
- data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
- data/vendor/lua/lib/lua/oil/arch.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
- data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
- data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
- data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
- data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
- data/vendor/lua/lib/lua/oil/assert.lua +87 -0
- data/vendor/lua/lib/lua/oil/builder.lua +45 -0
- data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
- data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
- data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
- data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/compat.lua +846 -0
- data/vendor/lua/lib/lua/oil/component.lua +1 -0
- data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
- data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
- data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
- data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
- data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
- data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
- data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
- data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
- data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
- data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
- data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
- data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
- data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
- data/vendor/lua/lib/lua/oil/oo.lua +1 -0
- data/vendor/lua/lib/lua/oil/port.lua +1 -0
- data/vendor/lua/lib/lua/oil/properties.lua +57 -0
- data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
- data/vendor/lua/lib/lua/package_ext.lua +15 -0
- data/vendor/lua/lib/lua/parser.lua +268 -0
- data/vendor/lua/lib/lua/pl/Date.lua +555 -0
- data/vendor/lua/lib/lua/pl/List.lua +613 -0
- data/vendor/lua/lib/lua/pl/Map.lua +113 -0
- data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
- data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
- data/vendor/lua/lib/lua/pl/Set.lua +153 -0
- data/vendor/lua/lib/lua/pl/app.lua +165 -0
- data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
- data/vendor/lua/lib/lua/pl/class.lua +180 -0
- data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
- data/vendor/lua/lib/lua/pl/config.lua +176 -0
- data/vendor/lua/lib/lua/pl/data.lua +606 -0
- data/vendor/lua/lib/lua/pl/dir.lua +475 -0
- data/vendor/lua/lib/lua/pl/file.lua +70 -0
- data/vendor/lua/lib/lua/pl/func.lua +376 -0
- data/vendor/lua/lib/lua/pl/init.lua +68 -0
- data/vendor/lua/lib/lua/pl/input.lua +173 -0
- data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
- data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
- data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
- data/vendor/lua/lib/lua/pl/operator.lua +201 -0
- data/vendor/lua/lib/lua/pl/path.lua +398 -0
- data/vendor/lua/lib/lua/pl/permute.lua +63 -0
- data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
- data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
- data/vendor/lua/lib/lua/pl/seq.lua +551 -0
- data/vendor/lua/lib/lua/pl/sip.lua +344 -0
- data/vendor/lua/lib/lua/pl/strict.lua +70 -0
- data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
- data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
- data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
- data/vendor/lua/lib/lua/pl/template.lua +103 -0
- data/vendor/lua/lib/lua/pl/test.lua +135 -0
- data/vendor/lua/lib/lua/pl/text.lua +243 -0
- data/vendor/lua/lib/lua/pl/utils.lua +550 -0
- data/vendor/lua/lib/lua/pl/xml.lua +689 -0
- data/vendor/lua/lib/lua/profiler.dll +0 -0
- data/vendor/lua/lib/lua/re.lua +248 -0
- data/vendor/lua/lib/lua/rex_onig.dll +0 -0
- data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
- data/vendor/lua/lib/lua/rex_posix.dll +0 -0
- data/vendor/lua/lib/lua/rings.dll +0 -0
- data/vendor/lua/lib/lua/serialize.lua +193 -0
- data/vendor/lua/lib/lua/set.lua +149 -0
- data/vendor/lua/lib/lua/socket.lua +133 -0
- data/vendor/lua/lib/lua/socket/core.dll +0 -0
- data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
- data/vendor/lua/lib/lua/socket/http.lua +350 -0
- data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
- data/vendor/lua/lib/lua/socket/tp.lua +123 -0
- data/vendor/lua/lib/lua/socket/url.lua +297 -0
- data/vendor/lua/lib/lua/ssl.dll +0 -0
- data/vendor/lua/lib/lua/ssl.lua +93 -0
- data/vendor/lua/lib/lua/ssl/https.lua +138 -0
- data/vendor/lua/lib/lua/stable.lua +28 -0
- data/vendor/lua/lib/lua/std.lua +16 -0
- data/vendor/lua/lib/lua/strbuf.lua +32 -0
- data/vendor/lua/lib/lua/strict.lua +45 -0
- data/vendor/lua/lib/lua/string_ext.lua +274 -0
- data/vendor/lua/lib/lua/table_ext.lua +117 -0
- data/vendor/lua/lib/lua/tar.lua +262 -0
- data/vendor/lua/lib/lua/task.dll +0 -0
- data/vendor/lua/lib/lua/tree.lua +81 -0
- data/vendor/lua/lib/lua/unicode.dll +0 -0
- data/vendor/lua/lib/lua/verbose_require.lua +11 -0
- data/vendor/lua/lib/lua/vstruct.lua +86 -0
- data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
- data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
- data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
- data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
- data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
- data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
- data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
- data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
- data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
- data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
- data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
- data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
- data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
- data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
- data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
- data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
- data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
- data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
- data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
- data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
- data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
- data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
- data/vendor/lua/lib/lua/wx.dll +0 -0
- data/vendor/lua/lib/lua/xml.lua +75 -0
- data/vendor/lua/lib/lua/zip.dll +0 -0
- data/vendor/lua/lib/lua/zlib.dll +0 -0
- metadata +529 -0
@@ -0,0 +1,173 @@
|
|
1
|
+
--- Iterators for extracting words or numbers from an input source.
|
2
|
+
--
|
3
|
+
-- require 'pl'
|
4
|
+
-- local total,n = seq.sum(input.numbers())
|
5
|
+
-- print('average',total/n)
|
6
|
+
--
|
7
|
+
-- See @{06-data.md.Reading_Unstructured_Text_Data|here}
|
8
|
+
--
|
9
|
+
-- Dependencies: `pl.utils`
|
10
|
+
-- @module pl.input
|
11
|
+
local strfind = string.find
|
12
|
+
local strsub = string.sub
|
13
|
+
local strmatch = string.match
|
14
|
+
local utils = require 'pl.utils'
|
15
|
+
local pairs,type,unpack,tonumber = pairs,type,unpack or table.unpack,tonumber
|
16
|
+
local patterns = utils.patterns
|
17
|
+
local io = io
|
18
|
+
local assert_arg = utils.assert_arg
|
19
|
+
|
20
|
+
--[[
|
21
|
+
module ('pl.input',utils._module)
|
22
|
+
]]
|
23
|
+
|
24
|
+
local input = {}
|
25
|
+
|
26
|
+
--- create an iterator over all tokens.
|
27
|
+
-- based on allwords from PiL, 7.1
|
28
|
+
-- @param getter any function that returns a line of text
|
29
|
+
-- @param pattern
|
30
|
+
-- @param fn Optionally can pass a function to process each token as it/s found.
|
31
|
+
-- @return an iterator
|
32
|
+
function input.alltokens (getter,pattern,fn)
|
33
|
+
local line = getter() -- current line
|
34
|
+
local pos = 1 -- current position in the line
|
35
|
+
return function () -- iterator function
|
36
|
+
while line do -- repeat while there are lines
|
37
|
+
local s, e = strfind(line, pattern, pos)
|
38
|
+
if s then -- found a word?
|
39
|
+
pos = e + 1 -- next position is after this token
|
40
|
+
local res = strsub(line, s, e) -- return the token
|
41
|
+
if fn then res = fn(res) end
|
42
|
+
return res
|
43
|
+
else
|
44
|
+
line = getter() -- token not found; try next line
|
45
|
+
pos = 1 -- restart from first position
|
46
|
+
end
|
47
|
+
end
|
48
|
+
return nil -- no more lines: end of traversal
|
49
|
+
end
|
50
|
+
end
|
51
|
+
local alltokens = input.alltokens
|
52
|
+
|
53
|
+
-- question: shd this _split_ a string containing line feeds?
|
54
|
+
|
55
|
+
--- create a function which grabs the next value from a source. If the source is a string, then the getter
|
56
|
+
-- will return the string and thereafter return nil. If not specified then the source is assumed to be stdin.
|
57
|
+
-- @param f a string or a file-like object (i.e. has a read() method which returns the next line)
|
58
|
+
-- @return a getter function
|
59
|
+
function input.create_getter(f)
|
60
|
+
if f then
|
61
|
+
if type(f) == 'string' then
|
62
|
+
local ls = utils.split(f,'\n')
|
63
|
+
local i,n = 0,#ls
|
64
|
+
return function()
|
65
|
+
i = i + 1
|
66
|
+
if i > n then return nil end
|
67
|
+
return ls[i]
|
68
|
+
end
|
69
|
+
else
|
70
|
+
-- anything that supports the read() method!
|
71
|
+
if not f.read then error('not a file-like object') end
|
72
|
+
return function() return f:read() end
|
73
|
+
end
|
74
|
+
else
|
75
|
+
return io.read -- i.e. just read from stdin
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
--- generate a sequence of numbers from a source.
|
80
|
+
-- @param f A source
|
81
|
+
-- @return An iterator
|
82
|
+
function input.numbers(f)
|
83
|
+
return alltokens(input.create_getter(f),
|
84
|
+
'('..patterns.FLOAT..')',tonumber)
|
85
|
+
end
|
86
|
+
|
87
|
+
--- generate a sequence of words from a source.
|
88
|
+
-- @param f A source
|
89
|
+
-- @return An iterator
|
90
|
+
function input.words(f)
|
91
|
+
return alltokens(input.create_getter(f),"%w+")
|
92
|
+
end
|
93
|
+
|
94
|
+
local function apply_tonumber (no_fail,...)
|
95
|
+
local args = {...}
|
96
|
+
for i = 1,#args do
|
97
|
+
local n = tonumber(args[i])
|
98
|
+
if n == nil then
|
99
|
+
if not no_fail then return nil,args[i] end
|
100
|
+
else
|
101
|
+
args[i] = n
|
102
|
+
end
|
103
|
+
end
|
104
|
+
return args
|
105
|
+
end
|
106
|
+
|
107
|
+
--- parse an input source into fields.
|
108
|
+
-- By default, will fail if it cannot convert a field to a number.
|
109
|
+
-- @param ids a list of field indices, or a maximum field index
|
110
|
+
-- @param delim delimiter to parse fields (default space)
|
111
|
+
-- @param f a source @see create_getter
|
112
|
+
-- @param opts option table, {no_fail=true}
|
113
|
+
-- @return an iterator with the field values
|
114
|
+
-- @usage for x,y in fields {2,3} do print(x,y) end -- 2nd and 3rd fields from stdin
|
115
|
+
function input.fields (ids,delim,f,opts)
|
116
|
+
local sep
|
117
|
+
local s
|
118
|
+
local getter = input.create_getter(f)
|
119
|
+
local no_fail = opts and opts.no_fail
|
120
|
+
local no_convert = opts and opts.no_convert
|
121
|
+
if not delim or delim == ' ' then
|
122
|
+
delim = '%s'
|
123
|
+
sep = '%s+'
|
124
|
+
s = '%s*'
|
125
|
+
else
|
126
|
+
sep = delim
|
127
|
+
s = ''
|
128
|
+
end
|
129
|
+
local max_id = 0
|
130
|
+
if type(ids) == 'table' then
|
131
|
+
for i,id in pairs(ids) do
|
132
|
+
if id > max_id then max_id = id end
|
133
|
+
end
|
134
|
+
else
|
135
|
+
max_id = ids
|
136
|
+
ids = {}
|
137
|
+
for i = 1,max_id do ids[#ids+1] = i end
|
138
|
+
end
|
139
|
+
local pat = '[^'..delim..']*'
|
140
|
+
local k = 1
|
141
|
+
for i = 1,max_id do
|
142
|
+
if ids[k] == i then
|
143
|
+
k = k + 1
|
144
|
+
s = s..'('..pat..')'
|
145
|
+
else
|
146
|
+
s = s..pat
|
147
|
+
end
|
148
|
+
if i < max_id then
|
149
|
+
s = s..sep
|
150
|
+
end
|
151
|
+
end
|
152
|
+
local linecount = 1
|
153
|
+
return function()
|
154
|
+
local line,results,err
|
155
|
+
repeat
|
156
|
+
line = getter()
|
157
|
+
linecount = linecount + 1
|
158
|
+
if not line then return nil end
|
159
|
+
if no_convert then
|
160
|
+
results = {strmatch(line,s)}
|
161
|
+
else
|
162
|
+
results,err = apply_tonumber(no_fail,strmatch(line,s))
|
163
|
+
if not results then
|
164
|
+
utils.quit("line "..(linecount-1)..": cannot convert '"..err.."' to number")
|
165
|
+
end
|
166
|
+
end
|
167
|
+
until #results > 0
|
168
|
+
return unpack(results)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
return input
|
173
|
+
|
@@ -0,0 +1,407 @@
|
|
1
|
+
--- Simple command-line parsing using human-readable specification.
|
2
|
+
-- Supports GNU-style parameters.
|
3
|
+
--
|
4
|
+
-- lapp = require 'pl.lapp'
|
5
|
+
-- local args = lapp [[
|
6
|
+
-- Does some calculations
|
7
|
+
-- -o,--offset (default 0.0) Offset to add to scaled number
|
8
|
+
-- -s,--scale (number) Scaling factor
|
9
|
+
-- <number> (number ) Number to be scaled
|
10
|
+
-- ]]
|
11
|
+
--
|
12
|
+
-- print(args.offset + args.scale * args.number)
|
13
|
+
--
|
14
|
+
-- Lines begining with '-' are flags; there may be a short and a long name;
|
15
|
+
-- lines begining wih '<var>' are arguments. Anything in parens after
|
16
|
+
-- the flag/argument is either a default, a type name or a range constraint.
|
17
|
+
--
|
18
|
+
-- >See @{08-additional.md.Command_line_Programs_with_Lapp|the Guide}
|
19
|
+
--
|
20
|
+
-- Dependencies: `pl.sip`
|
21
|
+
-- @module pl.lapp
|
22
|
+
|
23
|
+
local status,sip = pcall(require,'pl.sip')
|
24
|
+
if not status then
|
25
|
+
sip = require 'sip'
|
26
|
+
end
|
27
|
+
local match = sip.match_at_start
|
28
|
+
local append,tinsert = table.insert,table.insert
|
29
|
+
|
30
|
+
sip.custom_pattern('X','(%a[%w_%-]*)')
|
31
|
+
|
32
|
+
local function lines(s) return s:gmatch('([^\n]*)\n') end
|
33
|
+
local function lstrip(str) return str:gsub('^%s+','') end
|
34
|
+
local function strip(str) return lstrip(str):gsub('%s+$','') end
|
35
|
+
local function at(s,k) return s:sub(k,k) end
|
36
|
+
local function isdigit(s) return s:find('^%d+$') == 1 end
|
37
|
+
|
38
|
+
local lapp = {}
|
39
|
+
|
40
|
+
local open_files,parms,aliases,parmlist,usage,windows,script
|
41
|
+
|
42
|
+
lapp.callback = false -- keep Strict happy
|
43
|
+
|
44
|
+
local filetypes = {
|
45
|
+
stdin = {io.stdin,'file-in'}, stdout = {io.stdout,'file-out'},
|
46
|
+
stderr = {io.stderr,'file-out'}
|
47
|
+
}
|
48
|
+
|
49
|
+
--- controls whether to dump usage on error.
|
50
|
+
-- Defaults to true
|
51
|
+
lapp.show_usage_error = true
|
52
|
+
|
53
|
+
--- quit this script immediately.
|
54
|
+
-- @param msg optional message
|
55
|
+
-- @param no_usage suppress 'usage' display
|
56
|
+
function lapp.quit(msg,no_usage)
|
57
|
+
if no_usage == 'throw' then
|
58
|
+
error(msg)
|
59
|
+
end
|
60
|
+
if msg then
|
61
|
+
io.stderr:write(msg..'\n\n')
|
62
|
+
end
|
63
|
+
if not no_usage then
|
64
|
+
io.stderr:write(usage)
|
65
|
+
end
|
66
|
+
os.exit(1)
|
67
|
+
end
|
68
|
+
|
69
|
+
--- print an error to stderr and quit.
|
70
|
+
-- @param msg a message
|
71
|
+
-- @param no_usage suppress 'usage' display
|
72
|
+
function lapp.error(msg,no_usage)
|
73
|
+
if not lapp.show_usage_error then
|
74
|
+
no_usage = true
|
75
|
+
elseif lapp.show_usage_error == 'throw' then
|
76
|
+
no_usage = 'throw'
|
77
|
+
end
|
78
|
+
lapp.quit(script..': '..msg,no_usage)
|
79
|
+
end
|
80
|
+
|
81
|
+
--- open a file.
|
82
|
+
-- This will quit on error, and keep a list of file objects for later cleanup.
|
83
|
+
-- @param file filename
|
84
|
+
-- @param opt same as second parameter of <code>io.open</code>
|
85
|
+
function lapp.open (file,opt)
|
86
|
+
local val,err = io.open(file,opt)
|
87
|
+
if not val then lapp.error(err,true) end
|
88
|
+
append(open_files,val)
|
89
|
+
return val
|
90
|
+
end
|
91
|
+
|
92
|
+
--- quit if the condition is false.
|
93
|
+
-- @param condn a condition
|
94
|
+
-- @param msg an optional message
|
95
|
+
function lapp.assert(condn,msg)
|
96
|
+
if not condn then
|
97
|
+
lapp.error(msg)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
local function range_check(x,min,max,parm)
|
102
|
+
lapp.assert(min <= x and max >= x,parm..' out of range')
|
103
|
+
end
|
104
|
+
|
105
|
+
local function xtonumber(s)
|
106
|
+
local val = tonumber(s)
|
107
|
+
if not val then lapp.error("unable to convert to number: "..s) end
|
108
|
+
return val
|
109
|
+
end
|
110
|
+
|
111
|
+
local types
|
112
|
+
|
113
|
+
local builtin_types = {string=true,number=true,['file-in']='file',['file-out']='file',boolean=true}
|
114
|
+
|
115
|
+
local function convert_parameter(ps,val)
|
116
|
+
if ps.converter then
|
117
|
+
val = ps.converter(val)
|
118
|
+
end
|
119
|
+
if ps.type == 'number' then
|
120
|
+
val = xtonumber(val)
|
121
|
+
elseif builtin_types[ps.type] == 'file' then
|
122
|
+
val = lapp.open(val,(ps.type == 'file-in' and 'r') or 'w' )
|
123
|
+
elseif ps.type == 'boolean' then
|
124
|
+
val = true
|
125
|
+
end
|
126
|
+
if ps.constraint then
|
127
|
+
ps.constraint(val)
|
128
|
+
end
|
129
|
+
return val
|
130
|
+
end
|
131
|
+
|
132
|
+
--- add a new type to Lapp. These appear in parens after the value like
|
133
|
+
-- a range constraint, e.g. '<ival> (integer) Process PID'
|
134
|
+
-- @param name name of type
|
135
|
+
-- @param converter either a function to convert values, or a Lua type name.
|
136
|
+
-- @param constraint optional function to verify values, should use lapp.error
|
137
|
+
-- if failed.
|
138
|
+
function lapp.add_type (name,converter,constraint)
|
139
|
+
types[name] = {converter=converter,constraint=constraint}
|
140
|
+
end
|
141
|
+
|
142
|
+
local function force_short(short)
|
143
|
+
lapp.assert(#short==1,short..": short parameters should be one character")
|
144
|
+
end
|
145
|
+
|
146
|
+
local function process_default (sval,vtype)
|
147
|
+
local val
|
148
|
+
if not vtype or vtype == 'number' then
|
149
|
+
val = tonumber(sval)
|
150
|
+
end
|
151
|
+
if val then -- we have a number!
|
152
|
+
return val,'number'
|
153
|
+
elseif filetypes[sval] then
|
154
|
+
local ft = filetypes[sval]
|
155
|
+
return ft[1],ft[2]
|
156
|
+
else
|
157
|
+
if sval:match '^["\']' then sval = sval:sub(2,-2) end
|
158
|
+
return sval,vtype or 'string'
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
--- process a Lapp options string.
|
163
|
+
-- Usually called as lapp().
|
164
|
+
-- @param str the options text
|
165
|
+
-- @param args a table of arguments (default is `_G.arg`)
|
166
|
+
-- @return a table with parameter-value pairs
|
167
|
+
function lapp.process_options_string(str,args)
|
168
|
+
local results = {}
|
169
|
+
local opts = {at_start=true}
|
170
|
+
local varargs
|
171
|
+
local arg = args or _G.arg
|
172
|
+
open_files = {}
|
173
|
+
parms = {}
|
174
|
+
aliases = {}
|
175
|
+
parmlist = {}
|
176
|
+
types = {}
|
177
|
+
|
178
|
+
local function check_varargs(s)
|
179
|
+
local res,cnt = s:gsub('^%.%.%.%s*','')
|
180
|
+
return res, (cnt > 0)
|
181
|
+
end
|
182
|
+
|
183
|
+
local function set_result(ps,parm,val)
|
184
|
+
parm = type(parm) == "string" and parm:gsub("%W", "_") or parm -- so foo-bar becomes foo_bar in Lua
|
185
|
+
if not ps.varargs then
|
186
|
+
results[parm] = val
|
187
|
+
else
|
188
|
+
if not results[parm] then
|
189
|
+
results[parm] = { val }
|
190
|
+
else
|
191
|
+
append(results[parm],val)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
usage = str
|
197
|
+
|
198
|
+
for line in lines(str) do
|
199
|
+
local res = {}
|
200
|
+
local optspec,optparm,i1,i2,defval,vtype,constraint,rest
|
201
|
+
line = lstrip(line)
|
202
|
+
local function check(str)
|
203
|
+
return match(str,line,res)
|
204
|
+
end
|
205
|
+
|
206
|
+
-- flags: either '-<short>', '-<short>,--<long>' or '--<long>'
|
207
|
+
if check '-$v{short}, --$o{long} $' or check '-$v{short} $' or check '--$o{long} $' then
|
208
|
+
if res.long then
|
209
|
+
optparm = res.long:gsub('[^%w%-]','_') -- I'm not sure the $o pattern will let anything else through?
|
210
|
+
if res.short then aliases[res.short] = optparm end
|
211
|
+
else
|
212
|
+
optparm = res.short
|
213
|
+
end
|
214
|
+
if res.short then force_short(res.short) end
|
215
|
+
res.rest, varargs = check_varargs(res.rest)
|
216
|
+
elseif check '$<{name} $' then -- is it <parameter_name>?
|
217
|
+
-- so <input file...> becomes input_file ...
|
218
|
+
optparm,rest = res.name:match '([^%.]+)(.*)'
|
219
|
+
optparm = optparm:gsub('%A','_')
|
220
|
+
varargs = rest == '...'
|
221
|
+
append(parmlist,optparm)
|
222
|
+
end
|
223
|
+
-- this is not a pure doc line and specifies the flag/parameter type
|
224
|
+
if res.rest then
|
225
|
+
line = res.rest
|
226
|
+
res = {}
|
227
|
+
local optional
|
228
|
+
-- do we have ([optional] [<type>] [default <val>])?
|
229
|
+
if match('$({def} $',line,res) or match('$({def}',line,res) then
|
230
|
+
local typespec = strip(res.def)
|
231
|
+
local ftype, rest = typespec:match('^(%S+)(.*)$')
|
232
|
+
rest = strip(rest)
|
233
|
+
if ftype == 'optional' then
|
234
|
+
ftype, rest = rest:match('^(%S+)(.*)$')
|
235
|
+
rest = strip(rest)
|
236
|
+
optional = true
|
237
|
+
end
|
238
|
+
local default
|
239
|
+
if ftype == 'default' then
|
240
|
+
default = true
|
241
|
+
if rest == '' then lapp.error("value must follow default") end
|
242
|
+
else -- a type specification
|
243
|
+
if match('$f{min}..$f{max}',ftype,res) then
|
244
|
+
-- a numerical range like 1..10
|
245
|
+
local min,max = res.min,res.max
|
246
|
+
vtype = 'number'
|
247
|
+
constraint = function(x)
|
248
|
+
range_check(x,min,max,optparm)
|
249
|
+
end
|
250
|
+
elseif not ftype:match '|' then -- plain type
|
251
|
+
vtype = ftype
|
252
|
+
else
|
253
|
+
-- 'enum' type is a string which must belong to
|
254
|
+
-- one of several distinct values
|
255
|
+
local enums = ftype
|
256
|
+
local enump = '|' .. enums .. '|'
|
257
|
+
vtype = 'string'
|
258
|
+
constraint = function(s)
|
259
|
+
lapp.assert(enump:match('|'..s..'|'),
|
260
|
+
"value '"..s.."' not in "..enums
|
261
|
+
)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
res.rest = rest
|
266
|
+
typespec = res.rest
|
267
|
+
-- optional 'default value' clause. Type is inferred as
|
268
|
+
-- 'string' or 'number' if there's no explicit type
|
269
|
+
if default or match('default $r{rest}',typespec,res) then
|
270
|
+
defval,vtype = process_default(res.rest,vtype)
|
271
|
+
end
|
272
|
+
--print('val',optparm,defval,vtype)
|
273
|
+
else -- must be a plain flag, no extra parameter required
|
274
|
+
defval = false
|
275
|
+
vtype = 'boolean'
|
276
|
+
end
|
277
|
+
local ps = {
|
278
|
+
type = vtype,
|
279
|
+
defval = defval,
|
280
|
+
required = defval == nil and not optional,
|
281
|
+
comment = res.rest or optparm,
|
282
|
+
constraint = constraint,
|
283
|
+
varargs = varargs
|
284
|
+
}
|
285
|
+
varargs = nil
|
286
|
+
if types[vtype] then
|
287
|
+
local converter = types[vtype].converter
|
288
|
+
if type(converter) == 'string' then
|
289
|
+
ps.type = converter
|
290
|
+
else
|
291
|
+
ps.converter = converter
|
292
|
+
end
|
293
|
+
ps.constraint = types[vtype].constraint
|
294
|
+
elseif not builtin_types[vtype] then
|
295
|
+
lapp.error(vtype.." is unknown type")
|
296
|
+
end
|
297
|
+
parms[optparm] = ps
|
298
|
+
end
|
299
|
+
end
|
300
|
+
-- cool, we have our parms, let's parse the command line args
|
301
|
+
local iparm = 1
|
302
|
+
local iextra = 1
|
303
|
+
local i = 1
|
304
|
+
local parm,ps,val
|
305
|
+
|
306
|
+
local function check_parm (parm)
|
307
|
+
local eqi = parm:find '='
|
308
|
+
if eqi then
|
309
|
+
tinsert(arg,i+1,parm:sub(eqi+1))
|
310
|
+
parm = parm:sub(1,eqi-1)
|
311
|
+
end
|
312
|
+
return parm,eqi
|
313
|
+
end
|
314
|
+
|
315
|
+
while i <= #arg do
|
316
|
+
local theArg = arg[i]
|
317
|
+
local res = {}
|
318
|
+
-- look for a flag, -<short flags> or --<long flag>
|
319
|
+
if match('--$S{long}',theArg,res) or match('-$S{short}',theArg,res) then
|
320
|
+
if res.long then -- long option
|
321
|
+
parm = check_parm(res.long)
|
322
|
+
elseif #res.short == 1 then
|
323
|
+
parm = res.short
|
324
|
+
else
|
325
|
+
local parmstr,eq = check_parm(res.short)
|
326
|
+
if not eq then
|
327
|
+
parm = at(parmstr,1)
|
328
|
+
if isdigit(at(parmstr,2)) then
|
329
|
+
-- a short option followed by a digit is an exception (for AW;))
|
330
|
+
-- push ahead into the arg array
|
331
|
+
tinsert(arg,i+1,parmstr:sub(2))
|
332
|
+
else
|
333
|
+
-- push multiple flags into the arg array!
|
334
|
+
for k = 2,#parmstr do
|
335
|
+
tinsert(arg,i+k-1,'-'..at(parmstr,k))
|
336
|
+
end
|
337
|
+
end
|
338
|
+
else
|
339
|
+
parm = parmstr
|
340
|
+
end
|
341
|
+
end
|
342
|
+
if parm == 'h' or parm == 'help' then
|
343
|
+
lapp.quit()
|
344
|
+
end
|
345
|
+
if aliases[parm] then parm = aliases[parm] end
|
346
|
+
else -- a parameter
|
347
|
+
parm = parmlist[iparm]
|
348
|
+
if not parm then
|
349
|
+
-- extra unnamed parameters are indexed starting at 1
|
350
|
+
parm = iextra
|
351
|
+
ps = { type = 'string' }
|
352
|
+
parms[parm] = ps
|
353
|
+
iextra = iextra + 1
|
354
|
+
else
|
355
|
+
ps = parms[parm]
|
356
|
+
end
|
357
|
+
if not ps.varargs then
|
358
|
+
iparm = iparm + 1
|
359
|
+
end
|
360
|
+
val = theArg
|
361
|
+
end
|
362
|
+
ps = parms[parm]
|
363
|
+
if not ps then lapp.error("unrecognized parameter: "..parm) end
|
364
|
+
if ps.type ~= 'boolean' then -- we need a value! This should follow
|
365
|
+
if not val then
|
366
|
+
i = i + 1
|
367
|
+
val = arg[i]
|
368
|
+
end
|
369
|
+
lapp.assert(val,parm.." was expecting a value")
|
370
|
+
end
|
371
|
+
ps.used = true
|
372
|
+
val = convert_parameter(ps,val)
|
373
|
+
set_result(ps,parm,val)
|
374
|
+
if builtin_types[ps.type] == 'file' then
|
375
|
+
set_result(ps,parm..'_name',theArg)
|
376
|
+
end
|
377
|
+
if lapp.callback then
|
378
|
+
lapp.callback(parm,theArg,res)
|
379
|
+
end
|
380
|
+
i = i + 1
|
381
|
+
val = nil
|
382
|
+
end
|
383
|
+
-- check unused parms, set defaults and check if any required parameters were missed
|
384
|
+
for parm,ps in pairs(parms) do
|
385
|
+
if not ps.used then
|
386
|
+
if ps.required then lapp.error("missing required parameter: "..parm) end
|
387
|
+
set_result(ps,parm,ps.defval)
|
388
|
+
end
|
389
|
+
end
|
390
|
+
return results
|
391
|
+
end
|
392
|
+
|
393
|
+
if arg then
|
394
|
+
script = arg[0]:gsub('.+[\\/]',''):gsub('%.%a+$','')
|
395
|
+
else
|
396
|
+
script = "inter"
|
397
|
+
end
|
398
|
+
|
399
|
+
|
400
|
+
setmetatable(lapp, {
|
401
|
+
__call = function(tbl,str,args) return lapp.process_options_string(str,args) end,
|
402
|
+
})
|
403
|
+
|
404
|
+
|
405
|
+
return lapp
|
406
|
+
|
407
|
+
|