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,104 @@
|
|
|
1
|
+
----------------------------------------------------------------------
|
|
2
|
+
----------------------------------------------------------------------
|
|
3
|
+
--
|
|
4
|
+
-- Base library extension
|
|
5
|
+
--
|
|
6
|
+
----------------------------------------------------------------------
|
|
7
|
+
----------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
if not metalua then rawset(getfenv(), 'metalua', { }) end
|
|
10
|
+
metalua.version = "v-0.5"
|
|
11
|
+
|
|
12
|
+
if not rawpairs then
|
|
13
|
+
rawpairs, rawipairs, rawtype = pairs, ipairs, type
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
function pairs(x)
|
|
17
|
+
assert(type(x)=='table', 'pairs() expects a table')
|
|
18
|
+
local mt = getmetatable(x)
|
|
19
|
+
if mt then
|
|
20
|
+
local mtp = mt.__pairs
|
|
21
|
+
if mtp then return mtp(x) end
|
|
22
|
+
end
|
|
23
|
+
return rawpairs(x)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
function ipairs(x)
|
|
27
|
+
assert(type(x)=='table', 'ipairs() expects a table')
|
|
28
|
+
local mt = getmetatable(x)
|
|
29
|
+
if mt then
|
|
30
|
+
local mti = mt.__ipairs
|
|
31
|
+
if mti then return mti(x) end
|
|
32
|
+
end
|
|
33
|
+
return rawipairs(x)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
--[[
|
|
37
|
+
function type(x)
|
|
38
|
+
local mt = getmetatable(x)
|
|
39
|
+
if mt then
|
|
40
|
+
local mtt = mt.__type
|
|
41
|
+
if mtt then return mtt end
|
|
42
|
+
end
|
|
43
|
+
return rawtype(x)
|
|
44
|
+
end
|
|
45
|
+
]]
|
|
46
|
+
|
|
47
|
+
function min (a, ...)
|
|
48
|
+
for n in values{...} do if n<a then a=n end end
|
|
49
|
+
return a
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
function max (a, ...)
|
|
53
|
+
for n in values{...} do if n>a then a=n end end
|
|
54
|
+
return a
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
function o (...)
|
|
58
|
+
local args = {...}
|
|
59
|
+
local function g (...)
|
|
60
|
+
local result = {...}
|
|
61
|
+
for i=#args, 1, -1 do result = {args[i](unpack(result))} end
|
|
62
|
+
return unpack (result)
|
|
63
|
+
end
|
|
64
|
+
return g
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
function id (...) return ... end
|
|
68
|
+
function const (k) return function () return k end end
|
|
69
|
+
|
|
70
|
+
function printf(...) return print(string.format(...)) end
|
|
71
|
+
function eprintf(...)
|
|
72
|
+
io.stderr:write(string.format(...).."\n")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
function ivalues (x)
|
|
76
|
+
assert(type(x)=='table', 'ivalues() expects a table')
|
|
77
|
+
local i = 1
|
|
78
|
+
local function iterator ()
|
|
79
|
+
local r = x[i]; i=i+1; return r
|
|
80
|
+
end
|
|
81
|
+
return iterator
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
function values (x)
|
|
86
|
+
assert(type(x)=='table', 'values() expects a table')
|
|
87
|
+
local function iterator (state)
|
|
88
|
+
local it
|
|
89
|
+
state.content, it = next(state.list, state.content)
|
|
90
|
+
return it
|
|
91
|
+
end
|
|
92
|
+
return iterator, { list = x }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
function keys (x)
|
|
96
|
+
assert(type(x)=='table', 'keys() expects a table')
|
|
97
|
+
local function iterator (state)
|
|
98
|
+
local it = next(state.list, state.content)
|
|
99
|
+
state.content = it
|
|
100
|
+
return it
|
|
101
|
+
end
|
|
102
|
+
return iterator, { list = x }
|
|
103
|
+
end
|
|
104
|
+
|
|
Binary file
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
--------------------------------------------------------------------------------
|
|
2
|
+
-- Command Line OPTionS handler
|
|
3
|
+
-- ============================
|
|
4
|
+
--
|
|
5
|
+
-- This lib generates parsers for command-line options. It encourages
|
|
6
|
+
-- the following of some common idioms: I'm pissed off by Unix tools
|
|
7
|
+
-- which sometimes will let you concatenate single letters options,
|
|
8
|
+
-- sometimes won't, will prefix long name options with simple dashes
|
|
9
|
+
-- instead of doubles, etc.
|
|
10
|
+
--
|
|
11
|
+
--------------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
-- TODO:
|
|
14
|
+
-- * add a generic way to unparse options ('grab everything')
|
|
15
|
+
-- * doc
|
|
16
|
+
-- * when a short options that takes a param isn't the last element of a series
|
|
17
|
+
-- of shorts, take the remaining of the sequence as that param, e.g. -Ifoo
|
|
18
|
+
-- * let unset strings/numbers with +
|
|
19
|
+
-- * add a ++ long counterpart to +
|
|
20
|
+
--
|
|
21
|
+
|
|
22
|
+
-{ extension 'match' }
|
|
23
|
+
|
|
24
|
+
function clopts(cfg)
|
|
25
|
+
local short, long, param_func = { }, { }
|
|
26
|
+
local legal_types = table.transpose{
|
|
27
|
+
'boolean','string','number','string*','number*','nil', '*' }
|
|
28
|
+
|
|
29
|
+
-----------------------------------------------------------------------------
|
|
30
|
+
-- Fill short and long name indexes, and check its validity
|
|
31
|
+
-----------------------------------------------------------------------------
|
|
32
|
+
for x in ivalues(cfg) do
|
|
33
|
+
local xtype = type(x)
|
|
34
|
+
if xtype=='table' then
|
|
35
|
+
if not x.type then x.type='nil' end
|
|
36
|
+
if not legal_types[x.type] then error ("Invalid type name "..x.type) end
|
|
37
|
+
if x.short then
|
|
38
|
+
if short[x.short] then error ("multiple definitions for option "..x.short)
|
|
39
|
+
else short[x.short] = x end
|
|
40
|
+
end
|
|
41
|
+
if x.long then
|
|
42
|
+
if long[x.long] then error ("multiple definitions for option "..x.long)
|
|
43
|
+
else long[x.long] = x end
|
|
44
|
+
end
|
|
45
|
+
elseif xtype=='function' then
|
|
46
|
+
if param_func then error "multiple parameters handler in clopts"
|
|
47
|
+
else param_func=x end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
-----------------------------------------------------------------------------
|
|
52
|
+
-- Print a help message, summarizing how to use the command line
|
|
53
|
+
-----------------------------------------------------------------------------
|
|
54
|
+
local function print_usage(msg)
|
|
55
|
+
if msg then print(msg,'\n') end
|
|
56
|
+
print(cfg.usage or "Options:\n")
|
|
57
|
+
for x in values(cfg) do
|
|
58
|
+
if type(x) == 'table' then
|
|
59
|
+
local opts = { }
|
|
60
|
+
if x.type=='boolean' then
|
|
61
|
+
if x.short then opts = { '-'..x.short..'/+'..x.short } end
|
|
62
|
+
if x.long then table.insert (opts, '--'..x.long..'/++'..x.long) end
|
|
63
|
+
else
|
|
64
|
+
if x.short then opts = { '-'..x.short..' <'..x.type..'>' } end
|
|
65
|
+
if x.long then table.insert (opts, '--'..x.long..' <'..x.type..'>' ) end
|
|
66
|
+
end
|
|
67
|
+
printf(" %s: %s", table.concat(opts,', '), x.usage or '<undocumented>')
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
print''
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
-- Unless overridden, -h and --help display the help msg
|
|
74
|
+
local default_help = { action = | | print_usage() or os.exit(0);
|
|
75
|
+
long='help';short='h';type='nil'}
|
|
76
|
+
if not short.h then short.h = default_help end
|
|
77
|
+
if not long.help then long.help = default_help end
|
|
78
|
+
|
|
79
|
+
-----------------------------------------------------------------------------
|
|
80
|
+
-- Helper function for options parsing. Execute the attached action and/or
|
|
81
|
+
-- register the config in cfg.
|
|
82
|
+
--
|
|
83
|
+
-- * cfg is the table which registers the options
|
|
84
|
+
-- * dict the name->config entry hash table that describes options
|
|
85
|
+
-- * flag is the prefix '-', '--' or '+'
|
|
86
|
+
-- * opt is the option name
|
|
87
|
+
-- * i the current index in the arguments list
|
|
88
|
+
-- * args is the arguments list
|
|
89
|
+
-----------------------------------------------------------------------------
|
|
90
|
+
local function actionate(cfg, dict, flag, opt, i, args)
|
|
91
|
+
local entry = dict[opt]
|
|
92
|
+
if not entry then print_usage ("invalid option "..flag..opt); return false; end
|
|
93
|
+
local etype, name = entry.type, entry.name or entry.long or entry.short
|
|
94
|
+
match etype with
|
|
95
|
+
| 'string' | 'number' | 'string*' | 'number*' ->
|
|
96
|
+
if flag=='+' or flag=='++' then
|
|
97
|
+
print_usage ("flag "..flag.." is reserved for boolean options, not for "..opt)
|
|
98
|
+
return false
|
|
99
|
+
end
|
|
100
|
+
local arg = args[i+1]
|
|
101
|
+
if not arg then
|
|
102
|
+
print_usage ("missing parameter for option "..flag..opt)
|
|
103
|
+
return false
|
|
104
|
+
end
|
|
105
|
+
if etype:strmatch '^number' then
|
|
106
|
+
arg = tonumber(arg)
|
|
107
|
+
if not arg then
|
|
108
|
+
print_usage ("option "..flag..opt.." expects a number argument")
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
if etype:strmatch '%*$' then
|
|
112
|
+
if not cfg[name] then cfg[name]={ } end
|
|
113
|
+
table.insert(cfg[name], arg)
|
|
114
|
+
else cfg[name] = arg end
|
|
115
|
+
if entry.action then entry.action(arg) end
|
|
116
|
+
return i+2
|
|
117
|
+
| 'boolean' ->
|
|
118
|
+
local arg = flag=='-' or flag=='--'
|
|
119
|
+
cfg[name] = arg
|
|
120
|
+
if entry.action then entry.action(arg) end
|
|
121
|
+
return i+1
|
|
122
|
+
| 'nil' ->
|
|
123
|
+
cfg[name] = true;
|
|
124
|
+
if entry.action then entry.action() end
|
|
125
|
+
return i+1
|
|
126
|
+
| '*' ->
|
|
127
|
+
local arg = table.isub(args, i+1, #args)
|
|
128
|
+
cfg[name] = arg
|
|
129
|
+
if entry.action then entry.action(arg) end
|
|
130
|
+
return #args+1
|
|
131
|
+
| _ -> assert( false, 'undetected bad type for clopts action')
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
-----------------------------------------------------------------------------
|
|
136
|
+
-- Parse a list of commands: the resulting function
|
|
137
|
+
-----------------------------------------------------------------------------
|
|
138
|
+
local function parse(...)
|
|
139
|
+
local cfg = { }
|
|
140
|
+
if not ... then return cfg end
|
|
141
|
+
local args = type(...)=='table' and ... or {...}
|
|
142
|
+
local i, i_max = 1, #args
|
|
143
|
+
while i <= i_max do
|
|
144
|
+
local arg, flag, opt, opts = args[i]
|
|
145
|
+
--printf('beginning of loop: i=%i/%i, arg=%q', i, i_max, arg)
|
|
146
|
+
if arg=='-' then
|
|
147
|
+
i=actionate (cfg, short, '-', '', i, args)
|
|
148
|
+
-{ `Goto 'continue' }
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
-----------------------------------------------------------------------
|
|
152
|
+
-- double dash option
|
|
153
|
+
-----------------------------------------------------------------------
|
|
154
|
+
flag, opt = arg:strmatch "^(%-%-)(.*)"
|
|
155
|
+
if opt then
|
|
156
|
+
i=actionate (cfg, long, flag, opt, i, args)
|
|
157
|
+
-{ `Goto 'continue' }
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
-----------------------------------------------------------------------
|
|
161
|
+
-- double plus option
|
|
162
|
+
-----------------------------------------------------------------------
|
|
163
|
+
flag, opt = arg:strmatch "^(%+%+)(.*)"
|
|
164
|
+
if opt then
|
|
165
|
+
i=actionate (cfg, long, flag, opt, i, args)
|
|
166
|
+
-{ `Goto 'continue' }
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
-----------------------------------------------------------------------
|
|
170
|
+
-- single plus or single dash series of short options
|
|
171
|
+
-----------------------------------------------------------------------
|
|
172
|
+
flag, opts = arg:strmatch "^([+-])(.+)"
|
|
173
|
+
if opts then
|
|
174
|
+
local j_max, i2 = opts:len()
|
|
175
|
+
for j = 1, j_max do
|
|
176
|
+
opt = opts:sub(j,j)
|
|
177
|
+
--printf ('parsing short opt %q', opt)
|
|
178
|
+
i2 = actionate (cfg, short, flag, opt, i, args)
|
|
179
|
+
if i2 ~= i+1 and j < j_max then
|
|
180
|
+
error ('short option '..opt..' needs a param of type '..short[opt])
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
i=i2
|
|
184
|
+
-{ `Goto 'continue' }
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
-----------------------------------------------------------------------
|
|
188
|
+
-- handler for non-option parameter
|
|
189
|
+
-----------------------------------------------------------------------
|
|
190
|
+
if param_func then param_func(args[i]) end
|
|
191
|
+
if cfg.params then table.insert(cfg.params, args[i])
|
|
192
|
+
else cfg.params = { args[i] } end
|
|
193
|
+
i=i+1
|
|
194
|
+
|
|
195
|
+
-{ `Label 'continue' }
|
|
196
|
+
if not i then return false end
|
|
197
|
+
end -- </while>
|
|
198
|
+
return cfg
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
return parse
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- TODO: support modules as macros?
|
|
2
|
+
-- does it make sense to store a constant AST as a macro?
|
|
3
|
+
|
|
4
|
+
-{ extension 'match' }
|
|
5
|
+
|
|
6
|
+
dollar = rawget(getfenv(), 'dollar') or { }
|
|
7
|
+
|
|
8
|
+
local function dollar_builder(call)
|
|
9
|
+
match call with
|
|
10
|
+
| `Call{ `Id{name}, ... } -> return dollar[name](select(2, unpack(call)))
|
|
11
|
+
| `Id{name} ->
|
|
12
|
+
local m = dollar[name]
|
|
13
|
+
match type(m) with
|
|
14
|
+
| 'function' -> return m()
|
|
15
|
+
| 'table' -> return m
|
|
16
|
+
| 'nil' -> error "No such macro registered"
|
|
17
|
+
| t -> error ("Invalid macro type "..t)
|
|
18
|
+
end
|
|
19
|
+
| _ -> error "Invalid $macro, '$' should be followed by an identifier or function call"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
mlp.expr.prefix:add{ '$', prec = 100, builder = |_, x| dollar_builder(x) }
|
|
24
|
+
mlp.stat:add{ '$', mlp.expr, builder = |x| dollar_builder(x[1]) }
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
require 'metalua.walk.id'
|
|
2
|
+
-{ extension 'log' }
|
|
3
|
+
|
|
4
|
+
--------------------------------------------------------------------------------
|
|
5
|
+
--
|
|
6
|
+
-- H params:
|
|
7
|
+
-- * H.alpha is the `Local{ } (or `Set{ }) statement which will
|
|
8
|
+
-- receive the alpha-conversions required to restore the free
|
|
9
|
+
-- variables of the transformed term. For instance,
|
|
10
|
+
-- H+{print(1)} will be transformed into +{.1.X.print(1)},
|
|
11
|
+
-- and alpha will contain +{local -{`Id '.1.X.print} = print }.
|
|
12
|
+
-- alpha is reused and augmented by successive calls to H().
|
|
13
|
+
--
|
|
14
|
+
-- * H.side contains 'inside', 'outside', 'both' or nil (equivalent to
|
|
15
|
+
-- 'both'). It indicates the kind of hygienization that's to be
|
|
16
|
+
-- performed.
|
|
17
|
+
--
|
|
18
|
+
-- * H.keep contain a set of free variable names which must not be
|
|
19
|
+
-- renamed.
|
|
20
|
+
--
|
|
21
|
+
-- * H.kind is the kind of walker that must be used ('expr', 'stat',
|
|
22
|
+
-- 'block'...) and defaults to 'guess'.
|
|
23
|
+
--
|
|
24
|
+
-- * H:set (field, val) sets a field in H and returns H, so that calls
|
|
25
|
+
-- can be chained, e.g.:
|
|
26
|
+
-- > H:set(keep, {'print'}):set('side', outside)+{print(x)}
|
|
27
|
+
--
|
|
28
|
+
-- * H:reset(field) sets a field to nil, and returns the value of that
|
|
29
|
+
-- field prior to nilification.
|
|
30
|
+
--------------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
H = { } --setmetatable(H, H)
|
|
33
|
+
H.__index=H
|
|
34
|
+
H.template = { alpha = { } }
|
|
35
|
+
|
|
36
|
+
--------------------------------------------------------------------------------
|
|
37
|
+
--
|
|
38
|
+
--------------------------------------------------------------------------------
|
|
39
|
+
function H:new(x)
|
|
40
|
+
local instance = table.deep_copy(self.template)
|
|
41
|
+
if x then instance <- x end
|
|
42
|
+
setmetatable(instance, self)
|
|
43
|
+
return instance
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
--------------------------------------------------------------------------------
|
|
47
|
+
--
|
|
48
|
+
--------------------------------------------------------------------------------
|
|
49
|
+
function H:__call (ast)
|
|
50
|
+
assert (type(ast)=='table', "H expects an AST")
|
|
51
|
+
|
|
52
|
+
local local_renames -- only set if inside hygienization's required
|
|
53
|
+
|
|
54
|
+
-----------------------------------------------------------------------------
|
|
55
|
+
-- kind of hygienization(s) to perform: h_inseide and/or h_outside
|
|
56
|
+
-----------------------------------------------------------------------------
|
|
57
|
+
local h_inside, h_outside do
|
|
58
|
+
local side = self.side or 'both'
|
|
59
|
+
h_inside = side=='inside' or side=='both'
|
|
60
|
+
h_outside = side=='outside' or side=='both'
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
-----------------------------------------------------------------------------
|
|
64
|
+
-- Initialize self.keep:
|
|
65
|
+
-- self.keep is a dictionary of free var names to be protected from capture
|
|
66
|
+
-----------------------------------------------------------------------------
|
|
67
|
+
do
|
|
68
|
+
local k = self.keep
|
|
69
|
+
-- If there's no self.keep, that's an empty dictionary
|
|
70
|
+
if not k then k = { }; self.keep = k
|
|
71
|
+
-- If it's a string, consider it as a single-element dictionary
|
|
72
|
+
elseif type(k)=='string' then k = { [k] = true }; self.keep=k
|
|
73
|
+
-- If there's a list-part in self.keep, transpose it:
|
|
74
|
+
else for i, v in ipairs(k) do k[v], k[i] = true, nil end end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
-----------------------------------------------------------------------------
|
|
78
|
+
-- Config skeleton for the id walker
|
|
79
|
+
-----------------------------------------------------------------------------
|
|
80
|
+
local cfg = { expr = { }, stat = { }, id = { } }
|
|
81
|
+
|
|
82
|
+
-----------------------------------------------------------------------------
|
|
83
|
+
-- Outside hygienization: all free variables are renamed to fresh ones,
|
|
84
|
+
-- and self.alpha is updated to contain the assignments required to keep
|
|
85
|
+
-- the AST's semantics.
|
|
86
|
+
-----------------------------------------------------------------------------
|
|
87
|
+
if h_outside then
|
|
88
|
+
local alpha = self.alpha
|
|
89
|
+
|
|
90
|
+
-- free_vars is an old_name -> new_name dictionary computed from alpha:
|
|
91
|
+
-- self.alpha is not an efficient representation for searching.
|
|
92
|
+
if not alpha then alpha = { }; self.alpha = alpha end
|
|
93
|
+
-- FIXME: alpha should only be overridden when there actually are some
|
|
94
|
+
-- globals renamed.
|
|
95
|
+
if #alpha==0 then alpha <- `Local{ { }, { } } end
|
|
96
|
+
local new, old = unpack(alpha)
|
|
97
|
+
local free_vars = { }
|
|
98
|
+
|
|
99
|
+
assert (#new==#old, "Invalid alpha list")
|
|
100
|
+
for i = 1, #new do
|
|
101
|
+
assert (old[i].tag=='Id' and #old[i]==1, "Invalid lhs in alpha list")
|
|
102
|
+
assert (new[i].tag=='Id' and #new[i]==1, "Invalid rhs in alpha list")
|
|
103
|
+
free_vars[old[i][1]] = new[i][1]
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
-- Rename free variables that are not supposed to be captured.
|
|
107
|
+
function cfg.id.free (id)
|
|
108
|
+
local old_name = id[1]
|
|
109
|
+
if self.keep[old_name] then return end
|
|
110
|
+
local new_name = free_vars[old_name]
|
|
111
|
+
if not new_name then
|
|
112
|
+
new_name = mlp.gensym('X.'..old_name)[1]
|
|
113
|
+
free_vars[old_name] = new_name
|
|
114
|
+
table.insert(alpha[1], `Id{new_name})
|
|
115
|
+
table.insert(alpha[2], `Id{old_name})
|
|
116
|
+
end
|
|
117
|
+
id[1] = new_name
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
-----------------------------------------------------------------------------
|
|
122
|
+
-- Inside hygienization: rename all local variables and their ocurrences.
|
|
123
|
+
-----------------------------------------------------------------------------
|
|
124
|
+
if h_inside then
|
|
125
|
+
|
|
126
|
+
----------------------------------------------------------------
|
|
127
|
+
-- Renamings can't performed on-the-spot, as it would
|
|
128
|
+
-- transiently break the link between binders and bound vars,
|
|
129
|
+
-- thus preventing the algo to work. They're therefore stored
|
|
130
|
+
-- in local_renames, and performed after the whole tree has been
|
|
131
|
+
-- walked.
|
|
132
|
+
----------------------------------------------------------------
|
|
133
|
+
|
|
134
|
+
local_renames = { } -- `Id{ old_name } -> new_name
|
|
135
|
+
local bound_vars = { } -- binding statement -> old_name -> new_name
|
|
136
|
+
|
|
137
|
+
----------------------------------------------------------------
|
|
138
|
+
-- Give a new name to newly created local vars, store it in
|
|
139
|
+
-- bound_vars
|
|
140
|
+
----------------------------------------------------------------
|
|
141
|
+
function cfg.binder (id, binder)
|
|
142
|
+
if id.h_boundary then return end
|
|
143
|
+
local old_name = id[1]
|
|
144
|
+
local binder_table = bound_vars[binder]
|
|
145
|
+
if not binder_table then
|
|
146
|
+
binder_table = { }
|
|
147
|
+
bound_vars[binder] = binder_table
|
|
148
|
+
end
|
|
149
|
+
local new_name = mlp.gensym('L.'..old_name)[1]
|
|
150
|
+
binder_table[old_name] = new_name
|
|
151
|
+
local_renames[id] = new_name
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
----------------------------------------------------------------
|
|
155
|
+
-- List a bound var for renaming. The new name has already been
|
|
156
|
+
-- chosen and put in bound_vars by cfg.binder().
|
|
157
|
+
----------------------------------------------------------------
|
|
158
|
+
function cfg.id.bound (id, binder)
|
|
159
|
+
if id.h_boundary then return end
|
|
160
|
+
local old_name = id[1]
|
|
161
|
+
local new_name = bound_vars[binder][old_name]
|
|
162
|
+
--.log(bound_vars[binder])
|
|
163
|
+
assert(new_name, "no alpha conversion for a bound var?!")
|
|
164
|
+
local_renames[id] = new_name
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
-----------------------------------------------------------------------------
|
|
169
|
+
-- Don't traverse subtrees marked by '!'
|
|
170
|
+
-----------------------------------------------------------------------------
|
|
171
|
+
local cut_boundaries = |x| x.h_boundary and 'break' or nil
|
|
172
|
+
cfg.stat.down, cfg.expr.down = cut_boundaries, cut_boundaries
|
|
173
|
+
|
|
174
|
+
-----------------------------------------------------------------------------
|
|
175
|
+
-- The walker's config is ready, let's go.
|
|
176
|
+
-- After that, ids are renamed in ast, free_vars and bound_vars are set.
|
|
177
|
+
-----------------------------------------------------------------------------
|
|
178
|
+
walk_id [self.kind or 'guess'] (cfg, ast)
|
|
179
|
+
|
|
180
|
+
if h_inside then -- Apply local name changes
|
|
181
|
+
for id, new_name in pairs(local_renames) do id[1] = new_name end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
return ast
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
--------------------------------------------------------------------------------
|
|
188
|
+
-- Return H to allow call chainings
|
|
189
|
+
--------------------------------------------------------------------------------
|
|
190
|
+
function H:set(field, val)
|
|
191
|
+
local t = type(field)
|
|
192
|
+
if t=='string' then self[field]=val
|
|
193
|
+
elseif t=='table' then self <- field
|
|
194
|
+
else error("Can't set H, field arg can't be of type "..t) end
|
|
195
|
+
return self
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
--------------------------------------------------------------------------------
|
|
199
|
+
-- Return the value before reset
|
|
200
|
+
--------------------------------------------------------------------------------
|
|
201
|
+
function H:reset(field)
|
|
202
|
+
if type(field) ~= 'string' then error "Can only reset H string fields" end
|
|
203
|
+
local r = H[field]
|
|
204
|
+
H[field] = nil
|
|
205
|
+
return r
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
-- local function commit_locals_to_chunk(x)
|
|
209
|
+
-- local alpha = H:reset 'alpha'
|
|
210
|
+
-- --$log ('commit locals', x, alpha, 'nohash')
|
|
211
|
+
-- if not alpha or not alpha[1][1] then return end
|
|
212
|
+
-- if not x then return alpha end
|
|
213
|
+
-- table.insert(x, 1, alpha)
|
|
214
|
+
-- end
|
|
215
|
+
|
|
216
|
+
-- mlp.chunk.transformers:add (commit_locals_to_chunk)
|