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,103 @@
|
|
|
1
|
+
--- A template preprocessor.
|
|
2
|
+
-- Originally by [Ricki Lake](http://lua-users.org/wiki/SlightlyLessSimpleLuaPreprocessor)
|
|
3
|
+
--
|
|
4
|
+
-- There are two rules:
|
|
5
|
+
--
|
|
6
|
+
-- * lines starting with # are Lua
|
|
7
|
+
-- * otherwise, `$(expr)` is the result of evaluating `expr`
|
|
8
|
+
--
|
|
9
|
+
-- Example:
|
|
10
|
+
--
|
|
11
|
+
-- # for i = 1,3 do
|
|
12
|
+
-- $(i) Hello, Word!
|
|
13
|
+
-- # end
|
|
14
|
+
-- ===>
|
|
15
|
+
-- 1 Hello, Word!
|
|
16
|
+
-- 2 Hello, Word!
|
|
17
|
+
-- 3 Hello, Word!
|
|
18
|
+
--
|
|
19
|
+
-- Other escape characters can be used, when the defaults conflict
|
|
20
|
+
-- with the output language.
|
|
21
|
+
--
|
|
22
|
+
-- > for _,n in pairs{'one','two','three'} do
|
|
23
|
+
-- static int l_${n} (luaState *state);
|
|
24
|
+
-- > end
|
|
25
|
+
--
|
|
26
|
+
-- See @{03-strings.md.Another_Style_of_Template|the Guide}.
|
|
27
|
+
--
|
|
28
|
+
-- Dependencies: `pl.utils`
|
|
29
|
+
-- @module pl.template
|
|
30
|
+
|
|
31
|
+
local utils = require 'pl.utils'
|
|
32
|
+
local append,format = table.insert,string.format
|
|
33
|
+
|
|
34
|
+
local function parseHashLines(chunk,brackets,esc)
|
|
35
|
+
local exec_pat = "()$(%b"..brackets..")()"
|
|
36
|
+
|
|
37
|
+
local function parseDollarParen(pieces, chunk, s, e)
|
|
38
|
+
local s = 1
|
|
39
|
+
for term, executed, e in chunk:gmatch (exec_pat) do
|
|
40
|
+
executed = '('..executed:sub(2,-2)..')'
|
|
41
|
+
append(pieces,
|
|
42
|
+
format("%q..(%s or '')..",chunk:sub(s, term - 1), executed))
|
|
43
|
+
s = e
|
|
44
|
+
end
|
|
45
|
+
append(pieces, format("%q", chunk:sub(s)))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
local esc_pat = esc.."+([^\n]*\n?)"
|
|
49
|
+
local esc_pat1, esc_pat2 = "^"..esc_pat, "\n"..esc_pat
|
|
50
|
+
local pieces, s = {"return function(_put) ", n = 1}, 1
|
|
51
|
+
while true do
|
|
52
|
+
local ss, e, lua = chunk:find (esc_pat1, s)
|
|
53
|
+
if not e then
|
|
54
|
+
ss, e, lua = chunk:find(esc_pat2, s)
|
|
55
|
+
append(pieces, "_put(")
|
|
56
|
+
parseDollarParen(pieces, chunk:sub(s, ss))
|
|
57
|
+
append(pieces, ")")
|
|
58
|
+
if not e then break end
|
|
59
|
+
end
|
|
60
|
+
append(pieces, lua)
|
|
61
|
+
s = e + 1
|
|
62
|
+
end
|
|
63
|
+
append(pieces, " end")
|
|
64
|
+
return table.concat(pieces)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
local template = {}
|
|
68
|
+
|
|
69
|
+
--- expand the template using the specified environment.
|
|
70
|
+
-- @param str the template string
|
|
71
|
+
-- @param env the environment (by default empty). <br>
|
|
72
|
+
-- There are three special fields in the environment table <ul>
|
|
73
|
+
-- <li><code>_parent</code> continue looking up in this table</li>
|
|
74
|
+
-- <li><code>_brackets</code>; default is '()', can be any suitable bracket pair</li>
|
|
75
|
+
-- <li><code>_escape</code>; default is '#' </li>
|
|
76
|
+
-- </ul>
|
|
77
|
+
function template.substitute(str,env)
|
|
78
|
+
env = env or {}
|
|
79
|
+
if rawget(env,"_parent") then
|
|
80
|
+
setmetatable(env,{__index = env._parent})
|
|
81
|
+
end
|
|
82
|
+
local brackets = rawget(env,"_brackets") or '()'
|
|
83
|
+
local escape = rawget(env,"_escape") or '#'
|
|
84
|
+
local code = parseHashLines(str,brackets,escape)
|
|
85
|
+
local fn,err = utils.load(code,'TMP','t',env)
|
|
86
|
+
if not fn then return nil,err end
|
|
87
|
+
fn = fn()
|
|
88
|
+
local out = {}
|
|
89
|
+
local res,err = xpcall(function() fn(function(s)
|
|
90
|
+
out[#out+1] = s
|
|
91
|
+
end) end,debug.traceback)
|
|
92
|
+
if not res then
|
|
93
|
+
if env._debug then print(code) end
|
|
94
|
+
return nil,err
|
|
95
|
+
end
|
|
96
|
+
return table.concat(out)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
return template
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
--- Useful test utilities.
|
|
2
|
+
--
|
|
3
|
+
-- test.asserteq({1,2},{1,2}) -- can compare tables
|
|
4
|
+
-- test.asserteq(1.2,1.19,0.02) -- compare FP numbers within precision
|
|
5
|
+
-- T = test.tuple -- used for comparing multiple results
|
|
6
|
+
-- test.asserteq(T(string.find(" me","me")),T(2,3))
|
|
7
|
+
--
|
|
8
|
+
-- Dependencies: `pl.utils`, `pl.tablex`, `pl.pretty`, `pl.path`, `debug`
|
|
9
|
+
-- @module pl.test
|
|
10
|
+
|
|
11
|
+
local tablex = require 'pl.tablex'
|
|
12
|
+
local utils = require 'pl.utils'
|
|
13
|
+
local pretty = require 'pl.pretty'
|
|
14
|
+
local path = require 'pl.path'
|
|
15
|
+
local print,type = print,type
|
|
16
|
+
local clock = os.clock
|
|
17
|
+
local debug = require 'debug'
|
|
18
|
+
local io,debug = io,debug
|
|
19
|
+
|
|
20
|
+
local function dump(x)
|
|
21
|
+
if type(x) == 'table' and not (getmetatable(x) and getmetatable(x).__tostring) then
|
|
22
|
+
return pretty.write(x,' ',true)
|
|
23
|
+
elseif type(x) == 'string' then
|
|
24
|
+
return '"'..x..'"'
|
|
25
|
+
else
|
|
26
|
+
return tostring(x)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
local test = {}
|
|
31
|
+
|
|
32
|
+
local function complain (x,y,msg)
|
|
33
|
+
local i = debug.getinfo(3)
|
|
34
|
+
local err = io.stderr
|
|
35
|
+
err:write(path.basename(i.short_src)..':'..i.currentline..': assertion failed\n')
|
|
36
|
+
err:write("got:\t",dump(x),'\n')
|
|
37
|
+
err:write("needed:\t",dump(y),'\n')
|
|
38
|
+
utils.quit(1,msg or "these values were not equal")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
--- general test complain message.
|
|
42
|
+
-- Useful for composing new test functions (see tests/tablex.lua for an example)
|
|
43
|
+
-- @param x a value
|
|
44
|
+
-- @param y value to compare first value against
|
|
45
|
+
-- @param msg message
|
|
46
|
+
test.complain = complain
|
|
47
|
+
|
|
48
|
+
--- like assert, except takes two arguments that must be equal and can be tables.
|
|
49
|
+
-- If they are plain tables, it will use tablex.deepcompare.
|
|
50
|
+
-- @param x any value
|
|
51
|
+
-- @param y a value equal to x
|
|
52
|
+
-- @param eps an optional tolerance for numerical comparisons
|
|
53
|
+
function test.asserteq (x,y,eps)
|
|
54
|
+
local res = x == y
|
|
55
|
+
if not res then
|
|
56
|
+
res = tablex.deepcompare(x,y,true,eps)
|
|
57
|
+
end
|
|
58
|
+
if not res then
|
|
59
|
+
complain(x,y)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
--- assert that the first string matches the second.
|
|
64
|
+
-- @param s1 a string
|
|
65
|
+
-- @param s2 a string
|
|
66
|
+
function test.assertmatch (s1,s2)
|
|
67
|
+
if not s1:match(s2) then
|
|
68
|
+
complain (s1,s2,"these strings did not match")
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
--- assert that the function raises a particular error.
|
|
73
|
+
-- @param fn a table of the form {function,arg1,...}
|
|
74
|
+
-- @param e a string to match the error against
|
|
75
|
+
function test.assertraise(fn,e)
|
|
76
|
+
local ok, err = pcall(unpack(fn))
|
|
77
|
+
if not err or err:match(e)==nil then
|
|
78
|
+
complain (err,e,"these errors did not match")
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
--- a version of asserteq that takes two pairs of values.
|
|
83
|
+
-- <code>x1==y1 and x2==y2</code> must be true. Useful for functions that naturally
|
|
84
|
+
-- return two values.
|
|
85
|
+
-- @param x1 any value
|
|
86
|
+
-- @param x2 any value
|
|
87
|
+
-- @param y1 any value
|
|
88
|
+
-- @param y2 any value
|
|
89
|
+
function test.asserteq2 (x1,x2,y1,y2)
|
|
90
|
+
if x1 ~= y1 then complain(x1,y1) end
|
|
91
|
+
if x2 ~= y2 then complain(x2,y2) end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
-- tuple type --
|
|
95
|
+
|
|
96
|
+
local tuple_mt = {}
|
|
97
|
+
|
|
98
|
+
function tuple_mt.__tostring(self)
|
|
99
|
+
local ts = {}
|
|
100
|
+
for i=1, self.n do
|
|
101
|
+
local s = self[i]
|
|
102
|
+
ts[i] = type(s) == 'string' and string.format('%q', s) or tostring(s)
|
|
103
|
+
end
|
|
104
|
+
return 'tuple(' .. table.concat(ts, ', ') .. ')'
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
function tuple_mt.__eq(a, b)
|
|
108
|
+
if a.n ~= b.n then return false end
|
|
109
|
+
for i=1, a.n do
|
|
110
|
+
if a[i] ~= b[i] then return false end
|
|
111
|
+
end
|
|
112
|
+
return true
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
--- encode an arbitrary argument list as a tuple.
|
|
116
|
+
-- This can be used to compare to other argument lists, which is
|
|
117
|
+
-- very useful for testing functions which return a number of values.
|
|
118
|
+
-- @usage asserteq(tuple( ('ab'):find 'a'), tuple(1,1))
|
|
119
|
+
function test.tuple(...)
|
|
120
|
+
return setmetatable({n=select('#', ...), ...}, tuple_mt)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
--- Time a function. Call the function a given number of times, and report the number of seconds taken,
|
|
124
|
+
-- together with a message. Any extra arguments will be passed to the function.
|
|
125
|
+
-- @param msg a descriptive message
|
|
126
|
+
-- @param n number of times to call the function
|
|
127
|
+
-- @param fun the function
|
|
128
|
+
-- @param ... optional arguments to fun
|
|
129
|
+
function test.timer(msg,n,fun,...)
|
|
130
|
+
local start = clock()
|
|
131
|
+
for i = 1,n do fun(...) end
|
|
132
|
+
utils.printf("%s: took %7.2f sec\n",msg,clock()-start)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
return test
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
--- Text processing utilities.
|
|
2
|
+
--
|
|
3
|
+
-- This provides a Template class (modeled after the same from the Python
|
|
4
|
+
-- libraries, see string.Template). It also provides similar functions to those
|
|
5
|
+
-- found in the textwrap module.
|
|
6
|
+
--
|
|
7
|
+
-- See @{03-strings.md.String_Templates|the Guide}.
|
|
8
|
+
--
|
|
9
|
+
-- Calling `text.format_operator()` overloads the % operator for strings to give Python/Ruby style formated output.
|
|
10
|
+
-- This is extended to also do template-like substitution for map-like data.
|
|
11
|
+
--
|
|
12
|
+
-- > require 'pl.text'.format_operator()
|
|
13
|
+
-- > = '%s = %5.3f' % {'PI',math.pi}
|
|
14
|
+
-- PI = 3.142
|
|
15
|
+
-- > = '$name = $value' % {name='dog',value='Pluto'}
|
|
16
|
+
-- dog = Pluto
|
|
17
|
+
--
|
|
18
|
+
-- Dependencies: `pl.utils`
|
|
19
|
+
-- @module pl.text
|
|
20
|
+
|
|
21
|
+
local gsub = string.gsub
|
|
22
|
+
local concat,append = table.concat,table.insert
|
|
23
|
+
local utils = require 'pl.utils'
|
|
24
|
+
local bind1,usplit,assert_arg,is_callable = utils.bind1,utils.split,utils.assert_arg,utils.is_callable
|
|
25
|
+
|
|
26
|
+
local function lstrip(str) return (str:gsub('^%s+','')) end
|
|
27
|
+
local function strip(str) return (lstrip(str):gsub('%s+$','')) end
|
|
28
|
+
local function make_list(l) return setmetatable(l,utils.stdmt.List) end
|
|
29
|
+
local function split(s,delim) return make_list(usplit(s,delim)) end
|
|
30
|
+
|
|
31
|
+
local function imap(f,t,...)
|
|
32
|
+
local res = {}
|
|
33
|
+
for i = 1,#t do res[i] = f(t[i],...) end
|
|
34
|
+
return res
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
--[[
|
|
38
|
+
module ('pl.text',utils._module)
|
|
39
|
+
]]
|
|
40
|
+
|
|
41
|
+
local text = {}
|
|
42
|
+
|
|
43
|
+
local function _indent (s,sp)
|
|
44
|
+
local sl = split(s,'\n')
|
|
45
|
+
return concat(imap(bind1('..',sp),sl),'\n')..'\n'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
--- indent a multiline string.
|
|
49
|
+
-- @param s the string
|
|
50
|
+
-- @param n the size of the indent
|
|
51
|
+
-- @param ch the character to use when indenting (default ' ')
|
|
52
|
+
-- @return indented string
|
|
53
|
+
function text.indent (s,n,ch)
|
|
54
|
+
assert_arg(1,s,'string')
|
|
55
|
+
assert_arg(2,s,'number')
|
|
56
|
+
return _indent(s,string.rep(ch or ' ',n))
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
--- dedent a multiline string by removing any initial indent.
|
|
60
|
+
-- useful when working with [[..]] strings.
|
|
61
|
+
-- @param s the string
|
|
62
|
+
-- @return a string with initial indent zero.
|
|
63
|
+
function text.dedent (s)
|
|
64
|
+
assert_arg(1,s,'string')
|
|
65
|
+
local sl = split(s,'\n')
|
|
66
|
+
local i1,i2 = sl[1]:find('^%s*')
|
|
67
|
+
sl = imap(string.sub,sl,i2+1)
|
|
68
|
+
return concat(sl,'\n')..'\n'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
--- format a paragraph into lines so that they fit into a line width.
|
|
72
|
+
-- It will not break long words, so lines can be over the length
|
|
73
|
+
-- to that extent.
|
|
74
|
+
-- @param s the string
|
|
75
|
+
-- @param width the margin width, default 70
|
|
76
|
+
-- @return a list of lines
|
|
77
|
+
function text.wrap (s,width)
|
|
78
|
+
assert_arg(1,s,'string')
|
|
79
|
+
width = width or 70
|
|
80
|
+
s = s:gsub('\n',' ')
|
|
81
|
+
local i,nxt = 1
|
|
82
|
+
local lines,line = {}
|
|
83
|
+
while i < #s do
|
|
84
|
+
nxt = i+width
|
|
85
|
+
if s:find("[%w']",nxt) then -- inside a word
|
|
86
|
+
nxt = s:find('%W',nxt+1) -- so find word boundary
|
|
87
|
+
end
|
|
88
|
+
line = s:sub(i,nxt)
|
|
89
|
+
i = i + #line
|
|
90
|
+
append(lines,strip(line))
|
|
91
|
+
end
|
|
92
|
+
return make_list(lines)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
--- format a paragraph so that it fits into a line width.
|
|
96
|
+
-- @param s the string
|
|
97
|
+
-- @param width the margin width, default 70
|
|
98
|
+
-- @return a string
|
|
99
|
+
-- @see wrap
|
|
100
|
+
function text.fill (s,width)
|
|
101
|
+
return concat(text.wrap(s,width),'\n') .. '\n'
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
local Template = {}
|
|
105
|
+
text.Template = Template
|
|
106
|
+
Template.__index = Template
|
|
107
|
+
setmetatable(Template, {
|
|
108
|
+
__call = function(obj,tmpl)
|
|
109
|
+
return Template.new(tmpl)
|
|
110
|
+
end})
|
|
111
|
+
|
|
112
|
+
function Template.new(tmpl)
|
|
113
|
+
assert_arg(1,tmpl,'string')
|
|
114
|
+
local res = {}
|
|
115
|
+
res.tmpl = tmpl
|
|
116
|
+
setmetatable(res,Template)
|
|
117
|
+
return res
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
local function _substitute(s,tbl,safe)
|
|
121
|
+
local subst
|
|
122
|
+
if is_callable(tbl) then
|
|
123
|
+
subst = tbl
|
|
124
|
+
else
|
|
125
|
+
function subst(f)
|
|
126
|
+
local s = tbl[f]
|
|
127
|
+
if not s then
|
|
128
|
+
if safe then
|
|
129
|
+
return f
|
|
130
|
+
else
|
|
131
|
+
error("not present in table "..f)
|
|
132
|
+
end
|
|
133
|
+
else
|
|
134
|
+
return s
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
local res = gsub(s,'%${([%w_]+)}',subst)
|
|
139
|
+
return (gsub(res,'%$([%w_]+)',subst))
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
--- substitute values into a template, throwing an error.
|
|
143
|
+
-- This will throw an error if no name is found.
|
|
144
|
+
-- @param tbl a table of name-value pairs.
|
|
145
|
+
function Template:substitute(tbl)
|
|
146
|
+
assert_arg(1,tbl,'table')
|
|
147
|
+
return _substitute(self.tmpl,tbl,false)
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
--- substitute values into a template.
|
|
151
|
+
-- This version just passes unknown names through.
|
|
152
|
+
-- @param tbl a table of name-value pairs.
|
|
153
|
+
function Template:safe_substitute(tbl)
|
|
154
|
+
assert_arg(1,tbl,'table')
|
|
155
|
+
return _substitute(self.tmpl,tbl,true)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
--- substitute values into a template, preserving indentation. <br>
|
|
159
|
+
-- If the value is a multiline string _or_ a template, it will insert
|
|
160
|
+
-- the lines at the correct indentation. <br>
|
|
161
|
+
-- Furthermore, if a template, then that template will be subsituted
|
|
162
|
+
-- using the same table.
|
|
163
|
+
-- @param tbl a table of name-value pairs.
|
|
164
|
+
function Template:indent_substitute(tbl)
|
|
165
|
+
assert_arg(1,tbl,'table')
|
|
166
|
+
if not self.strings then
|
|
167
|
+
self.strings = split(self.tmpl,'\n')
|
|
168
|
+
end
|
|
169
|
+
-- the idea is to substitute line by line, grabbing any spaces as
|
|
170
|
+
-- well as the $var. If the value to be substituted contains newlines,
|
|
171
|
+
-- then we split that into lines and adjust the indent before inserting.
|
|
172
|
+
local function subst(line)
|
|
173
|
+
return line:gsub('(%s*)%$([%w_]+)',function(sp,f)
|
|
174
|
+
local subtmpl
|
|
175
|
+
local s = tbl[f]
|
|
176
|
+
if not s then error("not present in table "..f) end
|
|
177
|
+
if getmetatable(s) == Template then
|
|
178
|
+
subtmpl = s
|
|
179
|
+
s = s.tmpl
|
|
180
|
+
else
|
|
181
|
+
s = tostring(s)
|
|
182
|
+
end
|
|
183
|
+
if s:find '\n' then
|
|
184
|
+
s = _indent(s,sp)
|
|
185
|
+
end
|
|
186
|
+
if subtmpl then return _substitute(s,tbl)
|
|
187
|
+
else return s
|
|
188
|
+
end
|
|
189
|
+
end)
|
|
190
|
+
end
|
|
191
|
+
local lines = imap(subst,self.strings)
|
|
192
|
+
return concat(lines,'\n')..'\n'
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
------- Python-style formatting operator ------
|
|
196
|
+
-- (see <a href="http://lua-users.org/wiki/StringInterpolation">the lua-users wiki</a>) --
|
|
197
|
+
|
|
198
|
+
function text.format_operator()
|
|
199
|
+
|
|
200
|
+
local format = string.format
|
|
201
|
+
|
|
202
|
+
-- a more forgiving version of string.format, which applies
|
|
203
|
+
-- tostring() to any value with a %s format.
|
|
204
|
+
local function formatx (fmt,...)
|
|
205
|
+
local args = {...}
|
|
206
|
+
local i = 1
|
|
207
|
+
for p in fmt:gmatch('%%.') do
|
|
208
|
+
if p == '%s' and type(args[i]) ~= 'string' then
|
|
209
|
+
args[i] = tostring(args[i])
|
|
210
|
+
end
|
|
211
|
+
i = i + 1
|
|
212
|
+
end
|
|
213
|
+
return format(fmt,unpack(args))
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
local function basic_subst(s,t)
|
|
217
|
+
return (s:gsub('%$([%w_]+)',t))
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
-- Note this goes further than the original, and will allow these cases:
|
|
221
|
+
-- 1. a single value
|
|
222
|
+
-- 2. a list of values
|
|
223
|
+
-- 3. a map of var=value pairs
|
|
224
|
+
-- 4. a function, as in gsub
|
|
225
|
+
-- For the second two cases, it uses $-variable substituion.
|
|
226
|
+
getmetatable("").__mod = function(a, b)
|
|
227
|
+
if b == nil then
|
|
228
|
+
return a
|
|
229
|
+
elseif type(b) == "table" and getmetatable(b) == nil then
|
|
230
|
+
if #b == 0 then -- assume a map-like table
|
|
231
|
+
return _substitute(a,b,true)
|
|
232
|
+
else
|
|
233
|
+
return formatx(a,unpack(b))
|
|
234
|
+
end
|
|
235
|
+
elseif type(b) == 'function' then
|
|
236
|
+
return basic_subst(a,b)
|
|
237
|
+
else
|
|
238
|
+
return formatx(a,b)
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
return text
|