rufus-lua-win 5.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/lib/rufus/lua/win.rb +18 -0
- data/lib/rufus/lua/win/version.rb +7 -0
- data/rufus-lua-win.gemspec +23 -0
- data/vendor/lua/bin/liblua.dll +0 -0
- data/vendor/lua/lib/lua/LuaXml.lua +119 -0
- data/vendor/lua/lib/lua/alien.lua +250 -0
- data/vendor/lua/lib/lua/alien/core.dll +0 -0
- data/vendor/lua/lib/lua/alien/struct.dll +0 -0
- data/vendor/lua/lib/lua/base.lua +536 -0
- data/vendor/lua/lib/lua/bin.lua +20 -0
- data/vendor/lua/lib/lua/bit.dll +0 -0
- data/vendor/lua/lib/lua/cdlua.dll +0 -0
- data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
- data/vendor/lua/lib/lua/cdluagl.dll +0 -0
- data/vendor/lua/lib/lua/cdluaim.dll +0 -0
- data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
- data/vendor/lua/lib/lua/copas.lua +543 -0
- data/vendor/lua/lib/lua/coxpcall.lua +57 -0
- data/vendor/lua/lib/lua/date.lua +745 -0
- data/vendor/lua/lib/lua/debug_ext.lua +84 -0
- data/vendor/lua/lib/lua/debug_init.lua +2 -0
- data/vendor/lua/lib/lua/des56.dll +0 -0
- data/vendor/lua/lib/lua/dist/config.lua +109 -0
- data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
- data/vendor/lua/lib/lua/dist/depends.lua +601 -0
- data/vendor/lua/lib/lua/dist/git.lua +307 -0
- data/vendor/lua/lib/lua/dist/init.lua +278 -0
- data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
- data/vendor/lua/lib/lua/dist/package.lua +583 -0
- data/vendor/lua/lib/lua/dist/sys.lua +367 -0
- data/vendor/lua/lib/lua/dist/utils.lua +130 -0
- data/vendor/lua/lib/lua/ex.dll +0 -0
- data/vendor/lua/lib/lua/fstable.lua +116 -0
- data/vendor/lua/lib/lua/getopt.lua +273 -0
- data/vendor/lua/lib/lua/git.lua +5 -0
- data/vendor/lua/lib/lua/git/core.dll +0 -0
- data/vendor/lua/lib/lua/git/objects.lua +121 -0
- data/vendor/lua/lib/lua/git/pack.lua +316 -0
- data/vendor/lua/lib/lua/git/protocol.lua +188 -0
- data/vendor/lua/lib/lua/git/repo.lua +283 -0
- data/vendor/lua/lib/lua/git/util.lua +233 -0
- data/vendor/lua/lib/lua/gzio.dll +0 -0
- data/vendor/lua/lib/lua/gzip.lua +81 -0
- data/vendor/lua/lib/lua/iconv.dll +0 -0
- data/vendor/lua/lib/lua/imlua.dll +0 -0
- data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
- data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
- data/vendor/lua/lib/lua/io_ext.lua +115 -0
- data/vendor/lua/lib/lua/iuplua.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
- data/vendor/lua/lib/lua/iupluacd.dll +0 -0
- data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
- data/vendor/lua/lib/lua/iupluagl.dll +0 -0
- data/vendor/lua/lib/lua/iupluaim.dll +0 -0
- data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
- data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
- data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
- data/vendor/lua/lib/lua/lanes.lua +591 -0
- data/vendor/lua/lib/lua/lanes/core.dll +0 -0
- data/vendor/lua/lib/lua/lcs.lua +55 -0
- data/vendor/lua/lib/lua/lemock.lua +659 -0
- data/vendor/lua/lib/lua/lfs.dll +0 -0
- data/vendor/lua/lib/lua/list.lua +375 -0
- data/vendor/lua/lib/lua/logging.lua +189 -0
- data/vendor/lua/lib/lua/logging/console.lua +22 -0
- data/vendor/lua/lib/lua/logging/email.lua +44 -0
- data/vendor/lua/lib/lua/logging/file.lua +55 -0
- data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
- data/vendor/lua/lib/lua/logging/socket.lua +35 -0
- data/vendor/lua/lib/lua/logging/sql.lua +64 -0
- data/vendor/lua/lib/lua/loop/base.lua +68 -0
- data/vendor/lua/lib/lua/loop/cached.lua +312 -0
- data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
- data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
- data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
- data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
- data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
- data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
- data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
- data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
- data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
- data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
- data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
- data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
- data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
- data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
- data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
- data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
- data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
- data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
- data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
- data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
- data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
- data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
- data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
- data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
- data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
- data/vendor/lua/lib/lua/loop/simple.lua +75 -0
- data/vendor/lua/lib/lua/loop/table.lua +71 -0
- data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
- data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
- data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
- data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
- data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
- data/vendor/lua/lib/lua/lpeg.dll +0 -0
- data/vendor/lua/lib/lua/ltn12.lua +292 -0
- data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
- data/vendor/lua/lib/lua/luacurl.dll +0 -0
- data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
- data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
- data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
- data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
- data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
- data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
- data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
- data/vendor/lua/lib/lua/luagl.dll +0 -0
- data/vendor/lua/lib/lua/luaglu.dll +0 -0
- data/vendor/lua/lib/lua/luaidl.lua +113 -0
- data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
- data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
- data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
- data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
- data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
- data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
- data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
- data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
- data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
- data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
- data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
- data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
- data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
- data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
- data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
- data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
- data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
- data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
- data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
- data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
- data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
- data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
- data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
- data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
- data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
- data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
- data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
- data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
- data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
- data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
- data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
- data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
- data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
- data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
- data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
- data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
- data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
- data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
- data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
- data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
- data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
- data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
- data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
- data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
- data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
- data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
- data/vendor/lua/lib/lua/luars232.dll +0 -0
- data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
- data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
- data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
- data/vendor/lua/lib/lua/luaunit.lua +601 -0
- data/vendor/lua/lib/lua/lxp.dll +0 -0
- data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
- data/vendor/lua/lib/lua/math_ext.lua +27 -0
- data/vendor/lua/lib/lua/mbox.lua +53 -0
- data/vendor/lua/lib/lua/md5.lua +19 -0
- data/vendor/lua/lib/lua/md5/core.dll +0 -0
- data/vendor/lua/lib/lua/metalua.lua +0 -0
- data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
- data/vendor/lua/lib/lua/metalua/base.lua +104 -0
- data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
- data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
- data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
- data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
- data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
- data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
- data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
- data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
- data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
- data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
- data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
- data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
- data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
- data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
- data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
- data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
- data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
- data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
- data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
- data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
- data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
- data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
- data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
- data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
- data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
- data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
- data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
- data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
- data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
- data/vendor/lua/lib/lua/mime.lua +87 -0
- data/vendor/lua/lib/lua/mime/core.dll +0 -0
- data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
- data/vendor/lua/lib/lua/modules.lua +16 -0
- data/vendor/lua/lib/lua/object.lua +56 -0
- data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
- data/vendor/lua/lib/lua/oil/arch.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
- data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
- data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
- data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
- data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
- data/vendor/lua/lib/lua/oil/assert.lua +87 -0
- data/vendor/lua/lib/lua/oil/builder.lua +45 -0
- data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
- data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
- data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
- data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/compat.lua +846 -0
- data/vendor/lua/lib/lua/oil/component.lua +1 -0
- data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
- data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
- data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
- data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
- data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
- data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
- data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
- data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
- data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
- data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
- data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
- data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
- data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
- data/vendor/lua/lib/lua/oil/oo.lua +1 -0
- data/vendor/lua/lib/lua/oil/port.lua +1 -0
- data/vendor/lua/lib/lua/oil/properties.lua +57 -0
- data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
- data/vendor/lua/lib/lua/package_ext.lua +15 -0
- data/vendor/lua/lib/lua/parser.lua +268 -0
- data/vendor/lua/lib/lua/pl/Date.lua +555 -0
- data/vendor/lua/lib/lua/pl/List.lua +613 -0
- data/vendor/lua/lib/lua/pl/Map.lua +113 -0
- data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
- data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
- data/vendor/lua/lib/lua/pl/Set.lua +153 -0
- data/vendor/lua/lib/lua/pl/app.lua +165 -0
- data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
- data/vendor/lua/lib/lua/pl/class.lua +180 -0
- data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
- data/vendor/lua/lib/lua/pl/config.lua +176 -0
- data/vendor/lua/lib/lua/pl/data.lua +606 -0
- data/vendor/lua/lib/lua/pl/dir.lua +475 -0
- data/vendor/lua/lib/lua/pl/file.lua +70 -0
- data/vendor/lua/lib/lua/pl/func.lua +376 -0
- data/vendor/lua/lib/lua/pl/init.lua +68 -0
- data/vendor/lua/lib/lua/pl/input.lua +173 -0
- data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
- data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
- data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
- data/vendor/lua/lib/lua/pl/operator.lua +201 -0
- data/vendor/lua/lib/lua/pl/path.lua +398 -0
- data/vendor/lua/lib/lua/pl/permute.lua +63 -0
- data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
- data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
- data/vendor/lua/lib/lua/pl/seq.lua +551 -0
- data/vendor/lua/lib/lua/pl/sip.lua +344 -0
- data/vendor/lua/lib/lua/pl/strict.lua +70 -0
- data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
- data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
- data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
- data/vendor/lua/lib/lua/pl/template.lua +103 -0
- data/vendor/lua/lib/lua/pl/test.lua +135 -0
- data/vendor/lua/lib/lua/pl/text.lua +243 -0
- data/vendor/lua/lib/lua/pl/utils.lua +550 -0
- data/vendor/lua/lib/lua/pl/xml.lua +689 -0
- data/vendor/lua/lib/lua/profiler.dll +0 -0
- data/vendor/lua/lib/lua/re.lua +248 -0
- data/vendor/lua/lib/lua/rex_onig.dll +0 -0
- data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
- data/vendor/lua/lib/lua/rex_posix.dll +0 -0
- data/vendor/lua/lib/lua/rings.dll +0 -0
- data/vendor/lua/lib/lua/serialize.lua +193 -0
- data/vendor/lua/lib/lua/set.lua +149 -0
- data/vendor/lua/lib/lua/socket.lua +133 -0
- data/vendor/lua/lib/lua/socket/core.dll +0 -0
- data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
- data/vendor/lua/lib/lua/socket/http.lua +350 -0
- data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
- data/vendor/lua/lib/lua/socket/tp.lua +123 -0
- data/vendor/lua/lib/lua/socket/url.lua +297 -0
- data/vendor/lua/lib/lua/ssl.dll +0 -0
- data/vendor/lua/lib/lua/ssl.lua +93 -0
- data/vendor/lua/lib/lua/ssl/https.lua +138 -0
- data/vendor/lua/lib/lua/stable.lua +28 -0
- data/vendor/lua/lib/lua/std.lua +16 -0
- data/vendor/lua/lib/lua/strbuf.lua +32 -0
- data/vendor/lua/lib/lua/strict.lua +45 -0
- data/vendor/lua/lib/lua/string_ext.lua +274 -0
- data/vendor/lua/lib/lua/table_ext.lua +117 -0
- data/vendor/lua/lib/lua/tar.lua +262 -0
- data/vendor/lua/lib/lua/task.dll +0 -0
- data/vendor/lua/lib/lua/tree.lua +81 -0
- data/vendor/lua/lib/lua/unicode.dll +0 -0
- data/vendor/lua/lib/lua/verbose_require.lua +11 -0
- data/vendor/lua/lib/lua/vstruct.lua +86 -0
- data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
- data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
- data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
- data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
- data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
- data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
- data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
- data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
- data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
- data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
- data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
- data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
- data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
- data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
- data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
- data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
- data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
- data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
- data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
- data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
- data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
- data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
- data/vendor/lua/lib/lua/wx.dll +0 -0
- data/vendor/lua/lib/lua/xml.lua +75 -0
- data/vendor/lua/lib/lua/zip.dll +0 -0
- data/vendor/lua/lib/lua/zlib.dll +0 -0
- metadata +529 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
-------------------------------------------------------------------------------
|
2
|
+
-- Prints logging information to console
|
3
|
+
--
|
4
|
+
-- @author Thiago Costa Ponte (thiago@ideais.com.br)
|
5
|
+
--
|
6
|
+
-- @copyright 2004-2011 Kepler Project
|
7
|
+
--
|
8
|
+
-------------------------------------------------------------------------------
|
9
|
+
|
10
|
+
require"logging"
|
11
|
+
|
12
|
+
function logging.console(logPattern)
|
13
|
+
|
14
|
+
return logging.new( function(self, level, message)
|
15
|
+
io.stdout:write(logging.prepareLogMsg(logPattern, os.date(), level, message))
|
16
|
+
return true
|
17
|
+
end
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
return logging.console
|
22
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
-------------------------------------------------------------------------------
|
2
|
+
-- Emails logging information to the given recipient
|
3
|
+
--
|
4
|
+
-- @author Thiago Costa Ponte (thiago@ideais.com.br)
|
5
|
+
--
|
6
|
+
-- @copyright 2004-2011 Kepler Project
|
7
|
+
--
|
8
|
+
-------------------------------------------------------------------------------
|
9
|
+
|
10
|
+
require"logging"
|
11
|
+
local smtp = require"socket.smtp"
|
12
|
+
|
13
|
+
function logging.email(params)
|
14
|
+
|
15
|
+
params = params or {}
|
16
|
+
params.headers = params.headers or {}
|
17
|
+
|
18
|
+
if params.from == nil then
|
19
|
+
return nil, "'from' parameter is required"
|
20
|
+
end
|
21
|
+
if params.rcpt == nil then
|
22
|
+
return nil, "'rcpt' parameter is required"
|
23
|
+
end
|
24
|
+
|
25
|
+
return logging.new( function(self, level, message)
|
26
|
+
local s = logging.prepareLogMsg(params.logPattern, os.date(), level, message)
|
27
|
+
if params.headers.subject then
|
28
|
+
params.headers.subject = logging.prepareLogMsg(params.headers.subject, os.date(), level, message)
|
29
|
+
end
|
30
|
+
local msg = { headers = params.headers, body = s }
|
31
|
+
params.source = smtp.message(msg)
|
32
|
+
|
33
|
+
local r, e = smtp.send(params)
|
34
|
+
if not r then
|
35
|
+
return nil, e
|
36
|
+
end
|
37
|
+
|
38
|
+
return true
|
39
|
+
end
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
return logging.email
|
44
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
-------------------------------------------------------------------------------
|
2
|
+
-- Saves logging information in a file
|
3
|
+
--
|
4
|
+
-- @author Thiago Costa Ponte (thiago@ideais.com.br)
|
5
|
+
--
|
6
|
+
-- @copyright 2004-2011 Kepler Project
|
7
|
+
--
|
8
|
+
-------------------------------------------------------------------------------
|
9
|
+
|
10
|
+
require"logging"
|
11
|
+
|
12
|
+
local lastFileNameDatePattern
|
13
|
+
local lastFileHandler
|
14
|
+
|
15
|
+
local openFileLogger = function (filename, datePattern)
|
16
|
+
|
17
|
+
local filename = string.format(filename, os.date(datePattern))
|
18
|
+
if (lastFileNameDatePattern ~= filename) then
|
19
|
+
|
20
|
+
local f = io.open(filename, "a")
|
21
|
+
if (f) then
|
22
|
+
f:setvbuf ("line")
|
23
|
+
lastFileNameDatePattern = filename
|
24
|
+
lastFileHandler = f
|
25
|
+
return f
|
26
|
+
else
|
27
|
+
return nil, string.format("file `%s' could not be opened for writing", filename)
|
28
|
+
end
|
29
|
+
else
|
30
|
+
return lastFileHandler
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
function logging.file(filename, datePattern, logPattern)
|
36
|
+
|
37
|
+
if type(filename) ~= "string" then
|
38
|
+
filename = "lualogging.log"
|
39
|
+
end
|
40
|
+
|
41
|
+
return logging.new( function(self, level, message)
|
42
|
+
|
43
|
+
local f, msg = openFileLogger(filename, datePattern)
|
44
|
+
if not f then
|
45
|
+
return nil, msg
|
46
|
+
end
|
47
|
+
local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
|
48
|
+
f:write(s)
|
49
|
+
return true
|
50
|
+
end
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
return logging.file
|
55
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
---------------------------------------------------------------------------
|
2
|
+
-- RollingFileAppender is a FileAppender that rolls over the logfile
|
3
|
+
-- once it has reached a certain size limit. It also mantains a
|
4
|
+
-- maximum number of log files.
|
5
|
+
--
|
6
|
+
-- @author Tiago Cesar Katcipis (tiagokatcipis@gmail.com)
|
7
|
+
--
|
8
|
+
-- @copyright 2004-2007 Kepler Project
|
9
|
+
---------------------------------------------------------------------------
|
10
|
+
|
11
|
+
require"logging"
|
12
|
+
|
13
|
+
|
14
|
+
local function openFile(self)
|
15
|
+
self.file = io.open(self.filename, "a")
|
16
|
+
if not self.file then
|
17
|
+
return nil, string.format("file `%s' could not be opened for writing", self.filename)
|
18
|
+
end
|
19
|
+
self.file:setvbuf ("line")
|
20
|
+
return self.file
|
21
|
+
end
|
22
|
+
|
23
|
+
local rollOver = function (self)
|
24
|
+
|
25
|
+
for i = self.maxIndex - 1, 1, -1 do
|
26
|
+
-- files may not exist yet, lets ignore the possible errors.
|
27
|
+
os.rename(self.filename.."."..i, self.filename.."."..i+1)
|
28
|
+
end
|
29
|
+
|
30
|
+
self.file:close()
|
31
|
+
self.file = nil
|
32
|
+
|
33
|
+
local _, msg = os.rename(self.filename, self.filename..".".."1")
|
34
|
+
|
35
|
+
if msg then
|
36
|
+
return nil, string.format("error %s on log rollover", msg)
|
37
|
+
end
|
38
|
+
|
39
|
+
return openFile(self)
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
local openRollingFileLogger = function (self)
|
44
|
+
|
45
|
+
if not self.file then
|
46
|
+
return openFile(self)
|
47
|
+
end
|
48
|
+
|
49
|
+
local filesize = self.file:seek("end", 0)
|
50
|
+
|
51
|
+
if (filesize < self.maxSize) then
|
52
|
+
return self.file
|
53
|
+
end
|
54
|
+
|
55
|
+
return rollOver(self)
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
function logging.rolling_file(filename, maxFileSize, maxBackupIndex, logPattern)
|
60
|
+
|
61
|
+
if type(filename) ~= "string" then
|
62
|
+
filename = "lualogging.log"
|
63
|
+
end
|
64
|
+
|
65
|
+
local obj = { filename = filename,
|
66
|
+
maxSize = maxFileSize,
|
67
|
+
maxIndex = maxBackupIndex or 1
|
68
|
+
}
|
69
|
+
|
70
|
+
return logging.new( function(self, level, message)
|
71
|
+
|
72
|
+
local f, msg = openRollingFileLogger(obj)
|
73
|
+
if not f then
|
74
|
+
return nil, msg
|
75
|
+
end
|
76
|
+
local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
|
77
|
+
f:write(s)
|
78
|
+
return true
|
79
|
+
end
|
80
|
+
)
|
81
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
-------------------------------------------------------------------------------
|
2
|
+
-- Sends the logging information through a socket using luasocket
|
3
|
+
--
|
4
|
+
-- @author Thiago Costa Ponte (thiago@ideais.com.br)
|
5
|
+
--
|
6
|
+
-- @copyright 2004-2011 Kepler Project
|
7
|
+
--
|
8
|
+
-------------------------------------------------------------------------------
|
9
|
+
|
10
|
+
require"logging"
|
11
|
+
local socket = require"socket"
|
12
|
+
|
13
|
+
function logging.socket(address, port, logPattern)
|
14
|
+
|
15
|
+
return logging.new( function(self, level, message)
|
16
|
+
local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
|
17
|
+
|
18
|
+
local socket, err = socket.connect(address, port)
|
19
|
+
if not socket then
|
20
|
+
return nil, err
|
21
|
+
end
|
22
|
+
|
23
|
+
local cond, err = socket:send(s)
|
24
|
+
if not cond then
|
25
|
+
return nil, err
|
26
|
+
end
|
27
|
+
socket:close()
|
28
|
+
|
29
|
+
return true
|
30
|
+
end
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
return logging.socket
|
35
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
-------------------------------------------------------------------------------
|
2
|
+
-- Saves the logging information in a table using luasql
|
3
|
+
--
|
4
|
+
-- @author Thiago Costa Ponte (thiago@ideais.com.br)
|
5
|
+
--
|
6
|
+
-- @copyright 2004-2011 Kepler Project
|
7
|
+
--
|
8
|
+
-------------------------------------------------------------------------------
|
9
|
+
|
10
|
+
require"logging"
|
11
|
+
|
12
|
+
function logging.sql(params)
|
13
|
+
|
14
|
+
params = params or {}
|
15
|
+
params.tablename = params.tablename or "LogTable"
|
16
|
+
params.logdatefield = params.logdatefield or "LogDate"
|
17
|
+
params.loglevelfield = params.loglevelfield or "LogLevel"
|
18
|
+
params.logmessagefield = params.logmessagefield or "LogMessage"
|
19
|
+
|
20
|
+
if params.connectionfactory == nil or type(params.connectionfactory) ~= "function" then
|
21
|
+
return nil, "No specified connection factory function"
|
22
|
+
end
|
23
|
+
|
24
|
+
local con, err
|
25
|
+
if params.keepalive then
|
26
|
+
con, err = params.connectionfactory()
|
27
|
+
end
|
28
|
+
|
29
|
+
return logging.new( function(self, level, message)
|
30
|
+
if (not params.keepalive) or (con == nil) then
|
31
|
+
con, err = params.connectionfactory()
|
32
|
+
if not con then
|
33
|
+
return nil, err
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
local logDate = os.date("%Y-%m-%d %H:%M:%S")
|
38
|
+
local insert = string.format("INSERT INTO %s (%s, %s, %s) VALUES ('%s', '%s', '%s')",
|
39
|
+
params.tablename, params.logdatefield, params.loglevelfield,
|
40
|
+
params.logmessagefield, logDate, level, string.gsub(message, "'", "''"))
|
41
|
+
|
42
|
+
local ret, err = pcall(con.execute, con, insert)
|
43
|
+
if not ret then
|
44
|
+
con, err = params.connectionfactory()
|
45
|
+
if not con then
|
46
|
+
return nil, err
|
47
|
+
end
|
48
|
+
ret, err = con:execute(insert)
|
49
|
+
if not ret then
|
50
|
+
return nil, err
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
if not params.keepalive then
|
55
|
+
con:close()
|
56
|
+
end
|
57
|
+
|
58
|
+
return true
|
59
|
+
end
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
return logging.sql
|
64
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
--------------------------------------------------------------------------------
|
2
|
+
---------------------- ## ##### ##### ###### -----------------------
|
3
|
+
---------------------- ## ## ## ## ## ## ## -----------------------
|
4
|
+
---------------------- ## ## ## ## ## ###### -----------------------
|
5
|
+
---------------------- ## ## ## ## ## ## -----------------------
|
6
|
+
---------------------- ###### ##### ##### ## -----------------------
|
7
|
+
---------------------- -----------------------
|
8
|
+
----------------------- Lua Object-Oriented Programming ------------------------
|
9
|
+
--------------------------------------------------------------------------------
|
10
|
+
-- Project: LOOP - Lua Object-Oriented Programming --
|
11
|
+
-- Release: 2.3 beta --
|
12
|
+
-- Title : Base Class Model --
|
13
|
+
-- Author : Renato Maia <maia@inf.puc-rio.br> --
|
14
|
+
--------------------------------------------------------------------------------
|
15
|
+
-- Exported API: --
|
16
|
+
-- class(class) --
|
17
|
+
-- new(class, ...) --
|
18
|
+
-- classof(object) --
|
19
|
+
-- isclass(class) --
|
20
|
+
-- instanceof(object, class) --
|
21
|
+
-- memberof(class, name) --
|
22
|
+
-- members(class) --
|
23
|
+
--------------------------------------------------------------------------------
|
24
|
+
|
25
|
+
local pairs = pairs
|
26
|
+
local unpack = unpack
|
27
|
+
local rawget = rawget
|
28
|
+
local setmetatable = setmetatable
|
29
|
+
local getmetatable = getmetatable
|
30
|
+
|
31
|
+
module "loop.base"
|
32
|
+
|
33
|
+
--------------------------------------------------------------------------------
|
34
|
+
function rawnew(class, object)
|
35
|
+
return setmetatable(object or {}, class)
|
36
|
+
end
|
37
|
+
--------------------------------------------------------------------------------
|
38
|
+
function new(class, ...)
|
39
|
+
if class.__init
|
40
|
+
then return class:__init(...)
|
41
|
+
else return rawnew(class, ...)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
--------------------------------------------------------------------------------
|
45
|
+
function initclass(class)
|
46
|
+
if class == nil then class = {} end
|
47
|
+
if class.__index == nil then class.__index = class end
|
48
|
+
return class
|
49
|
+
end
|
50
|
+
--------------------------------------------------------------------------------
|
51
|
+
local MetaClass = { __call = new }
|
52
|
+
function class(class)
|
53
|
+
return setmetatable(initclass(class), MetaClass)
|
54
|
+
end
|
55
|
+
--------------------------------------------------------------------------------
|
56
|
+
classof = getmetatable
|
57
|
+
--------------------------------------------------------------------------------
|
58
|
+
function isclass(class)
|
59
|
+
return classof(class) == MetaClass
|
60
|
+
end
|
61
|
+
--------------------------------------------------------------------------------
|
62
|
+
function instanceof(object, class)
|
63
|
+
return classof(object) == class
|
64
|
+
end
|
65
|
+
--------------------------------------------------------------------------------
|
66
|
+
memberof = rawget
|
67
|
+
--------------------------------------------------------------------------------
|
68
|
+
members = pairs
|
@@ -0,0 +1,312 @@
|
|
1
|
+
--------------------------------------------------------------------------------
|
2
|
+
---------------------- ## ##### ##### ###### -----------------------
|
3
|
+
---------------------- ## ## ## ## ## ## ## -----------------------
|
4
|
+
---------------------- ## ## ## ## ## ###### -----------------------
|
5
|
+
---------------------- ## ## ## ## ## ## -----------------------
|
6
|
+
---------------------- ###### ##### ##### ## -----------------------
|
7
|
+
---------------------- -----------------------
|
8
|
+
----------------------- Lua Object-Oriented Programming ------------------------
|
9
|
+
--------------------------------------------------------------------------------
|
10
|
+
-- Project: LOOP - Lua Object-Oriented Programming --
|
11
|
+
-- Release: 2.3 beta --
|
12
|
+
-- Title : Cached Class Model --
|
13
|
+
-- Author : Renato Maia <maia@inf.puc-rio.br> --
|
14
|
+
--------------------------------------------------------------------------------
|
15
|
+
-- Exported API: --
|
16
|
+
-- class(class, ...) --
|
17
|
+
-- new(class, ...) --
|
18
|
+
-- classof(object) --
|
19
|
+
-- isclass(class) --
|
20
|
+
-- instanceof(object, class) --
|
21
|
+
-- memberof(class, name) --
|
22
|
+
-- members(class) --
|
23
|
+
-- superclass(class) --
|
24
|
+
-- subclassof(class, super) --
|
25
|
+
-- supers(class) --
|
26
|
+
-- allmembers(class) --
|
27
|
+
--------------------------------------------------------------------------------
|
28
|
+
|
29
|
+
local type = type
|
30
|
+
local unpack = unpack
|
31
|
+
local pairs = pairs
|
32
|
+
local rawget = rawget
|
33
|
+
local rawset = rawset
|
34
|
+
local require = require
|
35
|
+
local ipairs = ipairs
|
36
|
+
local setmetatable = setmetatable
|
37
|
+
local select = select
|
38
|
+
|
39
|
+
local table = require "loop.table"
|
40
|
+
|
41
|
+
module "loop.cached"
|
42
|
+
--------------------------------------------------------------------------------
|
43
|
+
local OrderedSet = require "loop.collection.OrderedSet"
|
44
|
+
local base = require "loop.multiple"
|
45
|
+
--------------------------------------------------------------------------------
|
46
|
+
table.copy(base, _M)
|
47
|
+
--------------------------------------------------------------------------------
|
48
|
+
local function subsiterator(queue, class)
|
49
|
+
class = queue[class]
|
50
|
+
if class then
|
51
|
+
for sub in pairs(class.subs) do
|
52
|
+
queue:enqueue(sub)
|
53
|
+
end
|
54
|
+
return class
|
55
|
+
end
|
56
|
+
end
|
57
|
+
function subs(class)
|
58
|
+
queue = OrderedSet()
|
59
|
+
queue:enqueue(class)
|
60
|
+
return subsiterator, queue, OrderedSet.firstkey
|
61
|
+
end
|
62
|
+
--------------------------------------------------------------------------------
|
63
|
+
local function proxy_newindex(proxy, field, value)
|
64
|
+
return base.classof(proxy):updatefield(field, value)
|
65
|
+
end
|
66
|
+
--------------------------------------------------------------------------------
|
67
|
+
function getclass(class)
|
68
|
+
local cached = base.classof(class)
|
69
|
+
if base.instanceof(cached, CachedClass) then
|
70
|
+
return cached
|
71
|
+
end
|
72
|
+
end
|
73
|
+
--------------------------------------------------------------------------------
|
74
|
+
local ClassMap = base.new { __mode = "k" }
|
75
|
+
--------------------------------------------------------------------------------
|
76
|
+
CachedClass = base.class()
|
77
|
+
|
78
|
+
function CachedClass:__init(class)
|
79
|
+
local meta = {}
|
80
|
+
self = base.rawnew(self, {
|
81
|
+
__call = new,
|
82
|
+
__index = meta,
|
83
|
+
__newindex = proxy_newindex,
|
84
|
+
supers = {},
|
85
|
+
subs = {},
|
86
|
+
members = table.copy(class, {}),
|
87
|
+
class = meta,
|
88
|
+
})
|
89
|
+
self.proxy = setmetatable(class and table.clear(class) or {}, self)
|
90
|
+
ClassMap[self.class] = self.proxy
|
91
|
+
return self
|
92
|
+
end
|
93
|
+
|
94
|
+
function CachedClass:updatehierarchy(...)
|
95
|
+
-- separate cached from non-cached classes
|
96
|
+
local caches = {}
|
97
|
+
local supers = {}
|
98
|
+
for i = 1, select("#", ...) do
|
99
|
+
local super = select(i, ...)
|
100
|
+
local cached = getclass(super)
|
101
|
+
if cached
|
102
|
+
then caches[#caches + 1] = cached
|
103
|
+
else supers[#supers + 1] = super
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
-- remove it from its old superclasses
|
108
|
+
for _, super in ipairs(self.supers) do
|
109
|
+
super:removesubclass(self)
|
110
|
+
end
|
111
|
+
|
112
|
+
-- update superclasses
|
113
|
+
self.uncached = supers
|
114
|
+
self.supers = caches
|
115
|
+
|
116
|
+
-- register as subclass in all superclasses
|
117
|
+
for _, super in ipairs(self.supers) do
|
118
|
+
super:addsubclass(self)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
function CachedClass:updateinheritance()
|
123
|
+
-- relink all affected classes
|
124
|
+
for sub in subs(self) do
|
125
|
+
sub:updatemembers()
|
126
|
+
sub:updatesuperclasses()
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
function CachedClass:addsubclass(class)
|
131
|
+
self.subs[class] = true
|
132
|
+
end
|
133
|
+
|
134
|
+
function CachedClass:removesubclass(class)
|
135
|
+
self.subs[class] = nil
|
136
|
+
end
|
137
|
+
|
138
|
+
function CachedClass:updatesuperclasses()
|
139
|
+
local uncached = {}
|
140
|
+
-- copy uncached superclasses defined in the class
|
141
|
+
for _, super in ipairs(self.uncached) do
|
142
|
+
if not uncached[super] then
|
143
|
+
uncached[super] = true
|
144
|
+
uncached[#uncached + 1] = super
|
145
|
+
end
|
146
|
+
end
|
147
|
+
-- copy inherited uncached superclasses
|
148
|
+
for _, cached in ipairs(self.supers) do
|
149
|
+
for _, super in base.supers(cached.class) do
|
150
|
+
if not uncached[super] then
|
151
|
+
uncached[super] = true
|
152
|
+
uncached[#uncached + 1] = super
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
base.class(self.class, unpack(uncached))
|
157
|
+
end
|
158
|
+
|
159
|
+
function CachedClass:updatemembers()
|
160
|
+
local class = table.clear(self.class)
|
161
|
+
for i = #self.supers, 1, -1 do
|
162
|
+
local super = self.supers[i].class
|
163
|
+
-- copy inherited members
|
164
|
+
table.copy(super, class)
|
165
|
+
-- do not copy the default __index value
|
166
|
+
if rawget(class, "__index") == super then
|
167
|
+
rawset(class, "__index", nil)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
-- copy members defined in the class
|
171
|
+
table.copy(self.members, class)
|
172
|
+
-- set the default __index value
|
173
|
+
if rawget(class, "__index") == nil then
|
174
|
+
rawset(class, "__index", class)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
function CachedClass:updatefield(name, member)
|
179
|
+
-- update member list
|
180
|
+
local members = self.members
|
181
|
+
members[name] = member
|
182
|
+
|
183
|
+
-- get old linkage
|
184
|
+
local class = self.class
|
185
|
+
local old = class[name]
|
186
|
+
|
187
|
+
-- replace old linkage for the new one
|
188
|
+
class[name] = member
|
189
|
+
local queue = OrderedSet()
|
190
|
+
for sub in pairs(self.subs) do
|
191
|
+
queue:enqueue(sub)
|
192
|
+
end
|
193
|
+
while queue:head() do
|
194
|
+
local current = queue:dequeue()
|
195
|
+
class = current.class
|
196
|
+
members = current.members
|
197
|
+
if members[name] == nil then
|
198
|
+
for _, super in ipairs(current.supers) do
|
199
|
+
local superclass = super.class
|
200
|
+
if superclass[name] ~= nil then
|
201
|
+
if superclass[name] ~= class[name] then
|
202
|
+
class[name] = superclass[name]
|
203
|
+
for sub in pairs(current.subs) do
|
204
|
+
queue:enqueue(sub)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
break
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
return old
|
213
|
+
end
|
214
|
+
--------------------------------------------------------------------------------
|
215
|
+
function class(class, ...)
|
216
|
+
class = getclass(class) or CachedClass(class)
|
217
|
+
class:updatehierarchy(...)
|
218
|
+
class:updateinheritance()
|
219
|
+
return class.proxy
|
220
|
+
end
|
221
|
+
--------------------------------------------------------------------------------
|
222
|
+
function rawnew(class, object)
|
223
|
+
local cached = getclass(class)
|
224
|
+
if cached then class = cached.class end
|
225
|
+
return base.rawnew(class, object)
|
226
|
+
end
|
227
|
+
--------------------------------------------------------------------------------
|
228
|
+
function new(class, ...)
|
229
|
+
if class.__init
|
230
|
+
then return class:__init(...)
|
231
|
+
else return rawnew(class, ...)
|
232
|
+
end
|
233
|
+
end
|
234
|
+
--------------------------------------------------------------------------------
|
235
|
+
function classof(object)
|
236
|
+
local class = base.classof(object)
|
237
|
+
return ClassMap[class] or class
|
238
|
+
end
|
239
|
+
--------------------------------------------------------------------------------
|
240
|
+
function isclass(class)
|
241
|
+
return getclass(class) ~= nil
|
242
|
+
end
|
243
|
+
--------------------------------------------------------------------------------
|
244
|
+
function superclass(class)
|
245
|
+
local supers = {}
|
246
|
+
local cached = getclass(class)
|
247
|
+
if cached then
|
248
|
+
for index, super in ipairs(cached.supers) do
|
249
|
+
supers[index] = super.proxy
|
250
|
+
end
|
251
|
+
class = cached.class
|
252
|
+
end
|
253
|
+
for _, super in base.supers(class) do
|
254
|
+
supers[#supers + 1] = super
|
255
|
+
end
|
256
|
+
return unpack(supers)
|
257
|
+
end
|
258
|
+
--------------------------------------------------------------------------------
|
259
|
+
local function icached(cached, index)
|
260
|
+
local super
|
261
|
+
local supers = cached.supers
|
262
|
+
index = index + 1
|
263
|
+
-- check if index points to a cached superclass
|
264
|
+
super = supers[index]
|
265
|
+
if super then return index, super.proxy end
|
266
|
+
-- check if index points to an uncached superclass
|
267
|
+
super = cached.uncached[index - #supers]
|
268
|
+
if super then return index, super end
|
269
|
+
end
|
270
|
+
function supers(class)
|
271
|
+
local cached = getclass(class)
|
272
|
+
if cached
|
273
|
+
then return icached, cached, 0
|
274
|
+
else return base.supers(class)
|
275
|
+
end
|
276
|
+
end
|
277
|
+
--------------------------------------------------------------------------------
|
278
|
+
function subclassof(class, super)
|
279
|
+
if class == super then return true end
|
280
|
+
for _, superclass in supers(class) do
|
281
|
+
if subclassof(superclass, super) then return true end
|
282
|
+
end
|
283
|
+
return false
|
284
|
+
end
|
285
|
+
--------------------------------------------------------------------------------
|
286
|
+
function instanceof(object, class)
|
287
|
+
return subclassof(classof(object), class)
|
288
|
+
end
|
289
|
+
--------------------------------------------------------------------------------
|
290
|
+
function memberof(class, name)
|
291
|
+
local cached = getclass(class)
|
292
|
+
if cached
|
293
|
+
then return cached.members[name]
|
294
|
+
else return base.member(class, name)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
--------------------------------------------------------------------------------
|
298
|
+
function members(class)
|
299
|
+
local cached = getclass(class)
|
300
|
+
if cached
|
301
|
+
then return pairs(cached.members)
|
302
|
+
else return base.members(class)
|
303
|
+
end
|
304
|
+
end
|
305
|
+
--------------------------------------------------------------------------------
|
306
|
+
function allmembers(class)
|
307
|
+
local cached = getclass(class)
|
308
|
+
if cached
|
309
|
+
then return pairs(cached.class)
|
310
|
+
else return base.members(class)
|
311
|
+
end
|
312
|
+
end
|