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
|
Binary file
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
--------------------------------------------------------------------------------
|
|
2
|
+
-- Execute an `mlc.ast_of_*()' in a separate lua process.
|
|
3
|
+
-- Communication between processes goes through temporary files,
|
|
4
|
+
-- for the sake of portability.
|
|
5
|
+
--------------------------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
mlc_xcall = { }
|
|
8
|
+
|
|
9
|
+
--------------------------------------------------------------------------------
|
|
10
|
+
-- Number of lines to remove at the end of a traceback, should it be
|
|
11
|
+
-- dumped due to a compilation error in metabugs mode.
|
|
12
|
+
--------------------------------------------------------------------------------
|
|
13
|
+
local STACK_LINES_TO_CUT = 7
|
|
14
|
+
|
|
15
|
+
--------------------------------------------------------------------------------
|
|
16
|
+
-- (Not intended to be called directly by users)
|
|
17
|
+
--
|
|
18
|
+
-- This is the back-end function, called in a separate lua process
|
|
19
|
+
-- by `mlc_xcall.client_*()' through `os.execute()'.
|
|
20
|
+
-- * inputs:
|
|
21
|
+
-- * the name of a lua source file to compile in a separate process
|
|
22
|
+
-- * the name of a writable file where the resulting ast is dumped
|
|
23
|
+
-- with `serialize()'.
|
|
24
|
+
-- * metabugs: if true and an error occurs during compilation,
|
|
25
|
+
-- the compiler's stacktrace is printed, allowing meta-programs
|
|
26
|
+
-- debugging.
|
|
27
|
+
-- * results:
|
|
28
|
+
-- * an exit status of 0 or -1, depending on whethet compilation
|
|
29
|
+
-- succeeded;
|
|
30
|
+
-- * the ast file filled will either the serialized ast, or the
|
|
31
|
+
-- error message.
|
|
32
|
+
--------------------------------------------------------------------------------
|
|
33
|
+
function mlc_xcall.server (luafilename, astfilename, metabugs)
|
|
34
|
+
|
|
35
|
+
-- We don't want these to be loaded when people only do client-side business
|
|
36
|
+
require 'metalua.compiler'
|
|
37
|
+
require 'serialize'
|
|
38
|
+
|
|
39
|
+
mlc.metabugs = metabugs
|
|
40
|
+
|
|
41
|
+
-- compile the content of luafile name in an AST, serialized in astfilename
|
|
42
|
+
--local status, ast = pcall (mlc.luafile_to_ast, luafilename)
|
|
43
|
+
local status, ast
|
|
44
|
+
local function compile() return mlc.luafile_to_ast (luafilename) end
|
|
45
|
+
if mlc.metabugs then
|
|
46
|
+
print 'mlc_xcall.server/metabugs'
|
|
47
|
+
--status, ast = xpcall (compile, debug.traceback)
|
|
48
|
+
--status, ast = xpcall (compile, debug.traceback)
|
|
49
|
+
local function tb(msg)
|
|
50
|
+
local r = debug.traceback(msg)
|
|
51
|
+
|
|
52
|
+
-- Cut superfluous end lines
|
|
53
|
+
local line_re = '\n[^\n]*'
|
|
54
|
+
local re = "^(.-)" .. (line_re) :rep (STACK_LINES_TO_CUT) .. "$"
|
|
55
|
+
return r :strmatch (re) or r
|
|
56
|
+
end
|
|
57
|
+
--status, ast = xpcall (compile, debug.traceback)
|
|
58
|
+
status, ast = xpcall (compile, tb)
|
|
59
|
+
else status, ast = pcall (compile) end
|
|
60
|
+
local out = io.open (astfilename, 'w')
|
|
61
|
+
if status then -- success
|
|
62
|
+
out:write (serialize (ast))
|
|
63
|
+
out:close ()
|
|
64
|
+
os.exit (0)
|
|
65
|
+
else -- failure, `ast' is actually the error message
|
|
66
|
+
out:write (ast)
|
|
67
|
+
out:close ()
|
|
68
|
+
os.exit (-1)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
--------------------------------------------------------------------------------
|
|
73
|
+
-- Compile the file whose name is passed as argument, in a separate process,
|
|
74
|
+
-- communicating through a temporary file.
|
|
75
|
+
-- returns:
|
|
76
|
+
-- * true or false, indicating whether the compilation succeeded
|
|
77
|
+
-- * the ast, or the error message.
|
|
78
|
+
--------------------------------------------------------------------------------
|
|
79
|
+
function mlc_xcall.client_file (luafile)
|
|
80
|
+
|
|
81
|
+
-- printf("\n\nmlc_xcall.client_file(%q)\n\n", luafile)
|
|
82
|
+
|
|
83
|
+
local tmpfilename = os.tmpname()
|
|
84
|
+
local cmd = string.format (
|
|
85
|
+
[=[%s -l metalua.mlc_xcall -e "mlc_xcall.server([[%s]], [[%s]], %s)"]=],
|
|
86
|
+
(_PROGDIR and _PROGDIR.."/lua" or "lua"), luafile, tmpfilename, mlc.metabugs and "true" or "false")
|
|
87
|
+
|
|
88
|
+
-- printf("os.execute [[%s]]\n\n", cmd)
|
|
89
|
+
|
|
90
|
+
local status = (0 == os.execute (cmd))
|
|
91
|
+
local result -- ast or error msg
|
|
92
|
+
if status then
|
|
93
|
+
result = (lua_loadfile or loadfile) (tmpfilename) ()
|
|
94
|
+
else
|
|
95
|
+
local f = io.open (tmpfilename)
|
|
96
|
+
result = f :read '*a'
|
|
97
|
+
f :close()
|
|
98
|
+
end
|
|
99
|
+
os.remove(tmpfilename)
|
|
100
|
+
return status, result
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
--------------------------------------------------------------------------------
|
|
104
|
+
-- Compile a source string into an ast, by dumping it in a tmp
|
|
105
|
+
-- file then calling `mlc_xcall.client_file()'.
|
|
106
|
+
-- returns: the same as `mlc_xcall.client_file()'.
|
|
107
|
+
--------------------------------------------------------------------------------
|
|
108
|
+
function mlc_xcall.client_literal (luasrc)
|
|
109
|
+
local srcfilename = os.tmpname()
|
|
110
|
+
local srcfile, msg = io.open (srcfilename, 'w')
|
|
111
|
+
if not srcfile then print(msg) end
|
|
112
|
+
srcfile :write (luasrc)
|
|
113
|
+
srcfile :close ()
|
|
114
|
+
local status, ast = mlc_xcall.client_file (srcfilename)
|
|
115
|
+
os.remove(srcfilename)
|
|
116
|
+
return status, ast
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
return mlc_xcall
|
|
Binary file
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
local package = package
|
|
2
|
+
|
|
3
|
+
require 'metalua.mlc'
|
|
4
|
+
|
|
5
|
+
package.metalua_extension_prefix = 'metalua.extension.'
|
|
6
|
+
|
|
7
|
+
package.mpath = os.getenv 'LUA_MPATH' or string.gsub( package.path or "./?.mlua", "%.lua", "%.mlua")
|
|
8
|
+
|
|
9
|
+
----------------------------------------------------------------------
|
|
10
|
+
-- resc(k) returns "%"..k if it's a special regular expression char,
|
|
11
|
+
-- or just k if it's normal.
|
|
12
|
+
----------------------------------------------------------------------
|
|
13
|
+
local regexp_magic = table.transpose{
|
|
14
|
+
"^", "$", "(", ")", "%", ".", "[", "]", "*", "+", "-", "?" }
|
|
15
|
+
local function resc(k)
|
|
16
|
+
return regexp_magic[k] and '%'..k or k
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
----------------------------------------------------------------------
|
|
20
|
+
-- Take a Lua module name, return the open file and its name,
|
|
21
|
+
-- or <false> and an error message.
|
|
22
|
+
----------------------------------------------------------------------
|
|
23
|
+
function package.findfile(name, path_string)
|
|
24
|
+
local config_regexp = ("([^\n])\n"):rep(5):sub(1, -2)
|
|
25
|
+
local dir_sep, path_sep, path_mark, execdir, igmark =
|
|
26
|
+
package.config:strmatch (config_regexp)
|
|
27
|
+
name = name:gsub ('%.', dir_sep)
|
|
28
|
+
local errors = { }
|
|
29
|
+
local path_pattern = string.format('[^%s]+', resc(path_sep))
|
|
30
|
+
for path in path_string:gmatch (path_pattern) do
|
|
31
|
+
--printf('path = %s, rpath_mark=%s, name=%s', path, resc(path_mark), name)
|
|
32
|
+
local filename = path:gsub (resc (path_mark), name)
|
|
33
|
+
--printf('filename = %s', filename)
|
|
34
|
+
local file = io.open (filename, 'r')
|
|
35
|
+
if file then return file, filename end
|
|
36
|
+
table.insert(errors, string.format("\tno lua file %q", filename))
|
|
37
|
+
end
|
|
38
|
+
return false, table.concat(errors, "\n")..'\n'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
----------------------------------------------------------------------
|
|
42
|
+
-- Execute a metalua module sources compilation in a separate process
|
|
43
|
+
-- Sending back the bytecode directly is difficult, as some shells
|
|
44
|
+
-- (at least MS-Windows') interpret some characters. So rather than
|
|
45
|
+
-- base64-encoding the bytecode, AST is returned from the child
|
|
46
|
+
-- process, and converted to bytecode then function in the calling
|
|
47
|
+
-- process.
|
|
48
|
+
----------------------------------------------------------------------
|
|
49
|
+
local function spring_load(filename)
|
|
50
|
+
-- FIXME: handle compilation errors
|
|
51
|
+
local pattern =
|
|
52
|
+
[=[%s -l metalua.compiler -l serialize -e ]=]..
|
|
53
|
+
[=["print(serialize(mlc.ast_of_luafile [[%s]]))"]=]
|
|
54
|
+
local cmd = string.format (pattern, (_PROGDIR and _PROGDIR.."/lua" or "lua"), filename)
|
|
55
|
+
--print ("running command: ``" .. cmd .. "''")
|
|
56
|
+
local fd = io.popen (cmd)
|
|
57
|
+
local ast_src = fd:read '*a'
|
|
58
|
+
fd:close()
|
|
59
|
+
local ast = lua_loadstring (ast_src) () -- much faster than loadstring()
|
|
60
|
+
return mlc.function_of_ast (ast, filename)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
----------------------------------------------------------------------
|
|
64
|
+
-- Load a metalua source file.
|
|
65
|
+
----------------------------------------------------------------------
|
|
66
|
+
function package.metalua_loader (name)
|
|
67
|
+
local file, filename_or_msg = package.findfile (name, package.mpath)
|
|
68
|
+
if not file then return filename_or_msg end
|
|
69
|
+
if package.metalua_nopopen then
|
|
70
|
+
local luastring = file:read '*a'
|
|
71
|
+
file:close()
|
|
72
|
+
return mlc.function_of_luastring (luastring, name)
|
|
73
|
+
else
|
|
74
|
+
file:close()
|
|
75
|
+
require 'metalua.mlc_xcall'
|
|
76
|
+
local status, ast = mlc_xcall.client_file (filename_or_msg)
|
|
77
|
+
return mlc.function_of_ast(ast)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
----------------------------------------------------------------------
|
|
82
|
+
-- Placed after lua/luac loader, so precompiled files have
|
|
83
|
+
-- higher precedence.
|
|
84
|
+
----------------------------------------------------------------------
|
|
85
|
+
table.insert(package.loaders, package.metalua_loader)
|
|
86
|
+
|
|
87
|
+
----------------------------------------------------------------------
|
|
88
|
+
-- Load an extension.
|
|
89
|
+
----------------------------------------------------------------------
|
|
90
|
+
function extension (name, noruntime)
|
|
91
|
+
local complete_name = package.metalua_extension_prefix..name
|
|
92
|
+
local x = require (complete_name)
|
|
93
|
+
if x==true then return
|
|
94
|
+
elseif type(x) ~= 'table' then
|
|
95
|
+
error ("extension returned %s instead of an AST", type(x))
|
|
96
|
+
else
|
|
97
|
+
return x
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
return package
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
----------------------------------------------------------------------
|
|
3
|
+
----------------------------------------------------------------------
|
|
4
|
+
--
|
|
5
|
+
-- String module extension
|
|
6
|
+
--
|
|
7
|
+
----------------------------------------------------------------------
|
|
8
|
+
----------------------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
-- Courtesy of lua-users.org
|
|
11
|
+
function string.split(str, pat)
|
|
12
|
+
local t = {}
|
|
13
|
+
local fpat = "(.-)" .. pat
|
|
14
|
+
local last_end = 1
|
|
15
|
+
local s, e, cap = string.find(str, fpat, 1)
|
|
16
|
+
while s do
|
|
17
|
+
if s ~= 1 or cap ~= "" then
|
|
18
|
+
table.insert(t,cap)
|
|
19
|
+
end
|
|
20
|
+
last_end = e+1
|
|
21
|
+
s, e, cap = string.find(str, fpat, last_end)
|
|
22
|
+
end
|
|
23
|
+
if last_end <= string.len(str) then
|
|
24
|
+
cap = string.sub(str, last_end)
|
|
25
|
+
table.insert(t, cap)
|
|
26
|
+
end
|
|
27
|
+
return t
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
-- "match" is regularly used as a keyword for pattern matching,
|
|
31
|
+
-- so here is an always available substitute.
|
|
32
|
+
string.strmatch = string["match"]
|
|
33
|
+
|
|
34
|
+
-- change a compiled string into a function
|
|
35
|
+
function string.undump(str)
|
|
36
|
+
if str:strmatch '^\027LuaQ' or str:strmatch '^#![^\n]+\n\027LuaQ' then
|
|
37
|
+
local f = (lua_loadstring or loadstring)(str)
|
|
38
|
+
return f
|
|
39
|
+
else
|
|
40
|
+
error "Not a chunk dump"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
return string
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
---------------------------------------------------------------------
|
|
2
|
+
----------------------------------------------------------------------
|
|
3
|
+
--
|
|
4
|
+
-- Table module extension
|
|
5
|
+
--
|
|
6
|
+
----------------------------------------------------------------------
|
|
7
|
+
----------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
-- todo: table.scan (scan1?) fold1? flip?
|
|
10
|
+
|
|
11
|
+
function table.transpose(t)
|
|
12
|
+
local tt = { }
|
|
13
|
+
for a, b in pairs(t) do tt[b] = a end
|
|
14
|
+
return tt
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
function table.iforeach(f, ...)
|
|
18
|
+
-- assert (type (f) == "function") [wouldn't allow metamethod __call]
|
|
19
|
+
local nargs = select("#", ...)
|
|
20
|
+
if nargs==1 then -- Quick iforeach (most common case), just one table arg
|
|
21
|
+
local t = ...
|
|
22
|
+
assert (type (t) == "table")
|
|
23
|
+
for i = 1, #t do
|
|
24
|
+
local result = f (t[i])
|
|
25
|
+
-- If the function returns non-false, stop iteration
|
|
26
|
+
if result then return result end
|
|
27
|
+
end
|
|
28
|
+
else -- advanced case: boundaries and/or multiple tables
|
|
29
|
+
-- 1 - find boundaries if any
|
|
30
|
+
local args, fargs, first, last, arg1 = {...}, { }
|
|
31
|
+
if type(args[1]) ~= "number" then first, arg1 = 1, 1
|
|
32
|
+
elseif type(args[2]) ~= "number" then first, last, arg1 = 1, args[1], 2
|
|
33
|
+
else first, last, i = args[1], args[2], 3 end
|
|
34
|
+
assert (nargs > arg1)
|
|
35
|
+
-- 2 - determine upper boundary if not given
|
|
36
|
+
if not last then for i = arg1, nargs do
|
|
37
|
+
assert (type (args[i]) == "table")
|
|
38
|
+
last = max (#args[i], last)
|
|
39
|
+
end end
|
|
40
|
+
-- 3 - perform the iteration
|
|
41
|
+
for i = first, last do
|
|
42
|
+
for j = arg1, nargs do fargs[j] = args[j][i] end -- build args list
|
|
43
|
+
local result = f (unpack (fargs)) -- here is the call
|
|
44
|
+
-- If the function returns non-false, stop iteration
|
|
45
|
+
if result then return result end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
function table.imap (f, ...)
|
|
51
|
+
local result, idx = { }, 1
|
|
52
|
+
local function g(...) result[idx] = f(...); idx=idx+1 end
|
|
53
|
+
table.iforeach(g, ...)
|
|
54
|
+
return result
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
function table.ifold (f, acc, ...)
|
|
58
|
+
local function g(...) acc = f (acc,...) end
|
|
59
|
+
table.iforeach (g, ...)
|
|
60
|
+
return acc
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
-- function table.ifold1 (f, ...)
|
|
64
|
+
-- return table.ifold (f, acc, 2, false, ...)
|
|
65
|
+
-- end
|
|
66
|
+
|
|
67
|
+
function table.izip(...)
|
|
68
|
+
local function g(...) return {...} end
|
|
69
|
+
return table.imap(g, ...)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
function table.ifilter(f, t)
|
|
73
|
+
local yes, no = { }, { }
|
|
74
|
+
for i=1,#t do table.insert (f(t[i]) and yes or no, t[i]) end
|
|
75
|
+
return yes, no
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
function table.icat(...)
|
|
79
|
+
local result = { }
|
|
80
|
+
for t in values {...} do
|
|
81
|
+
for x in values (t) do
|
|
82
|
+
table.insert (result, x)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
return result
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
function table.iflatten (x) return table.icat (unpack (x)) end
|
|
89
|
+
|
|
90
|
+
function table.irev (t)
|
|
91
|
+
local result, nt = { }, #t
|
|
92
|
+
for i=0, nt-1 do result[nt-i] = t[i+1] end
|
|
93
|
+
return result
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
function table.isub (t, ...)
|
|
97
|
+
local ti, u = table.insert, { }
|
|
98
|
+
local args, nargs = {...}, select("#", ...)
|
|
99
|
+
for i=1, nargs/2 do
|
|
100
|
+
local a, b = args[2*i-1], args[2*i]
|
|
101
|
+
for i=a, b, a<=b and 1 or -1 do ti(u, t[i]) end
|
|
102
|
+
end
|
|
103
|
+
return u
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
function table.iall (f, ...)
|
|
107
|
+
local result = true
|
|
108
|
+
local function g(...) return not f(...) end
|
|
109
|
+
return not table.iforeach(g, ...)
|
|
110
|
+
--return result
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
function table.iany (f, ...)
|
|
114
|
+
local function g(...) return not f(...) end
|
|
115
|
+
return not table.iall(g, ...)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
function table.shallow_copy(x)
|
|
119
|
+
local y={ }
|
|
120
|
+
for k, v in pairs(x) do y[k]=v end
|
|
121
|
+
return y
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
-- Warning, this is implementation dependent: it relies on
|
|
125
|
+
-- the fact the [next()] enumerates the array-part before the hash-part.
|
|
126
|
+
function table.cat(...)
|
|
127
|
+
local y={ }
|
|
128
|
+
for x in values{...} do
|
|
129
|
+
-- cat array-part
|
|
130
|
+
for _, v in ipairs(x) do table.insert(y,v) end
|
|
131
|
+
-- cat hash-part
|
|
132
|
+
local lx, k = #x
|
|
133
|
+
if lx>0 then k=next(x,lx) else k=next(x) end
|
|
134
|
+
while k do y[k]=x[k]; k=next(x,k) end
|
|
135
|
+
end
|
|
136
|
+
return y
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
function table.deep_copy(x)
|
|
140
|
+
local tracker = { }
|
|
141
|
+
local function aux (x)
|
|
142
|
+
if type(x) == "table" then
|
|
143
|
+
local y=tracker[x]
|
|
144
|
+
if y then return y end
|
|
145
|
+
y = { }; tracker[x] = y
|
|
146
|
+
setmetatable (y, getmetatable (x))
|
|
147
|
+
for k,v in pairs(x) do y[aux(k)] = aux(v) end
|
|
148
|
+
return y
|
|
149
|
+
else return x end
|
|
150
|
+
end
|
|
151
|
+
return aux(x)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
function table.override(dst, src)
|
|
155
|
+
for k, v in pairs(src) do dst[k] = v end
|
|
156
|
+
for i = #src+1, #dst do dst[i] = nil end
|
|
157
|
+
return dst
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
function table.range(a,b,c)
|
|
162
|
+
if not b then assert(not(c)); b=a; a=1
|
|
163
|
+
elseif not c then c = (b>=a) and 1 or -1 end
|
|
164
|
+
local result = { }
|
|
165
|
+
for i=a, b, c do table.insert(result, i) end
|
|
166
|
+
return result
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
-- FIXME: new_indent seems to be always nil?!
|
|
170
|
+
-- FIXME: accumulator function should be configurable,
|
|
171
|
+
-- so that print() doesn't need to bufferize the whole string
|
|
172
|
+
-- before starting to print.
|
|
173
|
+
function table.tostring(t, ...)
|
|
174
|
+
local PRINT_HASH, HANDLE_TAG, FIX_INDENT, LINE_MAX, INITIAL_INDENT = true, true
|
|
175
|
+
for _, x in ipairs {...} do
|
|
176
|
+
if type(x) == "number" then
|
|
177
|
+
if not LINE_MAX then LINE_MAX = x
|
|
178
|
+
else INITIAL_INDENT = x end
|
|
179
|
+
elseif x=="nohash" then PRINT_HASH = false
|
|
180
|
+
elseif x=="notag" then HANDLE_TAG = false
|
|
181
|
+
else
|
|
182
|
+
local n = string['match'](x, "^indent%s*(%d*)$")
|
|
183
|
+
if n then FIX_INDENT = tonumber(n) or 3 end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
LINE_MAX = LINE_MAX or math.huge
|
|
187
|
+
INITIAL_INDENT = INITIAL_INDENT or 1
|
|
188
|
+
|
|
189
|
+
local current_offset = 0 -- indentation level
|
|
190
|
+
local xlen_cache = { } -- cached results for xlen()
|
|
191
|
+
local acc_list = { } -- Generated bits of string
|
|
192
|
+
local function acc(...) -- Accumulate a bit of string
|
|
193
|
+
local x = table.concat{...}
|
|
194
|
+
current_offset = current_offset + #x
|
|
195
|
+
table.insert(acc_list, x)
|
|
196
|
+
end
|
|
197
|
+
local function valid_id(x)
|
|
198
|
+
-- FIXME: we should also reject keywords; but the list of
|
|
199
|
+
-- current keywords is not fixed in metalua...
|
|
200
|
+
return type(x) == "string"
|
|
201
|
+
and string['match'](x, "^[a-zA-Z_][a-zA-Z0-9_]*$")
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
-- Compute the number of chars it would require to display the table
|
|
205
|
+
-- on a single line. Helps to decide whether some carriage returns are
|
|
206
|
+
-- required. Since the size of each sub-table is required many times,
|
|
207
|
+
-- it's cached in [xlen_cache].
|
|
208
|
+
local xlen_type = { }
|
|
209
|
+
local function xlen(x, nested)
|
|
210
|
+
nested = nested or { }
|
|
211
|
+
if x==nil then return #"nil" end
|
|
212
|
+
--if nested[x] then return #tostring(x) end -- already done in table
|
|
213
|
+
local len = xlen_cache[x]
|
|
214
|
+
if len then return len end
|
|
215
|
+
local f = xlen_type[type(x)]
|
|
216
|
+
if not f then return #tostring(x) end
|
|
217
|
+
len = f (x, nested)
|
|
218
|
+
xlen_cache[x] = len
|
|
219
|
+
return len
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
-- optim: no need to compute lengths if I'm not going to use them
|
|
223
|
+
-- anyway.
|
|
224
|
+
if LINE_MAX == math.huge then xlen = function() return 0 end end
|
|
225
|
+
|
|
226
|
+
xlen_type["nil"] = function () return 3 end
|
|
227
|
+
function xlen_type.number (x) return #tostring(x) end
|
|
228
|
+
function xlen_type.boolean (x) return x and 4 or 5 end
|
|
229
|
+
function xlen_type.string (x) return #string.format("%q",x) end
|
|
230
|
+
function xlen_type.table (adt, nested)
|
|
231
|
+
|
|
232
|
+
-- Circular references detection
|
|
233
|
+
if nested [adt] then return #tostring(adt) end
|
|
234
|
+
nested [adt] = true
|
|
235
|
+
|
|
236
|
+
local has_tag = HANDLE_TAG and valid_id(adt.tag)
|
|
237
|
+
local alen = #adt
|
|
238
|
+
local has_arr = alen>0
|
|
239
|
+
local has_hash = false
|
|
240
|
+
local x = 0
|
|
241
|
+
|
|
242
|
+
if PRINT_HASH then
|
|
243
|
+
-- first pass: count hash-part
|
|
244
|
+
for k, v in pairs(adt) do
|
|
245
|
+
if k=="tag" and has_tag then
|
|
246
|
+
-- this is the tag -> do nothing!
|
|
247
|
+
elseif type(k)=="number" and k<=alen and math.fmod(k,1)==0 then
|
|
248
|
+
-- array-part pair -> do nothing!
|
|
249
|
+
else
|
|
250
|
+
has_hash = true
|
|
251
|
+
if valid_id(k) then x=x+#k
|
|
252
|
+
else x = x + xlen (k, nested) + 2 end -- count surrounding brackets
|
|
253
|
+
x = x + xlen (v, nested) + 5 -- count " = " and ", "
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
for i = 1, alen do x = x + xlen (adt[i], nested) + 2 end -- count ", "
|
|
259
|
+
|
|
260
|
+
nested[adt] = false -- No more nested calls
|
|
261
|
+
|
|
262
|
+
if not (has_tag or has_arr or has_hash) then return 3 end
|
|
263
|
+
if has_tag then x=x+#adt.tag+1 end
|
|
264
|
+
if not (has_arr or has_hash) then return x end
|
|
265
|
+
if not has_hash and alen==1 and type(adt[1])~="table" then
|
|
266
|
+
return x-2 -- substract extraneous ", "
|
|
267
|
+
end
|
|
268
|
+
return x+2 -- count "{ " and " }", substract extraneous ", "
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
-- Recursively print a (sub) table at given indentation level.
|
|
272
|
+
-- [newline] indicates whether newlines should be inserted.
|
|
273
|
+
local function rec (adt, nested, indent)
|
|
274
|
+
if not FIX_INDENT then indent = current_offset end
|
|
275
|
+
local function acc_newline()
|
|
276
|
+
acc ("\n"); acc (string.rep (" ", indent))
|
|
277
|
+
current_offset = indent
|
|
278
|
+
end
|
|
279
|
+
local x = { }
|
|
280
|
+
x["nil"] = function() acc "nil" end
|
|
281
|
+
function x.number() acc (tostring (adt)) end
|
|
282
|
+
--function x.string() acc (string.format ("%q", adt)) end
|
|
283
|
+
function x.string() acc ((string.format ("%q", adt):gsub("\\\n", "\\n"))) end
|
|
284
|
+
function x.boolean() acc (adt and "true" or "false") end
|
|
285
|
+
function x.table()
|
|
286
|
+
if nested[adt] then acc(tostring(adt)); return end
|
|
287
|
+
nested[adt] = true
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
local has_tag = HANDLE_TAG and valid_id(adt.tag)
|
|
291
|
+
local alen = #adt
|
|
292
|
+
local has_arr = alen>0
|
|
293
|
+
local has_hash = false
|
|
294
|
+
|
|
295
|
+
if has_tag then acc("`"); acc(adt.tag) end
|
|
296
|
+
|
|
297
|
+
-- First pass: handle hash-part
|
|
298
|
+
if PRINT_HASH then
|
|
299
|
+
for k, v in pairs(adt) do
|
|
300
|
+
-- pass if the key belongs to the array-part or is the "tag" field
|
|
301
|
+
if not (k=="tag" and HANDLE_TAG) and
|
|
302
|
+
not (type(k)=="number" and k<=alen and math.fmod(k,1)==0) then
|
|
303
|
+
|
|
304
|
+
-- Is it the first time we parse a hash pair?
|
|
305
|
+
if not has_hash then
|
|
306
|
+
acc "{ "
|
|
307
|
+
if not FIX_INDENT then indent = current_offset end
|
|
308
|
+
else acc ", " end
|
|
309
|
+
|
|
310
|
+
-- Determine whether a newline is required
|
|
311
|
+
local is_id, expected_len = valid_id(k)
|
|
312
|
+
if is_id then expected_len = #k + xlen (v, nested) + #" = , "
|
|
313
|
+
else expected_len = xlen (k, nested) +
|
|
314
|
+
xlen (v, nested) + #"[] = , " end
|
|
315
|
+
if has_hash and expected_len + current_offset > LINE_MAX
|
|
316
|
+
then acc_newline() end
|
|
317
|
+
|
|
318
|
+
-- Print the key
|
|
319
|
+
if is_id then acc(k); acc " = "
|
|
320
|
+
else acc "["; rec (k, nested, indent+(FIX_INDENT or 0)); acc "] = " end
|
|
321
|
+
|
|
322
|
+
-- Print the value
|
|
323
|
+
rec (v, nested, indent+(FIX_INDENT or 0))
|
|
324
|
+
has_hash = true
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
-- Now we know whether there's a hash-part, an array-part, and a tag.
|
|
330
|
+
-- Tag and hash-part are already printed if they're present.
|
|
331
|
+
if not has_tag and not has_hash and not has_arr then acc "{ }";
|
|
332
|
+
elseif has_tag and not has_hash and not has_arr then -- nothing, tag already in acc
|
|
333
|
+
else
|
|
334
|
+
assert (has_hash or has_arr)
|
|
335
|
+
local no_brace = false
|
|
336
|
+
if has_hash and has_arr then acc ", "
|
|
337
|
+
elseif has_tag and not has_hash and alen==1 and type(adt[1])~="table" then
|
|
338
|
+
-- No brace required; don't print "{", remember not to print "}"
|
|
339
|
+
acc (" "); rec (adt[1], nested, indent+(FIX_INDENT or 0))
|
|
340
|
+
no_brace = true
|
|
341
|
+
elseif not has_hash then
|
|
342
|
+
-- Braces required, but not opened by hash-part handler yet
|
|
343
|
+
acc "{ "
|
|
344
|
+
if not FIX_INDENT then indent = current_offset end
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
-- 2nd pass: array-part
|
|
348
|
+
if not no_brace and has_arr then
|
|
349
|
+
rec (adt[1], nested, indent+(FIX_INDENT or 0))
|
|
350
|
+
for i=2, alen do
|
|
351
|
+
acc ", ";
|
|
352
|
+
if current_offset + xlen (adt[i], { }) > LINE_MAX
|
|
353
|
+
then acc_newline() end
|
|
354
|
+
rec (adt[i], nested, indent+(FIX_INDENT or 0))
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
if not no_brace then acc " }" end
|
|
358
|
+
end
|
|
359
|
+
nested[adt] = false -- No more nested calls
|
|
360
|
+
end
|
|
361
|
+
local y = x[type(adt)]
|
|
362
|
+
if y then y() else acc(tostring(adt)) end
|
|
363
|
+
end
|
|
364
|
+
--printf("INITIAL_INDENT = %i", INITIAL_INDENT)
|
|
365
|
+
current_offset = INITIAL_INDENT or 0
|
|
366
|
+
rec(t, { }, 0)
|
|
367
|
+
return table.concat (acc_list)
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
function table.print(...) return print(table.tostring(...)) end
|
|
371
|
+
|
|
372
|
+
return table
|