rufus-lua-win 5.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|