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,398 @@
|
|
|
1
|
+
--- Path manipulation and file queries.
|
|
2
|
+
--
|
|
3
|
+
-- This is modelled after Python's os.path library (10.1); see @{04-paths.md|the Guide}.
|
|
4
|
+
--
|
|
5
|
+
-- Dependencies: `pl.utils`, `lfs`
|
|
6
|
+
-- @module pl.path
|
|
7
|
+
|
|
8
|
+
-- imports and locals
|
|
9
|
+
local _G = _G
|
|
10
|
+
local sub = string.sub
|
|
11
|
+
local getenv = os.getenv
|
|
12
|
+
local tmpnam = os.tmpname
|
|
13
|
+
local attributes, currentdir, link_attrib
|
|
14
|
+
local package = package
|
|
15
|
+
local io = io
|
|
16
|
+
local append = table.insert
|
|
17
|
+
local ipairs = ipairs
|
|
18
|
+
local utils = require 'pl.utils'
|
|
19
|
+
local assert_arg,assert_string,raise = utils.assert_arg,utils.assert_string,utils.raise
|
|
20
|
+
|
|
21
|
+
local attrib
|
|
22
|
+
local path = {}
|
|
23
|
+
|
|
24
|
+
local res,lfs = _G.pcall(_G.require,'lfs')
|
|
25
|
+
if res then
|
|
26
|
+
attributes = lfs.attributes
|
|
27
|
+
currentdir = lfs.currentdir
|
|
28
|
+
link_attrib = lfs.symlinkattributes
|
|
29
|
+
else
|
|
30
|
+
error("pl.path requires LuaFileSystem")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
attrib = attributes
|
|
34
|
+
path.attrib = attrib
|
|
35
|
+
path.link_attrib = link_attrib
|
|
36
|
+
path.dir = lfs.dir
|
|
37
|
+
path.mkdir = lfs.mkdir
|
|
38
|
+
path.rmdir = lfs.rmdir
|
|
39
|
+
path.chdir = lfs.chdir
|
|
40
|
+
|
|
41
|
+
--- is this a directory?
|
|
42
|
+
-- @param P A file path
|
|
43
|
+
function path.isdir(P)
|
|
44
|
+
assert_string(1,P)
|
|
45
|
+
if P:match("\\$") then
|
|
46
|
+
P = P:sub(1,-2)
|
|
47
|
+
end
|
|
48
|
+
return attrib(P,'mode') == 'directory'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
--- is this a file?.
|
|
52
|
+
-- @param P A file path
|
|
53
|
+
function path.isfile(P)
|
|
54
|
+
assert_string(1,P)
|
|
55
|
+
return attrib(P,'mode') == 'file'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
-- is this a symbolic link?
|
|
59
|
+
-- @param P A file path
|
|
60
|
+
function path.islink(P)
|
|
61
|
+
assert_string(1,P)
|
|
62
|
+
if link_attrib then
|
|
63
|
+
return link_attrib(P,'mode')=='link'
|
|
64
|
+
else
|
|
65
|
+
return false
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
--- return size of a file.
|
|
70
|
+
-- @param P A file path
|
|
71
|
+
function path.getsize(P)
|
|
72
|
+
assert_string(1,P)
|
|
73
|
+
return attrib(P,'size')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
--- does a path exist?.
|
|
77
|
+
-- @param P A file path
|
|
78
|
+
-- @return the file path if it exists, nil otherwise
|
|
79
|
+
function path.exists(P)
|
|
80
|
+
assert_string(1,P)
|
|
81
|
+
return attrib(P,'mode') ~= nil and P
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
--- Return the time of last access as the number of seconds since the epoch.
|
|
85
|
+
-- @param P A file path
|
|
86
|
+
function path.getatime(P)
|
|
87
|
+
assert_string(1,P)
|
|
88
|
+
return attrib(P,'access')
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
--- Return the time of last modification
|
|
92
|
+
-- @param P A file path
|
|
93
|
+
function path.getmtime(P)
|
|
94
|
+
return attrib(P,'modification')
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
---Return the system's ctime.
|
|
98
|
+
-- @param P A file path
|
|
99
|
+
function path.getctime(P)
|
|
100
|
+
assert_string(1,P)
|
|
101
|
+
return path.attrib(P,'change')
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
local function at(s,i)
|
|
106
|
+
return sub(s,i,i)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
path.is_windows = utils.dir_separator == '\\'
|
|
110
|
+
|
|
111
|
+
local other_sep
|
|
112
|
+
-- !constant sep is the directory separator for this platform.
|
|
113
|
+
if path.is_windows then
|
|
114
|
+
path.sep = '\\'; other_sep = '/'
|
|
115
|
+
path.dirsep = ';'
|
|
116
|
+
else
|
|
117
|
+
path.sep = '/'
|
|
118
|
+
path.dirsep = ':'
|
|
119
|
+
end
|
|
120
|
+
local sep,dirsep = path.sep,path.dirsep
|
|
121
|
+
|
|
122
|
+
--- are we running Windows?
|
|
123
|
+
-- @class field
|
|
124
|
+
-- @name path.is_windows
|
|
125
|
+
|
|
126
|
+
--- path separator for this platform.
|
|
127
|
+
-- @class field
|
|
128
|
+
-- @name path.sep
|
|
129
|
+
|
|
130
|
+
--- separator for PATH for this platform
|
|
131
|
+
-- @class field
|
|
132
|
+
-- @name path.dirsep
|
|
133
|
+
|
|
134
|
+
--- given a path, return the directory part and a file part.
|
|
135
|
+
-- if there's no directory part, the first value will be empty
|
|
136
|
+
-- @param P A file path
|
|
137
|
+
function path.splitpath(P)
|
|
138
|
+
assert_string(1,P)
|
|
139
|
+
local i = #P
|
|
140
|
+
local ch = at(P,i)
|
|
141
|
+
while i > 0 and ch ~= sep and ch ~= other_sep do
|
|
142
|
+
i = i - 1
|
|
143
|
+
ch = at(P,i)
|
|
144
|
+
end
|
|
145
|
+
if i == 0 then
|
|
146
|
+
return '',P
|
|
147
|
+
else
|
|
148
|
+
return sub(P,1,i-1), sub(P,i+1)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
--- return an absolute path.
|
|
153
|
+
-- @param P A file path
|
|
154
|
+
-- @param pwd optional start path to use (default is current dir)
|
|
155
|
+
function path.abspath(P,pwd)
|
|
156
|
+
assert_string(1,P)
|
|
157
|
+
if pwd then assert_string(2,pwd) end
|
|
158
|
+
local use_pwd = pwd ~= nil
|
|
159
|
+
if not use_pwd and not currentdir then return P end
|
|
160
|
+
P = P:gsub('[\\/]$','')
|
|
161
|
+
pwd = pwd or currentdir()
|
|
162
|
+
if not path.isabs(P) then
|
|
163
|
+
P = path.join(pwd,P)
|
|
164
|
+
elseif path.is_windows and not use_pwd and at(P,2) ~= ':' and at(P,2) ~= '\\' then
|
|
165
|
+
P = pwd:sub(1,2)..P -- attach current drive to path like '\\fred.txt'
|
|
166
|
+
end
|
|
167
|
+
return path.normpath(P)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
--- given a path, return the root part and the extension part.
|
|
171
|
+
-- if there's no extension part, the second value will be empty
|
|
172
|
+
-- @param P A file path
|
|
173
|
+
function path.splitext(P)
|
|
174
|
+
assert_string(1,P)
|
|
175
|
+
local i = #P
|
|
176
|
+
local ch = at(P,i)
|
|
177
|
+
while i > 0 and ch ~= '.' do
|
|
178
|
+
if ch == sep or ch == other_sep then
|
|
179
|
+
return P,''
|
|
180
|
+
end
|
|
181
|
+
i = i - 1
|
|
182
|
+
ch = at(P,i)
|
|
183
|
+
end
|
|
184
|
+
if i == 0 then
|
|
185
|
+
return P,''
|
|
186
|
+
else
|
|
187
|
+
return sub(P,1,i-1),sub(P,i)
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
--- return the directory part of a path
|
|
192
|
+
-- @param P A file path
|
|
193
|
+
function path.dirname(P)
|
|
194
|
+
assert_string(1,P)
|
|
195
|
+
local p1,p2 = path.splitpath(P)
|
|
196
|
+
return p1
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
--- return the file part of a path
|
|
200
|
+
-- @param P A file path
|
|
201
|
+
function path.basename(P)
|
|
202
|
+
assert_string(1,P)
|
|
203
|
+
local p1,p2 = path.splitpath(P)
|
|
204
|
+
return p2
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
--- get the extension part of a path.
|
|
208
|
+
-- @param P A file path
|
|
209
|
+
function path.extension(P)
|
|
210
|
+
assert_string(1,P)
|
|
211
|
+
local p1,p2 = path.splitext(P)
|
|
212
|
+
return p2
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
--- is this an absolute path?.
|
|
216
|
+
-- @param P A file path
|
|
217
|
+
function path.isabs(P)
|
|
218
|
+
assert_string(1,P)
|
|
219
|
+
if path.is_windows then
|
|
220
|
+
return at(P,1) == '/' or at(P,1)=='\\' or at(P,2)==':'
|
|
221
|
+
else
|
|
222
|
+
return at(P,1) == '/'
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
--- return the path resulting from combining the individual paths.
|
|
227
|
+
-- if the second path is absolute, we return that path.
|
|
228
|
+
-- @param p1 A file path
|
|
229
|
+
-- @param p2 A file path
|
|
230
|
+
-- @param ... more file paths
|
|
231
|
+
function path.join(p1,p2,...)
|
|
232
|
+
assert_string(1,p1)
|
|
233
|
+
assert_string(2,p2)
|
|
234
|
+
if select('#',...) > 0 then
|
|
235
|
+
local p = path.join(p1,p2)
|
|
236
|
+
local args = {...}
|
|
237
|
+
for i = 1,#args do
|
|
238
|
+
assert_string(i,args[i])
|
|
239
|
+
p = path.join(p,args[i])
|
|
240
|
+
end
|
|
241
|
+
return p
|
|
242
|
+
end
|
|
243
|
+
if path.isabs(p2) then return p2 end
|
|
244
|
+
local endc = at(p1,#p1)
|
|
245
|
+
if endc ~= path.sep and endc ~= other_sep then
|
|
246
|
+
p1 = p1..path.sep
|
|
247
|
+
end
|
|
248
|
+
return p1..p2
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
--- normalize the case of a pathname. On Unix, this returns the path unchanged;
|
|
252
|
+
-- for Windows, it converts the path to lowercase, and it also converts forward slashes
|
|
253
|
+
-- to backward slashes.
|
|
254
|
+
-- @param P A file path
|
|
255
|
+
function path.normcase(P)
|
|
256
|
+
assert_string(1,P)
|
|
257
|
+
if path.is_windows then
|
|
258
|
+
return (P:lower():gsub('/','\\'))
|
|
259
|
+
else
|
|
260
|
+
return P
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
local np_gen1,np_gen2 = '[^SEP]+SEP%.%.SEP?','SEP+%.?SEP'
|
|
265
|
+
local np_pat1, np_pat2
|
|
266
|
+
|
|
267
|
+
--- normalize a path name.
|
|
268
|
+
-- A//B, A/./B and A/foo/../B all become A/B.
|
|
269
|
+
-- @param P a file path
|
|
270
|
+
function path.normpath(P)
|
|
271
|
+
assert_string(1,P)
|
|
272
|
+
if path.is_windows then
|
|
273
|
+
if P:match '^\\\\' then -- UNC
|
|
274
|
+
return '\\\\'..path.normpath(P:sub(3))
|
|
275
|
+
end
|
|
276
|
+
P = P:gsub('/','\\')
|
|
277
|
+
end
|
|
278
|
+
if not np_pat1 then
|
|
279
|
+
np_pat1 = np_gen1:gsub('SEP',sep)
|
|
280
|
+
np_pat2 = np_gen2:gsub('SEP',sep)
|
|
281
|
+
end
|
|
282
|
+
local k
|
|
283
|
+
repeat -- /./ -> /
|
|
284
|
+
P,k = P:gsub(np_pat2,sep)
|
|
285
|
+
until k == 0
|
|
286
|
+
repeat -- A/../ -> (empty)
|
|
287
|
+
P,k = P:gsub(np_pat1,'')
|
|
288
|
+
until k == 0
|
|
289
|
+
if P == '' then P = '.' end
|
|
290
|
+
return P
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
local function ATS (P)
|
|
294
|
+
if at(P,#P) ~= path.sep then
|
|
295
|
+
P = P..path.sep
|
|
296
|
+
end
|
|
297
|
+
return path.normcase(P)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
--- relative path from current directory or optional start point
|
|
301
|
+
-- @param P a path
|
|
302
|
+
-- @param start optional start point (default current directory)
|
|
303
|
+
function path.relpath (P,start)
|
|
304
|
+
assert_string(1,P)
|
|
305
|
+
if start then assert_string(2,start) end
|
|
306
|
+
local split,normcase,min,append = utils.split, path.normcase, math.min, table.insert
|
|
307
|
+
P = normcase(path.abspath(P,start))
|
|
308
|
+
start = start or currentdir()
|
|
309
|
+
start = normcase(start)
|
|
310
|
+
local startl, Pl = split(start,sep), split(P,sep)
|
|
311
|
+
local n = min(#startl,#Pl)
|
|
312
|
+
local k = n+1 -- default value if this loop doesn't bail out!
|
|
313
|
+
for i = 1,n do
|
|
314
|
+
if startl[i] ~= Pl[i] then
|
|
315
|
+
k = i
|
|
316
|
+
break
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
local rell = {}
|
|
320
|
+
for i = 1, #startl-k+1 do rell[i] = '..' end
|
|
321
|
+
if k <= #Pl then
|
|
322
|
+
for i = k,#Pl do append(rell,Pl[i]) end
|
|
323
|
+
end
|
|
324
|
+
return table.concat(rell,sep)
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
--- Replace a starting '~' with the user's home directory.
|
|
329
|
+
-- In windows, if HOME isn't set, then USERPROFILE is used in preference to
|
|
330
|
+
-- HOMEDRIVE HOMEPATH. This is guaranteed to be writeable on all versions of Windows.
|
|
331
|
+
-- @param P A file path
|
|
332
|
+
function path.expanduser(P)
|
|
333
|
+
assert_string(1,P)
|
|
334
|
+
if at(P,1) == '~' then
|
|
335
|
+
local home = getenv('HOME')
|
|
336
|
+
if not home then -- has to be Windows
|
|
337
|
+
home = getenv 'USERPROFILE' or (getenv 'HOMEDRIVE' .. getenv 'HOMEPATH')
|
|
338
|
+
end
|
|
339
|
+
return home..sub(P,2)
|
|
340
|
+
else
|
|
341
|
+
return P
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
---Return a suitable full path to a new temporary file name.
|
|
347
|
+
-- unlike os.tmpnam(), it always gives you a writeable path (uses %TMP% on Windows)
|
|
348
|
+
function path.tmpname ()
|
|
349
|
+
local res = tmpnam()
|
|
350
|
+
if path.is_windows then res = getenv('TMP')..res end
|
|
351
|
+
return res
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
--- return the largest common prefix path of two paths.
|
|
355
|
+
-- @param path1 a file path
|
|
356
|
+
-- @param path2 a file path
|
|
357
|
+
function path.common_prefix (path1,path2)
|
|
358
|
+
assert_string(1,path1)
|
|
359
|
+
assert_string(2,path2)
|
|
360
|
+
path1, path2 = path.normcase(path1), path.normcase(path2)
|
|
361
|
+
-- get them in order!
|
|
362
|
+
if #path1 > #path2 then path2,path1 = path1,path2 end
|
|
363
|
+
for i = 1,#path1 do
|
|
364
|
+
local c1 = at(path1,i)
|
|
365
|
+
if c1 ~= at(path2,i) then
|
|
366
|
+
local cp = path1:sub(1,i-1)
|
|
367
|
+
if at(path1,i-1) ~= sep then
|
|
368
|
+
cp = path.dirname(cp)
|
|
369
|
+
end
|
|
370
|
+
return cp
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
if at(path2,#path1+1) ~= sep then path1 = path.dirname(path1) end
|
|
374
|
+
return path1
|
|
375
|
+
--return ''
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
--- return the full path where a particular Lua module would be found.
|
|
380
|
+
-- Both package.path and package.cpath is searched, so the result may
|
|
381
|
+
-- either be a Lua file or a shared libarary.
|
|
382
|
+
-- @param mod name of the module
|
|
383
|
+
-- @return on success: path of module, lua or binary
|
|
384
|
+
-- @return on error: nil,error string
|
|
385
|
+
function path.package_path(mod)
|
|
386
|
+
assert_string(1,mod)
|
|
387
|
+
local res
|
|
388
|
+
mod = mod:gsub('%.',sep)
|
|
389
|
+
res = package.searchpath(mod,package.path)
|
|
390
|
+
if res then return res,true end
|
|
391
|
+
res = package.searchpath(mod,package.cpath)
|
|
392
|
+
if res then return res,false end
|
|
393
|
+
return raise 'cannot find module on path'
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
---- finis -----
|
|
398
|
+
return path
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
--- Permutation operations.
|
|
2
|
+
--
|
|
3
|
+
-- Dependencies: `pl.utils`, `pl.tablex`
|
|
4
|
+
-- @module pl.permute
|
|
5
|
+
local tablex = require 'pl.tablex'
|
|
6
|
+
local utils = require 'pl.utils'
|
|
7
|
+
local copy = tablex.deepcopy
|
|
8
|
+
local append = table.insert
|
|
9
|
+
local coroutine = coroutine
|
|
10
|
+
local resume = coroutine.resume
|
|
11
|
+
local assert_arg = utils.assert_arg
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
local permute = {}
|
|
15
|
+
|
|
16
|
+
-- PiL, 9.3
|
|
17
|
+
|
|
18
|
+
local permgen
|
|
19
|
+
permgen = function (a, n, fn)
|
|
20
|
+
if n == 0 then
|
|
21
|
+
fn(a)
|
|
22
|
+
else
|
|
23
|
+
for i=1,n do
|
|
24
|
+
-- put i-th element as the last one
|
|
25
|
+
a[n], a[i] = a[i], a[n]
|
|
26
|
+
|
|
27
|
+
-- generate all permutations of the other elements
|
|
28
|
+
permgen(a, n - 1, fn)
|
|
29
|
+
|
|
30
|
+
-- restore i-th element
|
|
31
|
+
a[n], a[i] = a[i], a[n]
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
--- an iterator over all permutations of the elements of a list.
|
|
38
|
+
-- Please note that the same list is returned each time, so do not keep references!
|
|
39
|
+
-- @param a list-like table
|
|
40
|
+
-- @return an iterator which provides the next permutation as a list
|
|
41
|
+
function permute.iter (a)
|
|
42
|
+
assert_arg(1,a,'table')
|
|
43
|
+
local n = #a
|
|
44
|
+
local co = coroutine.create(function () permgen(a, n, coroutine.yield) end)
|
|
45
|
+
return function () -- iterator
|
|
46
|
+
local code, res = resume(co)
|
|
47
|
+
return res
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
--- construct a table containing all the permutations of a list.
|
|
52
|
+
-- @param a list-like table
|
|
53
|
+
-- @return a table of tables
|
|
54
|
+
-- @usage permute.table {1,2,3} --> {{2,3,1},{3,2,1},{3,1,2},{1,3,2},{2,1,3},{1,2,3}}
|
|
55
|
+
function permute.table (a)
|
|
56
|
+
assert_arg(1,a,'table')
|
|
57
|
+
local res = {}
|
|
58
|
+
local n = #a
|
|
59
|
+
permgen(a,n,function(t) append(res,copy(t)) end)
|
|
60
|
+
return res
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
return permute
|