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,60 @@
|
|
|
1
|
+
-- See Copyright Notice in license.html
|
|
2
|
+
-- $Id: lom.lua,v 1.6 2005/06/09 19:18:40 tuler Exp $
|
|
3
|
+
|
|
4
|
+
require "lxp"
|
|
5
|
+
|
|
6
|
+
local tinsert, tremove, getn = table.insert, table.remove, table.getn
|
|
7
|
+
local assert, type, print = assert, type, print
|
|
8
|
+
local lxp = lxp
|
|
9
|
+
|
|
10
|
+
module ("lxp.lom")
|
|
11
|
+
|
|
12
|
+
local function starttag (p, tag, attr)
|
|
13
|
+
local stack = p:getcallbacks().stack
|
|
14
|
+
local newelement = {tag = tag, attr = attr}
|
|
15
|
+
tinsert(stack, newelement)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
local function endtag (p, tag)
|
|
19
|
+
local stack = p:getcallbacks().stack
|
|
20
|
+
local element = tremove(stack)
|
|
21
|
+
assert(element.tag == tag)
|
|
22
|
+
local level = getn(stack)
|
|
23
|
+
tinsert(stack[level], element)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
local function text (p, txt)
|
|
27
|
+
local stack = p:getcallbacks().stack
|
|
28
|
+
local element = stack[getn(stack)]
|
|
29
|
+
local n = getn(element)
|
|
30
|
+
if type(element[n]) == "string" then
|
|
31
|
+
element[n] = element[n] .. txt
|
|
32
|
+
else
|
|
33
|
+
tinsert(element, txt)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
function parse (o)
|
|
38
|
+
local c = { StartElement = starttag,
|
|
39
|
+
EndElement = endtag,
|
|
40
|
+
CharacterData = text,
|
|
41
|
+
_nonstrict = true,
|
|
42
|
+
stack = {{}}
|
|
43
|
+
}
|
|
44
|
+
local p = lxp.new(c)
|
|
45
|
+
local status, err
|
|
46
|
+
if type(o) == "string" then
|
|
47
|
+
status, err = p:parse(o)
|
|
48
|
+
if not status then return nil, err end
|
|
49
|
+
else
|
|
50
|
+
for l in o do
|
|
51
|
+
status, err = p:parse(l)
|
|
52
|
+
if not status then return nil, err end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
status, err = p:parse()
|
|
56
|
+
if not status then return nil, err end
|
|
57
|
+
p:close()
|
|
58
|
+
return c.stack[1][1]
|
|
59
|
+
end
|
|
60
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
--- Additions to the math module.
|
|
2
|
+
module ("math", package.seeall)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
local _floor = floor
|
|
6
|
+
|
|
7
|
+
--- Extend <code>math.floor</code> to take the number of decimal places.
|
|
8
|
+
-- @param n number
|
|
9
|
+
-- @param p number of decimal places to truncate to (default: 0)
|
|
10
|
+
-- @return <code>n</code> truncated to <code>p</code> decimal places
|
|
11
|
+
function floor (n, p)
|
|
12
|
+
if p and p ~= 0 then
|
|
13
|
+
local e = 10 ^ p
|
|
14
|
+
return _floor (n * e) / e
|
|
15
|
+
else
|
|
16
|
+
return _floor (n)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
--- Round a number to a given number of decimal places
|
|
21
|
+
-- @param n number
|
|
22
|
+
-- @param p number of decimal places to round to (default: 0)
|
|
23
|
+
-- @return <code>n</code> rounded to <code>p</code> decimal places
|
|
24
|
+
function round (n, p)
|
|
25
|
+
local e = 10 ^ (p or 0)
|
|
26
|
+
return _floor (n * e + 0.5) / e
|
|
27
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
--- mbox parser.
|
|
2
|
+
-- Based on code by Diego Nahab.
|
|
3
|
+
module ("mbox", package.seeall)
|
|
4
|
+
|
|
5
|
+
local function headers (s)
|
|
6
|
+
local header = {}
|
|
7
|
+
s = "\n" .. s .. "$$$:\n"
|
|
8
|
+
local i, j = 1, 1
|
|
9
|
+
while true do
|
|
10
|
+
j = string.find (s, "\n%S-:", i + 1)
|
|
11
|
+
if not j then
|
|
12
|
+
break
|
|
13
|
+
end
|
|
14
|
+
local _, _, name, val = string.find (string.sub (s, i + 1, j - 1),
|
|
15
|
+
"(%S-):(.*)")
|
|
16
|
+
val = string.gsub (val or "", "\r\n", "\n")
|
|
17
|
+
val = string.gsub (val, "\n%s*", " ")
|
|
18
|
+
name = string.lower (name)
|
|
19
|
+
if header[name] then
|
|
20
|
+
header[name] = header[name] .. ", " .. val
|
|
21
|
+
else
|
|
22
|
+
header[name] = val
|
|
23
|
+
end
|
|
24
|
+
i, j = j, i
|
|
25
|
+
end
|
|
26
|
+
header["$$$"] = nil
|
|
27
|
+
return header
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
local function message (s)
|
|
31
|
+
s = string.gsub (s, "^.-\n", "")
|
|
32
|
+
local _, s, body
|
|
33
|
+
_, _, s, body = string.find(s, "^(.-\n)\n(.*)")
|
|
34
|
+
return {header = headers (s or ""), body = body or ""}
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
--- Parse a mailbox into messages.
|
|
38
|
+
-- @param s mailbox as a string
|
|
39
|
+
-- @return list of messages, each of form <code>{header = {...}, body = "..."}</code>
|
|
40
|
+
function parse (s)
|
|
41
|
+
local mbox = {}
|
|
42
|
+
s = "\n" .. s .. "\nFrom "
|
|
43
|
+
local i, j = 1, 1
|
|
44
|
+
while true do
|
|
45
|
+
j = string.find (s, "\nFrom ", i + 1)
|
|
46
|
+
if not j then
|
|
47
|
+
break
|
|
48
|
+
end
|
|
49
|
+
table.insert (mbox, message (string.sub (s, i + 1, j - 1)))
|
|
50
|
+
i, j = j, i
|
|
51
|
+
end
|
|
52
|
+
return mbox
|
|
53
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
----------------------------------------------------------------------------
|
|
2
|
+
-- $Id: md5.lua,v 1.4 2006/08/21 19:24:21 carregal Exp $
|
|
3
|
+
----------------------------------------------------------------------------
|
|
4
|
+
|
|
5
|
+
local core = require"md5.core"
|
|
6
|
+
local string = require"string"
|
|
7
|
+
|
|
8
|
+
module ("md5")
|
|
9
|
+
|
|
10
|
+
----------------------------------------------------------------------------
|
|
11
|
+
-- @param k String with original message.
|
|
12
|
+
-- @return String with the md5 hash value converted to hexadecimal digits
|
|
13
|
+
|
|
14
|
+
function sumhexa (k)
|
|
15
|
+
k = core.sum(k)
|
|
16
|
+
return (string.gsub(k, ".", function (c)
|
|
17
|
+
return string.format("%02x", string.byte(c))
|
|
18
|
+
end))
|
|
19
|
+
end
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
-{ extension 'match' }
|
|
2
|
+
|
|
3
|
+
local M = { }
|
|
4
|
+
M.__index = M
|
|
5
|
+
|
|
6
|
+
ast_to_string = |x| M.run(x)
|
|
7
|
+
|
|
8
|
+
--------------------------------------------------------------------------------
|
|
9
|
+
-- Instanciate a new AST->source synthetizer
|
|
10
|
+
--------------------------------------------------------------------------------
|
|
11
|
+
function M.new ()
|
|
12
|
+
local self = {
|
|
13
|
+
_acc = { }, -- Accumulates pieces of source as strings
|
|
14
|
+
current_indent = 0, -- Current level of line indentation
|
|
15
|
+
indent_step = " " -- Indentation symbol, normally spaces or '\t'
|
|
16
|
+
}
|
|
17
|
+
return setmetatable (self, M)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
--------------------------------------------------------------------------------
|
|
21
|
+
-- Run a synthetizer on the `ast' arg and return the source as a string.
|
|
22
|
+
-- Can also be used as a static method `M.run (ast)'; in this case,
|
|
23
|
+
-- a temporary Metizer is instanciated on the fly.
|
|
24
|
+
--------------------------------------------------------------------------------
|
|
25
|
+
function M:run (ast)
|
|
26
|
+
if not ast then
|
|
27
|
+
self, ast = M.new(), self
|
|
28
|
+
end
|
|
29
|
+
self._acc = { }
|
|
30
|
+
self:node (ast)
|
|
31
|
+
return table.concat (self._acc)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
--------------------------------------------------------------------------------
|
|
35
|
+
-- Accumulate a piece of source file in the synthetizer.
|
|
36
|
+
--------------------------------------------------------------------------------
|
|
37
|
+
function M:acc (x)
|
|
38
|
+
if x then table.insert (self._acc, x) end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
--------------------------------------------------------------------------------
|
|
42
|
+
-- Accumulate an indented newline.
|
|
43
|
+
-- Jumps an extra line if indentation is 0, so that
|
|
44
|
+
-- toplevel definitions are separated by an extra empty line.
|
|
45
|
+
--------------------------------------------------------------------------------
|
|
46
|
+
function M:nl ()
|
|
47
|
+
if self.current_indent == 0 then self:acc "\n" end
|
|
48
|
+
self:acc ("\n" .. self.indent_step:rep (self.current_indent))
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
--------------------------------------------------------------------------------
|
|
52
|
+
-- Increase indentation and accumulate a new line.
|
|
53
|
+
--------------------------------------------------------------------------------
|
|
54
|
+
function M:nlindent ()
|
|
55
|
+
self.current_indent = self.current_indent + 1
|
|
56
|
+
self:nl ()
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
--------------------------------------------------------------------------------
|
|
60
|
+
-- Decrease indentation and accumulate a new line.
|
|
61
|
+
--------------------------------------------------------------------------------
|
|
62
|
+
function M:nldedent ()
|
|
63
|
+
self.current_indent = self.current_indent - 1
|
|
64
|
+
self:acc ("\n" .. self.indent_step:rep (self.current_indent))
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
--------------------------------------------------------------------------------
|
|
68
|
+
-- Keywords, which are illegal as identifiers.
|
|
69
|
+
--------------------------------------------------------------------------------
|
|
70
|
+
local keywords = table.transpose {
|
|
71
|
+
"and", "break", "do", "else", "elseif",
|
|
72
|
+
"end", "false", "for", "function", "if",
|
|
73
|
+
"in", "local", "nil", "not", "or",
|
|
74
|
+
"repeat", "return", "then", "true", "until",
|
|
75
|
+
"while" }
|
|
76
|
+
|
|
77
|
+
--------------------------------------------------------------------------------
|
|
78
|
+
-- Return true iff string `id' is a legal identifier name.
|
|
79
|
+
--------------------------------------------------------------------------------
|
|
80
|
+
local function is_ident (id)
|
|
81
|
+
return id:strmatch "^[%a_][%w_]*$" and not keywords[id]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
--------------------------------------------------------------------------------
|
|
85
|
+
-- Return true iff ast represents a legal function name for
|
|
86
|
+
-- syntax sugar ``function foo.bar.gnat() ... end'':
|
|
87
|
+
-- a series of nested string indexes, with an identifier as
|
|
88
|
+
-- the innermost node.
|
|
89
|
+
--------------------------------------------------------------------------------
|
|
90
|
+
local function is_idx_stack (ast)
|
|
91
|
+
match ast with
|
|
92
|
+
| `Id{ _ } -> return true
|
|
93
|
+
| `Index{ left, `String{ _ } } -> return is_idx_stack (left)
|
|
94
|
+
| _ -> return false
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
--------------------------------------------------------------------------------
|
|
99
|
+
-- Operator precedences, in increasing order.
|
|
100
|
+
-- This is not directly used, it's used to generate op_prec below.
|
|
101
|
+
--------------------------------------------------------------------------------
|
|
102
|
+
local op_preprec = {
|
|
103
|
+
{ "or", "and" },
|
|
104
|
+
{ "lt", "le", "eq", "ne" },
|
|
105
|
+
{ "concat" },
|
|
106
|
+
{ "add", "sub" },
|
|
107
|
+
{ "mul", "div", "mod" },
|
|
108
|
+
{ "unary", "not", "len" },
|
|
109
|
+
{ "pow" },
|
|
110
|
+
{ "index" } }
|
|
111
|
+
|
|
112
|
+
--------------------------------------------------------------------------------
|
|
113
|
+
-- operator --> precedence table, generated from op_preprec.
|
|
114
|
+
--------------------------------------------------------------------------------
|
|
115
|
+
local op_prec = { }
|
|
116
|
+
|
|
117
|
+
for prec, ops in ipairs (op_preprec) do
|
|
118
|
+
for op in ivalues (ops) do
|
|
119
|
+
op_prec[op] = prec
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
--------------------------------------------------------------------------------
|
|
124
|
+
-- operator --> source representation.
|
|
125
|
+
--------------------------------------------------------------------------------
|
|
126
|
+
local op_symbol = {
|
|
127
|
+
add = " + ", sub = " - ", mul = " * ",
|
|
128
|
+
div = " / ", mod = " % ", pow = " ^ ",
|
|
129
|
+
concat = " .. ", eq = " == ", ne = " ~= ",
|
|
130
|
+
lt = " < ", le = " <= ", ["and"] = " and ",
|
|
131
|
+
["or"] = " or ", ["not"] = "not ", len = "# " }
|
|
132
|
+
|
|
133
|
+
--------------------------------------------------------------------------------
|
|
134
|
+
-- Accumulate the source representation of AST `node' in
|
|
135
|
+
-- the synthetizer. Most of the work is done by delegating to
|
|
136
|
+
-- the method having the name of the AST tag.
|
|
137
|
+
-- If something can't be converted to normal sources, it's
|
|
138
|
+
-- instead dumped as a `-{ ... }' splice in the source accumulator.
|
|
139
|
+
--------------------------------------------------------------------------------
|
|
140
|
+
function M:node (node)
|
|
141
|
+
assert (self~=M and self._acc)
|
|
142
|
+
if not node.tag then -- tagless block.
|
|
143
|
+
self:list (node, self.nl)
|
|
144
|
+
else
|
|
145
|
+
local f = M[node.tag]
|
|
146
|
+
if type (f) == "function" then -- Delegate to tag method.
|
|
147
|
+
f (self, node, unpack (node))
|
|
148
|
+
elseif type (f) == "string" then -- tag string.
|
|
149
|
+
self:acc (f)
|
|
150
|
+
else -- No appropriate method, fall back to splice dumping.
|
|
151
|
+
-- This cannot happen in a plain Lua AST.
|
|
152
|
+
self:acc " -{ "
|
|
153
|
+
self:acc (table.tostring (node, "nohash"), 80)
|
|
154
|
+
self:acc " }"
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
--------------------------------------------------------------------------------
|
|
160
|
+
-- Convert every node in the AST list `list' passed as 1st arg.
|
|
161
|
+
-- `sep' is an optional separator to be accumulated between each list element,
|
|
162
|
+
-- it can be a string or a synth method.
|
|
163
|
+
-- `start' is an optional number (default == 1), indicating which is the
|
|
164
|
+
-- first element of list to be converted, so that we can skip the begining
|
|
165
|
+
-- of a list.
|
|
166
|
+
--------------------------------------------------------------------------------
|
|
167
|
+
function M:list (list, sep, start)
|
|
168
|
+
for i = start or 1, # list do
|
|
169
|
+
self:node (list[i])
|
|
170
|
+
if list[i + 1] then
|
|
171
|
+
if not sep then
|
|
172
|
+
elseif type (sep) == "function" then sep (self)
|
|
173
|
+
elseif type (sep) == "string" then self:acc (sep)
|
|
174
|
+
else error "Invalid list separator" end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
--------------------------------------------------------------------------------
|
|
180
|
+
--
|
|
181
|
+
-- Tag methods.
|
|
182
|
+
-- ------------
|
|
183
|
+
--
|
|
184
|
+
-- Specific AST node dumping methods, associated to their node kinds
|
|
185
|
+
-- by their name, which is the corresponding AST tag.
|
|
186
|
+
-- synth:node() is in charge of delegating a node's treatment to the
|
|
187
|
+
-- appropriate tag method.
|
|
188
|
+
--
|
|
189
|
+
-- Such tag methods are called with the AST node as 1st arg.
|
|
190
|
+
-- As a convenience, the n node's children are passed as args #2 ... n+1.
|
|
191
|
+
--
|
|
192
|
+
-- There are several things that could be refactored into common subroutines
|
|
193
|
+
-- here: statement blocks dumping, function dumping...
|
|
194
|
+
-- However, given their small size and linear execution
|
|
195
|
+
-- (they basically perform series of :acc(), :node(), :list(),
|
|
196
|
+
-- :nl(), :nlindent() and :nldedent() calls), it seems more readable
|
|
197
|
+
-- to avoid multiplication of such tiny functions.
|
|
198
|
+
--
|
|
199
|
+
-- To make sense out of these, you need to know metalua's AST syntax, as
|
|
200
|
+
-- found in the reference manual or in metalua/doc/ast.txt.
|
|
201
|
+
--
|
|
202
|
+
--------------------------------------------------------------------------------
|
|
203
|
+
|
|
204
|
+
function M:Do (node)
|
|
205
|
+
self:acc "do"
|
|
206
|
+
self:nlindent ()
|
|
207
|
+
self:list (node, self.nl)
|
|
208
|
+
self:nldedent ()
|
|
209
|
+
self:acc "end"
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
function M:Set (node)
|
|
213
|
+
match node with
|
|
214
|
+
| `Set{ { `Index{ lhs, `String{ method } } },
|
|
215
|
+
{ `Function{ { `Id "self", ... } == params, body } } }
|
|
216
|
+
if is_idx_stack (lhs) and is_ident (method) ->
|
|
217
|
+
-- ``function foo:bar(...) ... end'' --
|
|
218
|
+
self:acc "function "
|
|
219
|
+
self:node (lhs)
|
|
220
|
+
self:acc ":"
|
|
221
|
+
self:acc (method)
|
|
222
|
+
self:acc " ("
|
|
223
|
+
self:list (params, ", ", 2)
|
|
224
|
+
self:acc ")"
|
|
225
|
+
self:nlindent ()
|
|
226
|
+
self:list (body, self.nl)
|
|
227
|
+
self:nldedent ()
|
|
228
|
+
self:acc "end"
|
|
229
|
+
|
|
230
|
+
| `Set{ { lhs }, { `Function{ params, body } } } if is_idx_stack (lhs) ->
|
|
231
|
+
-- ``function foo(...) ... end'' --
|
|
232
|
+
self:acc "function "
|
|
233
|
+
self:node (lhs)
|
|
234
|
+
self:acc " ("
|
|
235
|
+
self:list (params, ", ")
|
|
236
|
+
self:acc ")"
|
|
237
|
+
self:nlindent ()
|
|
238
|
+
self:list (body, self.nl)
|
|
239
|
+
self:nldedent ()
|
|
240
|
+
self:acc "end"
|
|
241
|
+
|
|
242
|
+
| `Set{ { `Id{ lhs1name } == lhs1, ... } == lhs, rhs }
|
|
243
|
+
if not is_ident (lhs1name) ->
|
|
244
|
+
-- ``foo, ... = ...'' when foo is *not* a valid identifier.
|
|
245
|
+
-- In that case, the spliced 1st variable must get parentheses,
|
|
246
|
+
-- to be distinguished from a statement splice.
|
|
247
|
+
-- This cannot happen in a plain Lua AST.
|
|
248
|
+
self:acc "("
|
|
249
|
+
self:node (lhs1)
|
|
250
|
+
self:acc ")"
|
|
251
|
+
if lhs[2] then -- more than one lhs variable
|
|
252
|
+
self:acc ", "
|
|
253
|
+
self:list (lhs, ", ", 2)
|
|
254
|
+
end
|
|
255
|
+
self:acc " = "
|
|
256
|
+
self:list (rhs, ", ")
|
|
257
|
+
|
|
258
|
+
| `Set{ lhs, rhs } ->
|
|
259
|
+
-- ``... = ...'', no syntax sugar --
|
|
260
|
+
self:list (lhs, ", ")
|
|
261
|
+
self:acc " = "
|
|
262
|
+
self:list (rhs, ", ")
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
function M:While (node, cond, body)
|
|
267
|
+
self:acc "while "
|
|
268
|
+
self:node (cond)
|
|
269
|
+
self:acc " do"
|
|
270
|
+
self:nlindent ()
|
|
271
|
+
self:list (body, self.nl)
|
|
272
|
+
self:nldedent ()
|
|
273
|
+
self:acc "end"
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
function M:Repeat (node, body, cond)
|
|
277
|
+
self:acc "repeat"
|
|
278
|
+
self:nlindent ()
|
|
279
|
+
self:list (body, self.nl)
|
|
280
|
+
self:nldedent ()
|
|
281
|
+
self:acc "until "
|
|
282
|
+
self:node (cond)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
function M:If (node)
|
|
286
|
+
for i = 1, #node-1, 2 do
|
|
287
|
+
-- for each ``if/then'' and ``elseif/then'' pair --
|
|
288
|
+
local cond, body = node[i], node[i+1]
|
|
289
|
+
self:acc (i==1 and "if " or "elseif ")
|
|
290
|
+
self:node (cond)
|
|
291
|
+
self:acc " then"
|
|
292
|
+
self:nlindent ()
|
|
293
|
+
self:list (body, self.nl)
|
|
294
|
+
self:nldedent ()
|
|
295
|
+
end
|
|
296
|
+
-- odd number of children --> last one is an `else' clause --
|
|
297
|
+
if #node%2 == 1 then
|
|
298
|
+
self:acc "else"
|
|
299
|
+
self:nlindent ()
|
|
300
|
+
self:list (node[#node], self.nl)
|
|
301
|
+
self:nldedent ()
|
|
302
|
+
end
|
|
303
|
+
self:acc "end"
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
function M:Fornum (node, var, first, last)
|
|
307
|
+
local body = node[#node]
|
|
308
|
+
self:acc "for "
|
|
309
|
+
self:node (var)
|
|
310
|
+
self:acc " = "
|
|
311
|
+
self:node (first)
|
|
312
|
+
self:acc ", "
|
|
313
|
+
self:node (last)
|
|
314
|
+
if #node==5 then -- 5 children --> child #4 is a step increment.
|
|
315
|
+
self:acc ", "
|
|
316
|
+
self:node (node[4])
|
|
317
|
+
end
|
|
318
|
+
self:acc " do"
|
|
319
|
+
self:nlindent ()
|
|
320
|
+
self:list (body, self.nl)
|
|
321
|
+
self:nldedent ()
|
|
322
|
+
self:acc "end"
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
function M:Forin (node, vars, generators, body)
|
|
326
|
+
self:acc "for "
|
|
327
|
+
self:list (vars, ", ")
|
|
328
|
+
self:acc " in "
|
|
329
|
+
self:list (generators, ", ")
|
|
330
|
+
self:acc " do"
|
|
331
|
+
self:nlindent ()
|
|
332
|
+
self:list (body, self.nl)
|
|
333
|
+
self:nldedent ()
|
|
334
|
+
self:acc "end"
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
function M:Local (node, lhs, rhs)
|
|
338
|
+
if next (lhs) then
|
|
339
|
+
self:acc "local "
|
|
340
|
+
self:list (lhs, ", ")
|
|
341
|
+
if rhs[1] then
|
|
342
|
+
self:acc " = "
|
|
343
|
+
self:list (rhs, ", ")
|
|
344
|
+
end
|
|
345
|
+
else -- Can't create a local statement with 0 variables in plain Lua
|
|
346
|
+
self:acc (table.tostring (node, 'nohash', 80))
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
function M:Localrec (node, lhs, rhs)
|
|
351
|
+
match node with
|
|
352
|
+
| `Localrec{ { `Id{name} }, { `Function{ params, body } } }
|
|
353
|
+
if is_ident (name) ->
|
|
354
|
+
-- ``local function name() ... end'' --
|
|
355
|
+
self:acc "local function "
|
|
356
|
+
self:acc (name)
|
|
357
|
+
self:acc " ("
|
|
358
|
+
self:list (params, ", ")
|
|
359
|
+
self:acc ")"
|
|
360
|
+
self:nlindent ()
|
|
361
|
+
self:list (body, self.nl)
|
|
362
|
+
self:nldedent ()
|
|
363
|
+
self:acc "end"
|
|
364
|
+
|
|
365
|
+
| _ ->
|
|
366
|
+
-- Other localrec are unprintable ==> splice them --
|
|
367
|
+
-- This cannot happen in a plain Lua AST. --
|
|
368
|
+
self:acc "-{ "
|
|
369
|
+
self:acc (table.tostring (node, 'nohash', 80))
|
|
370
|
+
self:acc " }"
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
function M:Call (node, f)
|
|
375
|
+
-- single string or table literal arg ==> no need for parentheses. --
|
|
376
|
+
local parens
|
|
377
|
+
match node with
|
|
378
|
+
| `Call{ _, `String{_} }
|
|
379
|
+
| `Call{ _, `Table{...}} -> parens = false
|
|
380
|
+
| _ -> parens = true
|
|
381
|
+
end
|
|
382
|
+
self:node (f)
|
|
383
|
+
self:acc (parens and " (" or " ")
|
|
384
|
+
self:list (node, ", ", 2) -- skip `f'.
|
|
385
|
+
self:acc (parens and ")")
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
function M:Invoke (node, f, method)
|
|
389
|
+
-- single string or table literal arg ==> no need for parentheses. --
|
|
390
|
+
local parens
|
|
391
|
+
match node with
|
|
392
|
+
| `Invoke{ _, _, `String{_} }
|
|
393
|
+
| `Invoke{ _, _, `Table{...}} -> parens = false
|
|
394
|
+
| _ -> parens = true
|
|
395
|
+
end
|
|
396
|
+
self:node (f)
|
|
397
|
+
self:acc ":"
|
|
398
|
+
self:acc (method[1])
|
|
399
|
+
self:acc (parens and " (" or " ")
|
|
400
|
+
self:list (node, ", ", 3) -- Skip args #1 and #2, object and method name.
|
|
401
|
+
self:acc (parens and ")")
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
function M:Return (node)
|
|
405
|
+
self:acc "return "
|
|
406
|
+
self:list (node, ", ")
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
M.Break = "break"
|
|
410
|
+
M.Nil = "nil"
|
|
411
|
+
M.False = "false"
|
|
412
|
+
M.True = "true"
|
|
413
|
+
M.Dots = "..."
|
|
414
|
+
|
|
415
|
+
function M:Number (node, n)
|
|
416
|
+
self:acc (tostring (n))
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
function M:String (node, str)
|
|
420
|
+
-- format "%q" prints '\n' in an umpractical way IMO,
|
|
421
|
+
-- so this is fixed with the :gsub( ) call.
|
|
422
|
+
self:acc (string.format ("%q", str):gsub ("\\\n", "\\n"))
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
function M:Function (node, params, body)
|
|
426
|
+
self:acc "function ("
|
|
427
|
+
self:list (params, ", ")
|
|
428
|
+
self:acc ")"
|
|
429
|
+
self:nlindent ()
|
|
430
|
+
self:list (body, self.nl)
|
|
431
|
+
self:nldedent ()
|
|
432
|
+
self:acc "end"
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
function M:Table (node)
|
|
436
|
+
if not node[1] then self:acc "{ }" else
|
|
437
|
+
self:acc "{"
|
|
438
|
+
if #node > 1 then self:nlindent () else self:acc " " end
|
|
439
|
+
for i, elem in ipairs (node) do
|
|
440
|
+
match elem with
|
|
441
|
+
| `Pair{ `String{ key }, value } if is_ident (key) ->
|
|
442
|
+
-- ``key = value''. --
|
|
443
|
+
self:acc (key)
|
|
444
|
+
self:acc " = "
|
|
445
|
+
self:node (value)
|
|
446
|
+
|
|
447
|
+
| `Pair{ key, value } ->
|
|
448
|
+
-- ``[key] = value''. --
|
|
449
|
+
self:acc "["
|
|
450
|
+
self:node (key)
|
|
451
|
+
self:acc "] = "
|
|
452
|
+
self:node (value)
|
|
453
|
+
|
|
454
|
+
| _ ->
|
|
455
|
+
-- ``value''. --
|
|
456
|
+
self:node (elem)
|
|
457
|
+
end
|
|
458
|
+
if node [i+1] then
|
|
459
|
+
self:acc ","
|
|
460
|
+
self:nl ()
|
|
461
|
+
end
|
|
462
|
+
end
|
|
463
|
+
if #node > 1 then self:nldedent () else self:acc " " end
|
|
464
|
+
self:acc "}"
|
|
465
|
+
end
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
function M:Op (node, op, a, b)
|
|
469
|
+
-- Transform ``not (a == b)'' into ``a ~= b''. --
|
|
470
|
+
match node with
|
|
471
|
+
| `Op{ "not", `Op{ "eq", _a, _b } }
|
|
472
|
+
| `Op{ "not", `Paren{ `Op{ "eq", _a, _b } } } ->
|
|
473
|
+
op, a, b = "ne", _a, _b
|
|
474
|
+
| _ ->
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
if b then -- binary operator.
|
|
478
|
+
local left_paren, right_paren
|
|
479
|
+
match a with
|
|
480
|
+
| `Op{ op_a, ...} if op_prec[op] >= op_prec[op_a] -> left_paren = true
|
|
481
|
+
| _ -> left_paren = false
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
match b with -- FIXME: might not work with right assoc operators ^ and ..
|
|
485
|
+
| `Op{ op_b, ...} if op_prec[op] >= op_prec[op_b] -> right_paren = true
|
|
486
|
+
| _ -> right_paren = false
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
self:acc (left_paren and "(")
|
|
490
|
+
self:node (a)
|
|
491
|
+
self:acc (left_paren and ")")
|
|
492
|
+
|
|
493
|
+
self:acc (op_symbol [op])
|
|
494
|
+
|
|
495
|
+
self:acc (right_paren and "(")
|
|
496
|
+
self:node (b)
|
|
497
|
+
self:acc (right_paren and ")")
|
|
498
|
+
|
|
499
|
+
else -- unary operator.
|
|
500
|
+
local paren
|
|
501
|
+
match a with
|
|
502
|
+
| `Op{ op_a, ... } if op_prec[op] >= op_prec[op_a] -> paren = true
|
|
503
|
+
| _ -> paren = false
|
|
504
|
+
end
|
|
505
|
+
self:acc (op_symbol[op])
|
|
506
|
+
self:acc (paren and "(")
|
|
507
|
+
self:node (a)
|
|
508
|
+
self:acc (paren and ")")
|
|
509
|
+
end
|
|
510
|
+
end
|
|
511
|
+
|
|
512
|
+
function M:Paren (node, content)
|
|
513
|
+
self:acc "("
|
|
514
|
+
self:node (content)
|
|
515
|
+
self:acc ")"
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
function M:Index (node, table, key)
|
|
519
|
+
local paren_table
|
|
520
|
+
-- Check precedence, see if parens are needed around the table --
|
|
521
|
+
match table with
|
|
522
|
+
| `Op{ op, ... } if op_prec[op] < op_prec.index -> paren_table = true
|
|
523
|
+
| _ -> paren_table = false
|
|
524
|
+
end
|
|
525
|
+
|
|
526
|
+
self:acc (paren_table and "(")
|
|
527
|
+
self:node (table)
|
|
528
|
+
self:acc (paren_table and ")")
|
|
529
|
+
|
|
530
|
+
match key with
|
|
531
|
+
| `String{ field } if is_ident (field) ->
|
|
532
|
+
-- ``table.key''. --
|
|
533
|
+
self:acc "."
|
|
534
|
+
self:acc (field)
|
|
535
|
+
| _ ->
|
|
536
|
+
-- ``table [key]''. --
|
|
537
|
+
self:acc "["
|
|
538
|
+
self:node (key)
|
|
539
|
+
self:acc "]"
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
function M:Id (node, name)
|
|
544
|
+
if is_ident (name) then
|
|
545
|
+
self:acc (name)
|
|
546
|
+
else -- Unprintable identifier, fall back to splice representation.
|
|
547
|
+
-- This cannot happen in a plain Lua AST.
|
|
548
|
+
self:acc "-{`Id "
|
|
549
|
+
self:String (node, name)
|
|
550
|
+
self:acc "}"
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
|