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,613 @@
|
|
1
|
+
--- Python-style list class.
|
2
|
+
--
|
3
|
+
-- **Please Note**: methods that change the list will return the list.
|
4
|
+
-- This is to allow for method chaining, but please note that `ls = ls:sort()`
|
5
|
+
-- does not mean that a new copy of the list is made. In-place (mutable) methods
|
6
|
+
-- are marked as returning 'the list' in this documentation.
|
7
|
+
--
|
8
|
+
-- See the Guide for further @{02-arrays.md.Python_style_Lists|discussion}
|
9
|
+
--
|
10
|
+
-- See <a href="http://www.python.org/doc/current/tut/tut.html">http://www.python.org/doc/current/tut/tut.html</a>, section 5.1
|
11
|
+
--
|
12
|
+
-- **Note**: The comments before some of the functions are from the Python docs
|
13
|
+
-- and contain Python code.
|
14
|
+
--
|
15
|
+
-- Written for Lua version Nick Trout 4.0; Redone for Lua 5.1, Steve Donovan.
|
16
|
+
--
|
17
|
+
-- Dependencies: `pl.utils`, `pl.tablex`
|
18
|
+
-- @module pl.List
|
19
|
+
-- @pragma nostrip
|
20
|
+
|
21
|
+
local tinsert,tremove,concat,tsort = table.insert,table.remove,table.concat,table.sort
|
22
|
+
local setmetatable, getmetatable,type,tostring,assert,string,next = setmetatable,getmetatable,type,tostring,assert,string,next
|
23
|
+
local write = io.write
|
24
|
+
local tablex = require 'pl.tablex'
|
25
|
+
local filter,imap,imap2,reduce,transform,tremovevalues = tablex.filter,tablex.imap,tablex.imap2,tablex.reduce,tablex.transform,tablex.removevalues
|
26
|
+
local tablex = tablex
|
27
|
+
local tsub = tablex.sub
|
28
|
+
local utils = require 'pl.utils'
|
29
|
+
local function_arg = utils.function_arg
|
30
|
+
local is_type = utils.is_type
|
31
|
+
local split = utils.split
|
32
|
+
local assert_arg = utils.assert_arg
|
33
|
+
local normalize_slice = tablex._normalize_slice
|
34
|
+
|
35
|
+
--[[
|
36
|
+
module ('pl.List',utils._module)
|
37
|
+
]]
|
38
|
+
|
39
|
+
local Multimap = utils.stdmt.MultiMap
|
40
|
+
-- metatable for our list objects
|
41
|
+
local List = utils.stdmt.List
|
42
|
+
List.__index = List
|
43
|
+
List._class = List
|
44
|
+
|
45
|
+
local iter
|
46
|
+
|
47
|
+
-- we give the metatable its own metatable so that we can call it like a function!
|
48
|
+
setmetatable(List,{
|
49
|
+
__call = function (tbl,arg)
|
50
|
+
return List.new(arg)
|
51
|
+
end,
|
52
|
+
})
|
53
|
+
|
54
|
+
local function makelist (t,obj)
|
55
|
+
local klass = List
|
56
|
+
if obj then
|
57
|
+
klass = getmetatable(obj)
|
58
|
+
end
|
59
|
+
return setmetatable(t,klass)
|
60
|
+
end
|
61
|
+
|
62
|
+
local function is_list(t)
|
63
|
+
return getmetatable(t) == List
|
64
|
+
end
|
65
|
+
|
66
|
+
local function simple_table(t)
|
67
|
+
return type(t) == 'table' and not is_list(t) and #t > 0
|
68
|
+
end
|
69
|
+
|
70
|
+
function List:_init (src)
|
71
|
+
if src then
|
72
|
+
for v in iter(src) do
|
73
|
+
tinsert(self,v)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
--- Create a new list. Can optionally pass a table;
|
79
|
+
-- passing another instance of List will cause a copy to be created
|
80
|
+
-- we pass anything which isn't a simple table to iterate() to work out
|
81
|
+
-- an appropriate iterator @see List.iterate
|
82
|
+
-- @param t An optional list-like table
|
83
|
+
-- @return a new List
|
84
|
+
-- @usage ls = List(); ls = List {1,2,3,4}
|
85
|
+
function List.new(t)
|
86
|
+
local ls
|
87
|
+
if not simple_table(t) then
|
88
|
+
ls = {}
|
89
|
+
List._init(ls,t)
|
90
|
+
else
|
91
|
+
ls = t
|
92
|
+
end
|
93
|
+
makelist(ls)
|
94
|
+
return ls
|
95
|
+
end
|
96
|
+
|
97
|
+
function List:clone()
|
98
|
+
local ls = makelist({},self)
|
99
|
+
List._init(ls,self)
|
100
|
+
return ls
|
101
|
+
end
|
102
|
+
|
103
|
+
function List.default_map_with(T)
|
104
|
+
return function(self,name)
|
105
|
+
local f = T[name]
|
106
|
+
if f then
|
107
|
+
return function(self,...)
|
108
|
+
return self:map(f,...)
|
109
|
+
end
|
110
|
+
else
|
111
|
+
error("method not found: "..name,2)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
---Add an item to the end of the list.
|
118
|
+
-- @param i An item
|
119
|
+
-- @return the list
|
120
|
+
function List:append(i)
|
121
|
+
tinsert(self,i)
|
122
|
+
return self
|
123
|
+
end
|
124
|
+
|
125
|
+
List.push = tinsert
|
126
|
+
|
127
|
+
--- Extend the list by appending all the items in the given list.
|
128
|
+
-- equivalent to 'a[len(a):] = L'.
|
129
|
+
-- @param L Another List
|
130
|
+
-- @return the list
|
131
|
+
function List:extend(L)
|
132
|
+
assert_arg(1,L,'table')
|
133
|
+
for i = 1,#L do tinsert(self,L[i]) end
|
134
|
+
return self
|
135
|
+
end
|
136
|
+
|
137
|
+
--- Insert an item at a given position. i is the index of the
|
138
|
+
-- element before which to insert.
|
139
|
+
-- @param i index of element before whichh to insert
|
140
|
+
-- @param x A data item
|
141
|
+
-- @return the list
|
142
|
+
function List:insert(i, x)
|
143
|
+
assert_arg(1,i,'number')
|
144
|
+
tinsert(self,i,x)
|
145
|
+
return self
|
146
|
+
end
|
147
|
+
|
148
|
+
--- Insert an item at the begining of the list.
|
149
|
+
-- @param x a data item
|
150
|
+
-- @return the list
|
151
|
+
function List:put (x)
|
152
|
+
return self:insert(1,x)
|
153
|
+
end
|
154
|
+
|
155
|
+
--- Remove an element given its index.
|
156
|
+
-- (equivalent of Python's del s[i])
|
157
|
+
-- @param i the index
|
158
|
+
-- @return the list
|
159
|
+
function List:remove (i)
|
160
|
+
assert_arg(1,i,'number')
|
161
|
+
tremove(self,i)
|
162
|
+
return self
|
163
|
+
end
|
164
|
+
|
165
|
+
--- Remove the first item from the list whose value is given.
|
166
|
+
-- (This is called 'remove' in Python; renamed to avoid confusion
|
167
|
+
-- with table.remove)
|
168
|
+
-- Return nil if there is no such item.
|
169
|
+
-- @param x A data value
|
170
|
+
-- @return the list
|
171
|
+
function List:remove_value(x)
|
172
|
+
for i=1,#self do
|
173
|
+
if self[i]==x then tremove(self,i) return self end
|
174
|
+
end
|
175
|
+
return self
|
176
|
+
end
|
177
|
+
|
178
|
+
--- Remove the item at the given position in the list, and return it.
|
179
|
+
-- If no index is specified, a:pop() returns the last item in the list.
|
180
|
+
-- The item is also removed from the list.
|
181
|
+
-- @param i An index
|
182
|
+
-- @return the item
|
183
|
+
function List:pop(i)
|
184
|
+
if not i then i = #self end
|
185
|
+
assert_arg(1,i,'number')
|
186
|
+
return tremove(self,i)
|
187
|
+
end
|
188
|
+
|
189
|
+
List.get = List.pop
|
190
|
+
|
191
|
+
--- Return the index in the list of the first item whose value is given.
|
192
|
+
-- Return nil if there is no such item.
|
193
|
+
-- @class function
|
194
|
+
-- @name List:index
|
195
|
+
-- @param x A data value
|
196
|
+
-- @param idx where to start search (default 1)
|
197
|
+
-- @return the index, or nil if not found.
|
198
|
+
|
199
|
+
local tfind = tablex.find
|
200
|
+
List.index = tfind
|
201
|
+
|
202
|
+
--- does this list contain the value?.
|
203
|
+
-- @param x A data value
|
204
|
+
-- @return true or false
|
205
|
+
function List:contains(x)
|
206
|
+
return tfind(self,x) and true or false
|
207
|
+
end
|
208
|
+
|
209
|
+
--- Return the number of times value appears in the list.
|
210
|
+
-- @param x A data value
|
211
|
+
-- @return number of times x appears
|
212
|
+
function List:count(x)
|
213
|
+
local cnt=0
|
214
|
+
for i=1,#self do
|
215
|
+
if self[i]==x then cnt=cnt+1 end
|
216
|
+
end
|
217
|
+
return cnt
|
218
|
+
end
|
219
|
+
|
220
|
+
--- Sort the items of the list, in place.
|
221
|
+
-- @param cmp an optional comparison function, default '<'
|
222
|
+
-- @return the list
|
223
|
+
function List:sort(cmp)
|
224
|
+
if cmp then cmp = function_arg(1,cmp) end
|
225
|
+
tsort(self,cmp)
|
226
|
+
return self
|
227
|
+
end
|
228
|
+
|
229
|
+
--- return a sorted copy of this list.
|
230
|
+
-- @param cmp an optional comparison function, default '<'
|
231
|
+
-- @return a new list
|
232
|
+
function List:sorted(cmp)
|
233
|
+
return List(self):sort(cmp)
|
234
|
+
end
|
235
|
+
|
236
|
+
--- Reverse the elements of the list, in place.
|
237
|
+
-- @return the list
|
238
|
+
function List:reverse()
|
239
|
+
local t = self
|
240
|
+
local n = #t
|
241
|
+
local n2 = n/2
|
242
|
+
for i = 1,n2 do
|
243
|
+
local k = n-i+1
|
244
|
+
t[i],t[k] = t[k],t[i]
|
245
|
+
end
|
246
|
+
return self
|
247
|
+
end
|
248
|
+
|
249
|
+
--- return the minimum and the maximum value of the list.
|
250
|
+
-- @return minimum value
|
251
|
+
-- @return maximum value
|
252
|
+
function List:minmax()
|
253
|
+
local vmin,vmax = 1e70,-1e70
|
254
|
+
for i = 1,#self do
|
255
|
+
local v = self[i]
|
256
|
+
if v < vmin then vmin = v end
|
257
|
+
if v > vmax then vmax = v end
|
258
|
+
end
|
259
|
+
return vmin,vmax
|
260
|
+
end
|
261
|
+
|
262
|
+
--- Emulate list slicing. like 'list[first:last]' in Python.
|
263
|
+
-- If first or last are negative then they are relative to the end of the list
|
264
|
+
-- eg. slice(-2) gives last 2 entries in a list, and
|
265
|
+
-- slice(-4,-2) gives from -4th to -2nd
|
266
|
+
-- @param first An index
|
267
|
+
-- @param last An index
|
268
|
+
-- @return a new List
|
269
|
+
function List:slice(first,last)
|
270
|
+
return tsub(self,first,last)
|
271
|
+
end
|
272
|
+
|
273
|
+
--- empty the list.
|
274
|
+
-- @return the list
|
275
|
+
function List:clear()
|
276
|
+
for i=1,#self do tremove(self) end
|
277
|
+
return self
|
278
|
+
end
|
279
|
+
|
280
|
+
local eps = 1.0e-10
|
281
|
+
|
282
|
+
--- Emulate Python's range(x) function.
|
283
|
+
-- Include it in List table for tidiness
|
284
|
+
-- @param start A number
|
285
|
+
-- @param finish A number greater than start; if absent,
|
286
|
+
-- then start is 1 and finish is start
|
287
|
+
-- @param incr an optional increment (may be less than 1)
|
288
|
+
-- @return a List from start .. finish
|
289
|
+
-- @usage List.range(0,3) == List{0,1,2,3}
|
290
|
+
-- @usage List.range(4) = List{1,2,3,4}
|
291
|
+
-- @usage List.range(5,1,-1) == List{5,4,3,2,1}
|
292
|
+
function List.range(start,finish,incr)
|
293
|
+
if not finish then
|
294
|
+
finish = start
|
295
|
+
start = 1
|
296
|
+
end
|
297
|
+
if incr then
|
298
|
+
assert_arg(3,incr,'number')
|
299
|
+
if not utils.is_integer(incr) then finish = finish + eps end
|
300
|
+
else
|
301
|
+
incr = 1
|
302
|
+
end
|
303
|
+
assert_arg(1,start,'number')
|
304
|
+
assert_arg(2,finish,'number')
|
305
|
+
local t = List.new()
|
306
|
+
for i=start,finish,incr do tinsert(t,i) end
|
307
|
+
return t
|
308
|
+
end
|
309
|
+
|
310
|
+
--- list:len() is the same as #list.
|
311
|
+
function List:len()
|
312
|
+
return #self
|
313
|
+
end
|
314
|
+
|
315
|
+
-- Extended operations --
|
316
|
+
|
317
|
+
--- Remove a subrange of elements.
|
318
|
+
-- equivalent to 'del s[i1:i2]' in Python.
|
319
|
+
-- @param i1 start of range
|
320
|
+
-- @param i2 end of range
|
321
|
+
-- @return the list
|
322
|
+
function List:chop(i1,i2)
|
323
|
+
return tremovevalues(self,i1,i2)
|
324
|
+
end
|
325
|
+
|
326
|
+
--- Insert a sublist into a list
|
327
|
+
-- equivalent to 's[idx:idx] = list' in Python
|
328
|
+
-- @param idx index
|
329
|
+
-- @param list list to insert
|
330
|
+
-- @return the list
|
331
|
+
-- @usage l = List{10,20}; l:splice(2,{21,22}); assert(l == List{10,21,22,20})
|
332
|
+
function List:splice(idx,list)
|
333
|
+
assert_arg(1,idx,'number')
|
334
|
+
idx = idx - 1
|
335
|
+
local i = 1
|
336
|
+
for v in iter(list) do
|
337
|
+
tinsert(self,i+idx,v)
|
338
|
+
i = i + 1
|
339
|
+
end
|
340
|
+
return self
|
341
|
+
end
|
342
|
+
|
343
|
+
--- general slice assignment s[i1:i2] = seq.
|
344
|
+
-- @param i1 start index
|
345
|
+
-- @param i2 end index
|
346
|
+
-- @param seq a list
|
347
|
+
-- @return the list
|
348
|
+
function List:slice_assign(i1,i2,seq)
|
349
|
+
assert_arg(1,i1,'number')
|
350
|
+
assert_arg(1,i2,'number')
|
351
|
+
i1,i2 = normalize_slice(self,i1,i2)
|
352
|
+
if i2 >= i1 then self:chop(i1,i2) end
|
353
|
+
self:splice(i1,seq)
|
354
|
+
return self
|
355
|
+
end
|
356
|
+
|
357
|
+
--- concatenation operator.
|
358
|
+
-- @param L another List
|
359
|
+
-- @return a new list consisting of the list with the elements of the new list appended
|
360
|
+
function List:__concat(L)
|
361
|
+
assert_arg(1,L,'table')
|
362
|
+
local ls = self:clone()
|
363
|
+
ls:extend(L)
|
364
|
+
return ls
|
365
|
+
end
|
366
|
+
|
367
|
+
--- equality operator ==. True iff all elements of two lists are equal.
|
368
|
+
-- @param L another List
|
369
|
+
-- @return true or false
|
370
|
+
function List:__eq(L)
|
371
|
+
if #self ~= #L then return false end
|
372
|
+
for i = 1,#self do
|
373
|
+
if self[i] ~= L[i] then return false end
|
374
|
+
end
|
375
|
+
return true
|
376
|
+
end
|
377
|
+
|
378
|
+
--- join the elements of a list using a delimiter. <br>
|
379
|
+
-- This method uses tostring on all elements.
|
380
|
+
-- @param delim a delimiter string, can be empty.
|
381
|
+
-- @return a string
|
382
|
+
function List:join (delim)
|
383
|
+
delim = delim or ''
|
384
|
+
assert_arg(1,delim,'string')
|
385
|
+
return concat(imap(tostring,self),delim)
|
386
|
+
end
|
387
|
+
|
388
|
+
--- join a list of strings. <br>
|
389
|
+
-- Uses table.concat directly.
|
390
|
+
-- @class function
|
391
|
+
-- @name List:concat
|
392
|
+
-- @param delim a delimiter
|
393
|
+
-- @return a string
|
394
|
+
List.concat = concat
|
395
|
+
|
396
|
+
local function tostring_q(val)
|
397
|
+
local s = tostring(val)
|
398
|
+
if type(val) == 'string' then
|
399
|
+
s = '"'..s..'"'
|
400
|
+
end
|
401
|
+
return s
|
402
|
+
end
|
403
|
+
|
404
|
+
--- how our list should be rendered as a string. Uses join().
|
405
|
+
-- @see List:join
|
406
|
+
function List:__tostring()
|
407
|
+
return '{'..self:join(',',tostring_q)..'}'
|
408
|
+
end
|
409
|
+
|
410
|
+
--[[
|
411
|
+
-- NOTE: this works, but is unreliable. If you leave the loop before finishing,
|
412
|
+
-- then the iterator is not reset.
|
413
|
+
--- can iterate over a list directly.
|
414
|
+
-- @usage for v in ls do print(v) end
|
415
|
+
function List:__call()
|
416
|
+
if not self.key then self.key = 1 end
|
417
|
+
local value = self[self.key]
|
418
|
+
self.key = self.key + 1
|
419
|
+
if not value then self.key = nil end
|
420
|
+
return value
|
421
|
+
end
|
422
|
+
--]]
|
423
|
+
|
424
|
+
--[[
|
425
|
+
function List.__call(t,v,i)
|
426
|
+
i = (i or 0) + 1
|
427
|
+
v = t[i]
|
428
|
+
if v then return i, v end
|
429
|
+
end
|
430
|
+
--]]
|
431
|
+
|
432
|
+
local MethodIter = {}
|
433
|
+
|
434
|
+
function MethodIter:__index (name)
|
435
|
+
return function(mm,...)
|
436
|
+
return self.list:foreachm(name,...)
|
437
|
+
end
|
438
|
+
end
|
439
|
+
|
440
|
+
--- call the function for each element of the list.
|
441
|
+
-- @param fun a function or callable object
|
442
|
+
-- @param ... optional values to pass to function
|
443
|
+
function List:foreach (fun,...)
|
444
|
+
if fun==nil then
|
445
|
+
return setmetatable({list=self},MethodIter)
|
446
|
+
end
|
447
|
+
fun = function_arg(1,fun)
|
448
|
+
for i = 1,#self do
|
449
|
+
fun(self[i],...)
|
450
|
+
end
|
451
|
+
end
|
452
|
+
|
453
|
+
function List:foreachm (name,...)
|
454
|
+
for i = 1,#self do
|
455
|
+
local obj = self[i]
|
456
|
+
local f = assert(obj[name],"method not found on object")
|
457
|
+
f(obj,...)
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
461
|
+
--- create a list of all elements which match a function.
|
462
|
+
-- @param fun a boolean function
|
463
|
+
-- @param arg optional argument to be passed as second argument of the predicate
|
464
|
+
-- @return a new filtered list.
|
465
|
+
function List:filter (fun,arg)
|
466
|
+
return makelist(filter(self,fun,arg),self)
|
467
|
+
end
|
468
|
+
|
469
|
+
--- split a string using a delimiter.
|
470
|
+
-- @param s the string
|
471
|
+
-- @param delim the delimiter (default spaces)
|
472
|
+
-- @return a List of strings
|
473
|
+
-- @see pl.utils.split
|
474
|
+
function List.split (s,delim)
|
475
|
+
assert_arg(1,s,'string')
|
476
|
+
return makelist(split(s,delim))
|
477
|
+
end
|
478
|
+
|
479
|
+
local MethodMapper = {}
|
480
|
+
|
481
|
+
function MethodMapper:__index (name)
|
482
|
+
return function(mm,...)
|
483
|
+
return self.list:mapm(name,...)
|
484
|
+
end
|
485
|
+
end
|
486
|
+
|
487
|
+
--- apply a function to all elements.
|
488
|
+
-- Any extra arguments will be passed to the function; if the function
|
489
|
+
-- is `nil` then `map` returns a mapper object that maps over a method
|
490
|
+
-- of the items
|
491
|
+
-- @param fun a function of at least one argument
|
492
|
+
-- @param ... arbitrary extra arguments.
|
493
|
+
-- @return a new list: {f(x) for x in self}
|
494
|
+
-- @usage List{'one','two'}:map(string.upper) == {'ONE','TWO'}
|
495
|
+
-- @usage List{'one','two'}:map():sub(1,2) == {'on','tw'}
|
496
|
+
-- @see pl.tablex.imap
|
497
|
+
function List:map (fun,...)
|
498
|
+
if fun==nil then
|
499
|
+
return setmetatable({list=self},MethodMapper)
|
500
|
+
end
|
501
|
+
return makelist(imap(fun,self,...),self)
|
502
|
+
end
|
503
|
+
|
504
|
+
--- apply a function to all elements, in-place.
|
505
|
+
-- Any extra arguments are passed to the function.
|
506
|
+
-- @param fun A function that takes at least one argument
|
507
|
+
-- @param ... arbitrary extra arguments.
|
508
|
+
-- @return the list.
|
509
|
+
function List:transform (fun,...)
|
510
|
+
transform(fun,self,...)
|
511
|
+
return self
|
512
|
+
end
|
513
|
+
|
514
|
+
--- apply a function to elements of two lists.
|
515
|
+
-- Any extra arguments will be passed to the function
|
516
|
+
-- @param fun a function of at least two arguments
|
517
|
+
-- @param ls another list
|
518
|
+
-- @param ... arbitrary extra arguments.
|
519
|
+
-- @return a new list: {f(x,y) for x in self, for x in arg1}
|
520
|
+
-- @see pl.tablex.imap2
|
521
|
+
function List:map2 (fun,ls,...)
|
522
|
+
return makelist(imap2(fun,self,ls,...),self)
|
523
|
+
end
|
524
|
+
|
525
|
+
--- apply a named method to all elements.
|
526
|
+
-- Any extra arguments will be passed to the method.
|
527
|
+
-- @param name name of method
|
528
|
+
-- @param ... extra arguments
|
529
|
+
-- @return a new list of the results
|
530
|
+
-- @see pl.seq.mapmethod
|
531
|
+
function List:mapm (name,...)
|
532
|
+
local res = {}
|
533
|
+
local t = self
|
534
|
+
for i = 1,#t do
|
535
|
+
local val = t[i]
|
536
|
+
local fn = val[name]
|
537
|
+
if not fn then error(type(val).." does not have method "..name,2) end
|
538
|
+
res[i] = fn(val,...)
|
539
|
+
end
|
540
|
+
return makelist(res,self)
|
541
|
+
end
|
542
|
+
|
543
|
+
--- 'reduce' a list using a binary function.
|
544
|
+
-- @param fun a function of two arguments
|
545
|
+
-- @return result of the function
|
546
|
+
-- @see pl.tablex.reduce
|
547
|
+
function List:reduce (fun)
|
548
|
+
return reduce(fun,self)
|
549
|
+
end
|
550
|
+
|
551
|
+
--- partition a list using a classifier function.
|
552
|
+
-- The function may return nil, but this will be converted to the string key '<nil>'.
|
553
|
+
-- @param fun a function of at least one argument
|
554
|
+
-- @param ... will also be passed to the function
|
555
|
+
-- @return a table where the keys are the returned values, and the values are Lists
|
556
|
+
-- of values where the function returned that key. It is given the type of Multimap.
|
557
|
+
-- @see pl.MultiMap
|
558
|
+
function List:partition (fun,...)
|
559
|
+
fun = function_arg(1,fun)
|
560
|
+
local res = {}
|
561
|
+
for i = 1,#self do
|
562
|
+
local val = self[i]
|
563
|
+
local klass = fun(val,...)
|
564
|
+
if klass == nil then klass = '<nil>' end
|
565
|
+
if not res[klass] then res[klass] = List() end
|
566
|
+
res[klass]:append(val)
|
567
|
+
end
|
568
|
+
return setmetatable(res,Multimap)
|
569
|
+
end
|
570
|
+
|
571
|
+
--- return an iterator over all values.
|
572
|
+
function List:iter ()
|
573
|
+
return iter(self)
|
574
|
+
end
|
575
|
+
|
576
|
+
--- Create an iterator over a seqence.
|
577
|
+
-- This captures the Python concept of 'sequence'.
|
578
|
+
-- For tables, iterates over all values with integer indices.
|
579
|
+
-- @param seq a sequence; a string (over characters), a table, a file object (over lines) or an iterator function
|
580
|
+
-- @usage for x in iterate {1,10,22,55} do io.write(x,',') end ==> 1,10,22,55
|
581
|
+
-- @usage for ch in iterate 'help' do do io.write(ch,' ') end ==> h e l p
|
582
|
+
function List.iterate(seq)
|
583
|
+
if type(seq) == 'string' then
|
584
|
+
local idx = 0
|
585
|
+
local n = #seq
|
586
|
+
local sub = string.sub
|
587
|
+
return function ()
|
588
|
+
idx = idx + 1
|
589
|
+
if idx > n then return nil
|
590
|
+
else
|
591
|
+
return sub(seq,idx,idx)
|
592
|
+
end
|
593
|
+
end
|
594
|
+
elseif type(seq) == 'table' then
|
595
|
+
local idx = 0
|
596
|
+
local n = #seq
|
597
|
+
return function()
|
598
|
+
idx = idx + 1
|
599
|
+
if idx > n then return nil
|
600
|
+
else
|
601
|
+
return seq[idx]
|
602
|
+
end
|
603
|
+
end
|
604
|
+
elseif type(seq) == 'function' then
|
605
|
+
return seq
|
606
|
+
elseif type(seq) == 'userdata' and io.type(seq) == 'file' then
|
607
|
+
return seq:lines()
|
608
|
+
end
|
609
|
+
end
|
610
|
+
iter = List.iterate
|
611
|
+
|
612
|
+
return List
|
613
|
+
|