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.
Files changed (459) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +69 -0
  6. data/Rakefile +1 -0
  7. data/lib/rufus/lua/win.rb +18 -0
  8. data/lib/rufus/lua/win/version.rb +7 -0
  9. data/rufus-lua-win.gemspec +23 -0
  10. data/vendor/lua/bin/liblua.dll +0 -0
  11. data/vendor/lua/lib/lua/LuaXml.lua +119 -0
  12. data/vendor/lua/lib/lua/alien.lua +250 -0
  13. data/vendor/lua/lib/lua/alien/core.dll +0 -0
  14. data/vendor/lua/lib/lua/alien/struct.dll +0 -0
  15. data/vendor/lua/lib/lua/base.lua +536 -0
  16. data/vendor/lua/lib/lua/bin.lua +20 -0
  17. data/vendor/lua/lib/lua/bit.dll +0 -0
  18. data/vendor/lua/lib/lua/cdlua.dll +0 -0
  19. data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
  20. data/vendor/lua/lib/lua/cdluagl.dll +0 -0
  21. data/vendor/lua/lib/lua/cdluaim.dll +0 -0
  22. data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
  23. data/vendor/lua/lib/lua/copas.lua +543 -0
  24. data/vendor/lua/lib/lua/coxpcall.lua +57 -0
  25. data/vendor/lua/lib/lua/date.lua +745 -0
  26. data/vendor/lua/lib/lua/debug_ext.lua +84 -0
  27. data/vendor/lua/lib/lua/debug_init.lua +2 -0
  28. data/vendor/lua/lib/lua/des56.dll +0 -0
  29. data/vendor/lua/lib/lua/dist/config.lua +109 -0
  30. data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
  31. data/vendor/lua/lib/lua/dist/depends.lua +601 -0
  32. data/vendor/lua/lib/lua/dist/git.lua +307 -0
  33. data/vendor/lua/lib/lua/dist/init.lua +278 -0
  34. data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
  35. data/vendor/lua/lib/lua/dist/package.lua +583 -0
  36. data/vendor/lua/lib/lua/dist/sys.lua +367 -0
  37. data/vendor/lua/lib/lua/dist/utils.lua +130 -0
  38. data/vendor/lua/lib/lua/ex.dll +0 -0
  39. data/vendor/lua/lib/lua/fstable.lua +116 -0
  40. data/vendor/lua/lib/lua/getopt.lua +273 -0
  41. data/vendor/lua/lib/lua/git.lua +5 -0
  42. data/vendor/lua/lib/lua/git/core.dll +0 -0
  43. data/vendor/lua/lib/lua/git/objects.lua +121 -0
  44. data/vendor/lua/lib/lua/git/pack.lua +316 -0
  45. data/vendor/lua/lib/lua/git/protocol.lua +188 -0
  46. data/vendor/lua/lib/lua/git/repo.lua +283 -0
  47. data/vendor/lua/lib/lua/git/util.lua +233 -0
  48. data/vendor/lua/lib/lua/gzio.dll +0 -0
  49. data/vendor/lua/lib/lua/gzip.lua +81 -0
  50. data/vendor/lua/lib/lua/iconv.dll +0 -0
  51. data/vendor/lua/lib/lua/imlua.dll +0 -0
  52. data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
  53. data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
  54. data/vendor/lua/lib/lua/imlua_process.dll +0 -0
  55. data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
  56. data/vendor/lua/lib/lua/io_ext.lua +115 -0
  57. data/vendor/lua/lib/lua/iuplua.dll +0 -0
  58. data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
  59. data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
  60. data/vendor/lua/lib/lua/iupluacd.dll +0 -0
  61. data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
  62. data/vendor/lua/lib/lua/iupluagl.dll +0 -0
  63. data/vendor/lua/lib/lua/iupluaim.dll +0 -0
  64. data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
  65. data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
  66. data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
  67. data/vendor/lua/lib/lua/lanes.lua +591 -0
  68. data/vendor/lua/lib/lua/lanes/core.dll +0 -0
  69. data/vendor/lua/lib/lua/lcs.lua +55 -0
  70. data/vendor/lua/lib/lua/lemock.lua +659 -0
  71. data/vendor/lua/lib/lua/lfs.dll +0 -0
  72. data/vendor/lua/lib/lua/list.lua +375 -0
  73. data/vendor/lua/lib/lua/logging.lua +189 -0
  74. data/vendor/lua/lib/lua/logging/console.lua +22 -0
  75. data/vendor/lua/lib/lua/logging/email.lua +44 -0
  76. data/vendor/lua/lib/lua/logging/file.lua +55 -0
  77. data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
  78. data/vendor/lua/lib/lua/logging/socket.lua +35 -0
  79. data/vendor/lua/lib/lua/logging/sql.lua +64 -0
  80. data/vendor/lua/lib/lua/loop/base.lua +68 -0
  81. data/vendor/lua/lib/lua/loop/cached.lua +312 -0
  82. data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
  83. data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
  84. data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
  85. data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
  86. data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
  87. data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
  88. data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
  89. data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
  90. data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
  91. data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
  92. data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
  93. data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
  94. data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
  95. data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
  96. data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
  97. data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
  98. data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
  99. data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
  100. data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
  101. data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
  102. data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
  103. data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
  104. data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
  105. data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
  106. data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
  107. data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
  108. data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
  109. data/vendor/lua/lib/lua/loop/simple.lua +75 -0
  110. data/vendor/lua/lib/lua/loop/table.lua +71 -0
  111. data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
  112. data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
  113. data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
  114. data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
  115. data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
  116. data/vendor/lua/lib/lua/lpeg.dll +0 -0
  117. data/vendor/lua/lib/lua/ltn12.lua +292 -0
  118. data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
  119. data/vendor/lua/lib/lua/luacurl.dll +0 -0
  120. data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
  121. data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
  122. data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
  123. data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
  124. data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
  125. data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
  126. data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
  127. data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
  128. data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
  129. data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
  130. data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
  131. data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
  132. data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
  133. data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
  134. data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
  135. data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
  136. data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
  137. data/vendor/lua/lib/lua/luagl.dll +0 -0
  138. data/vendor/lua/lib/lua/luaglu.dll +0 -0
  139. data/vendor/lua/lib/lua/luaidl.lua +113 -0
  140. data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
  141. data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
  142. data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
  143. data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
  144. data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
  145. data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
  146. data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
  147. data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
  148. data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
  149. data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
  150. data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
  151. data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
  152. data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
  153. data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
  154. data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
  155. data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
  156. data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
  157. data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
  158. data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
  159. data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
  160. data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
  161. data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
  162. data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
  163. data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
  164. data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
  165. data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
  166. data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
  167. data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
  168. data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
  169. data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
  170. data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
  171. data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
  172. data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
  173. data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
  174. data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
  175. data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
  176. data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
  177. data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
  178. data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
  179. data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
  180. data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
  181. data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
  182. data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
  183. data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
  184. data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
  185. data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
  186. data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
  187. data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
  188. data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
  189. data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
  190. data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
  191. data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
  192. data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
  193. data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
  194. data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
  195. data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
  196. data/vendor/lua/lib/lua/luars232.dll +0 -0
  197. data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
  198. data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
  199. data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
  200. data/vendor/lua/lib/lua/luaunit.lua +601 -0
  201. data/vendor/lua/lib/lua/lxp.dll +0 -0
  202. data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
  203. data/vendor/lua/lib/lua/math_ext.lua +27 -0
  204. data/vendor/lua/lib/lua/mbox.lua +53 -0
  205. data/vendor/lua/lib/lua/md5.lua +19 -0
  206. data/vendor/lua/lib/lua/md5/core.dll +0 -0
  207. data/vendor/lua/lib/lua/metalua.lua +0 -0
  208. data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
  209. data/vendor/lua/lib/lua/metalua/base.lua +104 -0
  210. data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
  211. data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
  212. data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
  213. data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
  214. data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
  215. data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
  216. data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
  217. data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
  218. data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
  219. data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
  220. data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
  221. data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
  222. data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
  223. data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
  224. data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
  225. data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
  226. data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
  227. data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
  228. data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
  229. data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
  230. data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
  231. data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
  232. data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
  233. data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
  234. data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
  235. data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
  236. data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
  237. data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
  238. data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
  239. data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
  240. data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
  241. data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
  242. data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
  243. data/vendor/lua/lib/lua/mime.lua +87 -0
  244. data/vendor/lua/lib/lua/mime/core.dll +0 -0
  245. data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
  246. data/vendor/lua/lib/lua/modules.lua +16 -0
  247. data/vendor/lua/lib/lua/object.lua +56 -0
  248. data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
  249. data/vendor/lua/lib/lua/oil/arch.lua +27 -0
  250. data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
  251. data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
  252. data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
  253. data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
  254. data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
  255. data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
  256. data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
  257. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
  258. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
  259. data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
  260. data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
  261. data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
  262. data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
  263. data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
  264. data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
  265. data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
  266. data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
  267. data/vendor/lua/lib/lua/oil/assert.lua +87 -0
  268. data/vendor/lua/lib/lua/oil/builder.lua +45 -0
  269. data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
  270. data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
  271. data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
  272. data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
  273. data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
  274. data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
  275. data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
  276. data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
  277. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
  278. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
  279. data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
  280. data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
  281. data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
  282. data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
  283. data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
  284. data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
  285. data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
  286. data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
  287. data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
  288. data/vendor/lua/lib/lua/oil/compat.lua +846 -0
  289. data/vendor/lua/lib/lua/oil/component.lua +1 -0
  290. data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
  291. data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
  292. data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
  293. data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
  294. data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
  295. data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
  296. data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
  297. data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
  298. data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
  299. data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
  300. data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
  301. data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
  302. data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
  303. data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
  304. data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
  305. data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
  306. data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
  307. data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
  308. data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
  309. data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
  310. data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
  311. data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
  312. data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
  313. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
  314. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
  315. data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
  316. data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
  317. data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
  318. data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
  319. data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
  320. data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
  321. data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
  322. data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
  323. data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
  324. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
  325. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
  326. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
  327. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
  328. data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
  329. data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
  330. data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
  331. data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
  332. data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
  333. data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
  334. data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
  335. data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
  336. data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
  337. data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
  338. data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
  339. data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
  340. data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
  341. data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
  342. data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
  343. data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
  344. data/vendor/lua/lib/lua/oil/oo.lua +1 -0
  345. data/vendor/lua/lib/lua/oil/port.lua +1 -0
  346. data/vendor/lua/lib/lua/oil/properties.lua +57 -0
  347. data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
  348. data/vendor/lua/lib/lua/package_ext.lua +15 -0
  349. data/vendor/lua/lib/lua/parser.lua +268 -0
  350. data/vendor/lua/lib/lua/pl/Date.lua +555 -0
  351. data/vendor/lua/lib/lua/pl/List.lua +613 -0
  352. data/vendor/lua/lib/lua/pl/Map.lua +113 -0
  353. data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
  354. data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
  355. data/vendor/lua/lib/lua/pl/Set.lua +153 -0
  356. data/vendor/lua/lib/lua/pl/app.lua +165 -0
  357. data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
  358. data/vendor/lua/lib/lua/pl/class.lua +180 -0
  359. data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
  360. data/vendor/lua/lib/lua/pl/config.lua +176 -0
  361. data/vendor/lua/lib/lua/pl/data.lua +606 -0
  362. data/vendor/lua/lib/lua/pl/dir.lua +475 -0
  363. data/vendor/lua/lib/lua/pl/file.lua +70 -0
  364. data/vendor/lua/lib/lua/pl/func.lua +376 -0
  365. data/vendor/lua/lib/lua/pl/init.lua +68 -0
  366. data/vendor/lua/lib/lua/pl/input.lua +173 -0
  367. data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
  368. data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
  369. data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
  370. data/vendor/lua/lib/lua/pl/operator.lua +201 -0
  371. data/vendor/lua/lib/lua/pl/path.lua +398 -0
  372. data/vendor/lua/lib/lua/pl/permute.lua +63 -0
  373. data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
  374. data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
  375. data/vendor/lua/lib/lua/pl/seq.lua +551 -0
  376. data/vendor/lua/lib/lua/pl/sip.lua +344 -0
  377. data/vendor/lua/lib/lua/pl/strict.lua +70 -0
  378. data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
  379. data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
  380. data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
  381. data/vendor/lua/lib/lua/pl/template.lua +103 -0
  382. data/vendor/lua/lib/lua/pl/test.lua +135 -0
  383. data/vendor/lua/lib/lua/pl/text.lua +243 -0
  384. data/vendor/lua/lib/lua/pl/utils.lua +550 -0
  385. data/vendor/lua/lib/lua/pl/xml.lua +689 -0
  386. data/vendor/lua/lib/lua/profiler.dll +0 -0
  387. data/vendor/lua/lib/lua/re.lua +248 -0
  388. data/vendor/lua/lib/lua/rex_onig.dll +0 -0
  389. data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
  390. data/vendor/lua/lib/lua/rex_posix.dll +0 -0
  391. data/vendor/lua/lib/lua/rings.dll +0 -0
  392. data/vendor/lua/lib/lua/serialize.lua +193 -0
  393. data/vendor/lua/lib/lua/set.lua +149 -0
  394. data/vendor/lua/lib/lua/socket.lua +133 -0
  395. data/vendor/lua/lib/lua/socket/core.dll +0 -0
  396. data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
  397. data/vendor/lua/lib/lua/socket/http.lua +350 -0
  398. data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
  399. data/vendor/lua/lib/lua/socket/tp.lua +123 -0
  400. data/vendor/lua/lib/lua/socket/url.lua +297 -0
  401. data/vendor/lua/lib/lua/ssl.dll +0 -0
  402. data/vendor/lua/lib/lua/ssl.lua +93 -0
  403. data/vendor/lua/lib/lua/ssl/https.lua +138 -0
  404. data/vendor/lua/lib/lua/stable.lua +28 -0
  405. data/vendor/lua/lib/lua/std.lua +16 -0
  406. data/vendor/lua/lib/lua/strbuf.lua +32 -0
  407. data/vendor/lua/lib/lua/strict.lua +45 -0
  408. data/vendor/lua/lib/lua/string_ext.lua +274 -0
  409. data/vendor/lua/lib/lua/table_ext.lua +117 -0
  410. data/vendor/lua/lib/lua/tar.lua +262 -0
  411. data/vendor/lua/lib/lua/task.dll +0 -0
  412. data/vendor/lua/lib/lua/tree.lua +81 -0
  413. data/vendor/lua/lib/lua/unicode.dll +0 -0
  414. data/vendor/lua/lib/lua/verbose_require.lua +11 -0
  415. data/vendor/lua/lib/lua/vstruct.lua +86 -0
  416. data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
  417. data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
  418. data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
  419. data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
  420. data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
  421. data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
  422. data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
  423. data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
  424. data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
  425. data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
  426. data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
  427. data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
  428. data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
  429. data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
  430. data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
  431. data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
  432. data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
  433. data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
  434. data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
  435. data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
  436. data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
  437. data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
  438. data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
  439. data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
  440. data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
  441. data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
  442. data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
  443. data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
  444. data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
  445. data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
  446. data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
  447. data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
  448. data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
  449. data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
  450. data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
  451. data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
  452. data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
  453. data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
  454. data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
  455. data/vendor/lua/lib/lua/wx.dll +0 -0
  456. data/vendor/lua/lib/lua/xml.lua +75 -0
  457. data/vendor/lua/lib/lua/zip.dll +0 -0
  458. data/vendor/lua/lib/lua/zlib.dll +0 -0
  459. metadata +529 -0
@@ -0,0 +1,70 @@
1
+ --- File manipulation functions: reading, writing, moving and copying.
2
+ --
3
+ -- Dependencies: `pl.utils`, `pl.dir`, `pl.path`
4
+ -- @module pl.file
5
+ local os = os
6
+ local utils = require 'pl.utils'
7
+ local dir = require 'pl.dir'
8
+ local path = require 'pl.path'
9
+
10
+ --[[
11
+ module ('pl.file',utils._module)
12
+ ]]
13
+ local file = {}
14
+
15
+ --- return the contents of a file as a string
16
+ -- @class function
17
+ -- @name file.read
18
+ -- @param filename The file path
19
+ -- @return file contents
20
+ file.read = utils.readfile
21
+
22
+ --- write a string to a file
23
+ -- @class function
24
+ -- @name file.write
25
+ -- @param filename The file path
26
+ -- @param str The string
27
+ file.write = utils.writefile
28
+
29
+ --- copy a file.
30
+ -- @class function
31
+ -- @name file.copy
32
+ -- @param src source file
33
+ -- @param dest destination file
34
+ -- @param flag true if you want to force the copy (default)
35
+ -- @return true if operation succeeded
36
+ file.copy = dir.copyfile
37
+
38
+ --- move a file.
39
+ -- @class function
40
+ -- @name file.move
41
+ -- @param src source file
42
+ -- @param dest destination file
43
+ -- @return true if operation succeeded, else false and the reason for the error.
44
+ file.move = dir.movefile
45
+
46
+ --- Return the time of last access as the number of seconds since the epoch.
47
+ -- @class function
48
+ -- @name file.access_time
49
+ -- @param path A file path
50
+ file.access_time = path.getatime
51
+
52
+ ---Return when the file was created.
53
+ -- @class function
54
+ -- @name file.creation_time
55
+ -- @param path A file path
56
+ file.creation_time = path.getctime
57
+
58
+ --- Return the time of last modification
59
+ -- @class function
60
+ -- @name file.modified_time
61
+ -- @param path A file path
62
+ file.modified_time = path.getmtime
63
+
64
+ --- Delete a file
65
+ -- @class function
66
+ -- @name file.delete
67
+ -- @param path A file path
68
+ file.delete = os.remove
69
+
70
+ return file
@@ -0,0 +1,376 @@
1
+ --- Functional helpers like composition, binding and placeholder expressions.
2
+ -- Placeholder expressions are useful for short anonymous functions, and were
3
+ -- inspired by the Boost Lambda library.
4
+ --
5
+ -- > utils.import 'pl.func'
6
+ -- > ls = List{10,20,30}
7
+ -- > = ls:map(_1+1)
8
+ -- {11,21,31}
9
+ --
10
+ -- They can also be used to _bind_ particular arguments of a function.
11
+ --
12
+ -- > p = bind(print,'start>',_0)
13
+ -- > p(10,20,30)
14
+ -- > start> 10 20 30
15
+ --
16
+ -- See @{07-functional.md.Creating_Functions_from_Functions|the Guide}
17
+ --
18
+ -- Dependencies: `pl.utils`, `pl.tablex`
19
+ -- @module pl.func
20
+ local type,select,setmetatable,getmetatable,rawset = type,select,setmetatable,getmetatable,rawset
21
+ local concat,append = table.concat,table.insert
22
+ local max = math.max
23
+ local print,tostring = print,tostring
24
+ local pairs,ipairs,loadstring,rawget,unpack = pairs,ipairs,loadstring,rawget,unpack
25
+ local _G = _G
26
+ local utils = require 'pl.utils'
27
+ local tablex = require 'pl.tablex'
28
+ local map = tablex.map
29
+ local _DEBUG = rawget(_G,'_DEBUG')
30
+ local assert_arg = utils.assert_arg
31
+
32
+ local func = {}
33
+
34
+ -- metatable for Placeholder Expressions (PE)
35
+ local _PEMT = {}
36
+
37
+ local function P (t)
38
+ setmetatable(t,_PEMT)
39
+ return t
40
+ end
41
+
42
+ func.PE = P
43
+
44
+ local function isPE (obj)
45
+ return getmetatable(obj) == _PEMT
46
+ end
47
+
48
+ func.isPE = isPE
49
+
50
+ -- construct a placeholder variable (e.g _1 and _2)
51
+ local function PH (idx)
52
+ return P {op='X',repr='_'..idx, index=idx}
53
+ end
54
+
55
+ -- construct a constant placeholder variable (e.g _C1 and _C2)
56
+ local function CPH (idx)
57
+ return P {op='X',repr='_C'..idx, index=idx}
58
+ end
59
+
60
+ func._1,func._2,func._3,func._4,func._5 = PH(1),PH(2),PH(3),PH(4),PH(5)
61
+ func._0 = P{op='X',repr='...',index=0}
62
+
63
+ function func.Var (name)
64
+ local ls = utils.split(name,'[%s,]+')
65
+ local res = {}
66
+ for _,n in ipairs(ls) do
67
+ append(res,P{op='X',repr=n,index=0})
68
+ end
69
+ return unpack(res)
70
+ end
71
+
72
+ function func._ (value)
73
+ return P{op='X',repr=value,index='wrap'}
74
+ end
75
+
76
+ local repr
77
+
78
+ func.Nil = func.Var 'nil'
79
+
80
+ function _PEMT.__index(obj,key)
81
+ return P{op='[]',obj,key}
82
+ end
83
+
84
+ function _PEMT.__call(fun,...)
85
+ return P{op='()',fun,...}
86
+ end
87
+
88
+ function _PEMT.__tostring (e)
89
+ return repr(e)
90
+ end
91
+
92
+ function _PEMT.__unm(arg)
93
+ return P{op='-',arg}
94
+ end
95
+
96
+ function func.Not (arg)
97
+ return P{op='not',arg}
98
+ end
99
+
100
+ function func.Len (arg)
101
+ return P{op='#',arg}
102
+ end
103
+
104
+
105
+ local function binreg(context,t)
106
+ for name,op in pairs(t) do
107
+ rawset(context,name,function(x,y)
108
+ return P{op=op,x,y}
109
+ end)
110
+ end
111
+ end
112
+
113
+ local function import_name (name,fun,context)
114
+ rawset(context,name,function(...)
115
+ return P{op='()',fun,...}
116
+ end)
117
+ end
118
+
119
+ local imported_functions = {}
120
+
121
+ local function is_global_table (n)
122
+ return type(_G[n]) == 'table'
123
+ end
124
+
125
+ --- wrap a table of functions. This makes them available for use in
126
+ -- placeholder expressions.
127
+ -- @param tname a table name
128
+ -- @param context context to put results, defaults to environment of caller
129
+ function func.import(tname,context)
130
+ assert_arg(1,tname,'string',is_global_table,'arg# 1: not a name of a global table')
131
+ local t = _G[tname]
132
+ context = context or _G
133
+ for name,fun in pairs(t) do
134
+ import_name(name,fun,context)
135
+ imported_functions[fun] = name
136
+ end
137
+ end
138
+
139
+ --- register a function for use in placeholder expressions.
140
+ -- @param fun a function
141
+ -- @param name an optional name
142
+ -- @return a placeholder functiond
143
+ function func.register (fun,name)
144
+ assert_arg(1,fun,'function')
145
+ if name then
146
+ assert_arg(2,name,'string')
147
+ imported_functions[fun] = name
148
+ end
149
+ return function(...)
150
+ return P{op='()',fun,...}
151
+ end
152
+ end
153
+
154
+ function func.lookup_imported_name (fun)
155
+ return imported_functions[fun]
156
+ end
157
+
158
+ local function _arg(...) return ... end
159
+
160
+ function func.Args (...)
161
+ return P{op='()',_arg,...}
162
+ end
163
+
164
+ -- binary and unary operators, with their precedences (see 2.5.6)
165
+ local operators = {
166
+ ['or'] = 0,
167
+ ['and'] = 1,
168
+ ['=='] = 2, ['~='] = 2, ['<'] = 2, ['>'] = 2, ['<='] = 2, ['>='] = 2,
169
+ ['..'] = 3,
170
+ ['+'] = 4, ['-'] = 4,
171
+ ['*'] = 5, ['/'] = 5, ['%'] = 5,
172
+ ['not'] = 6, ['#'] = 6, ['-'] = 6,
173
+ ['^'] = 7
174
+ }
175
+
176
+ -- comparisons (as prefix functions)
177
+ binreg (func,{And='and',Or='or',Eq='==',Lt='<',Gt='>',Le='<=',Ge='>='})
178
+
179
+ -- standard binary operators (as metamethods)
180
+ binreg (_PEMT,{__add='+',__sub='-',__mul='*',__div='/',__mod='%',__pow='^',__concat='..'})
181
+
182
+ binreg (_PEMT,{__eq='=='})
183
+
184
+ --- all elements of a table except the first.
185
+ -- @param ls a list-like table.
186
+ function func.tail (ls)
187
+ assert_arg(1,ls,'table')
188
+ local res = {}
189
+ for i = 2,#ls do
190
+ append(res,ls[i])
191
+ end
192
+ return res
193
+ end
194
+
195
+ --- create a string representation of a placeholder expression.
196
+ -- @param e a placeholder expression
197
+ -- @param lastpred not used
198
+ function repr (e,lastpred)
199
+ local tail = func.tail
200
+ if isPE(e) then
201
+ local pred = operators[e.op]
202
+ local ls = map(repr,e,pred)
203
+ if pred then --unary or binary operator
204
+ if #ls ~= 1 then
205
+ local s = concat(ls,' '..e.op..' ')
206
+ if lastpred and lastpred > pred then
207
+ s = '('..s..')'
208
+ end
209
+ return s
210
+ else
211
+ return e.op..' '..ls[1]
212
+ end
213
+ else -- either postfix, or a placeholder
214
+ if e.op == '[]' then
215
+ return ls[1]..'['..ls[2]..']'
216
+ elseif e.op == '()' then
217
+ local fn
218
+ if ls[1] ~= nil then -- was _args, undeclared!
219
+ fn = ls[1]
220
+ else
221
+ fn = ''
222
+ end
223
+ return fn..'('..concat(tail(ls),',')..')'
224
+ else
225
+ return e.repr
226
+ end
227
+ end
228
+ elseif type(e) == 'string' then
229
+ return '"'..e..'"'
230
+ elseif type(e) == 'function' then
231
+ local name = func.lookup_imported_name(e)
232
+ if name then return name else return tostring(e) end
233
+ else
234
+ return tostring(e) --should not really get here!
235
+ end
236
+ end
237
+ func.repr = repr
238
+
239
+ -- collect all the non-PE values in this PE into vlist, and replace each occurence
240
+ -- with a constant PH (_C1, etc). Return the maximum placeholder index found.
241
+ local collect_values
242
+ function collect_values (e,vlist)
243
+ if isPE(e) then
244
+ if e.op ~= 'X' then
245
+ local m = 0
246
+ for i,subx in ipairs(e) do
247
+ local pe = isPE(subx)
248
+ if pe then
249
+ if subx.op == 'X' and subx.index == 'wrap' then
250
+ subx = subx.repr
251
+ pe = false
252
+ else
253
+ m = max(m,collect_values(subx,vlist))
254
+ end
255
+ end
256
+ if not pe then
257
+ append(vlist,subx)
258
+ e[i] = CPH(#vlist)
259
+ end
260
+ end
261
+ return m
262
+ else -- was a placeholder, it has an index...
263
+ return e.index
264
+ end
265
+ else -- plain value has no placeholder dependence
266
+ return 0
267
+ end
268
+ end
269
+ func.collect_values = collect_values
270
+
271
+ --- instantiate a PE into an actual function. First we find the largest placeholder used,
272
+ -- e.g. _2; from this a list of the formal parameters can be build. Then we collect and replace
273
+ -- any non-PE values from the PE, and build up a constant binding list.
274
+ -- Finally, the expression can be compiled, and e.__PE_function is set.
275
+ -- @param e a placeholder expression
276
+ -- @return a function
277
+ function func.instantiate (e)
278
+ local consts,values,parms = {},{},{}
279
+ local rep, err, fun
280
+ local n = func.collect_values(e,values)
281
+ for i = 1,#values do
282
+ append(consts,'_C'..i)
283
+ if _DEBUG then print(i,values[i]) end
284
+ end
285
+ for i =1,n do
286
+ append(parms,'_'..i)
287
+ end
288
+ consts = concat(consts,',')
289
+ parms = concat(parms,',')
290
+ rep = repr(e)
291
+ local fstr = ('return function(%s) return function(%s) return %s end end'):format(consts,parms,rep)
292
+ if _DEBUG then print(fstr) end
293
+ fun,err = loadstring(fstr,'fun')
294
+ if not fun then return nil,err end
295
+ fun = fun() -- get wrapper
296
+ fun = fun(unpack(values)) -- call wrapper (values could be empty)
297
+ e.__PE_function = fun
298
+ return fun
299
+ end
300
+
301
+ --- instantiate a PE unless it has already been done.
302
+ -- @param e a placeholder expression
303
+ -- @return the function
304
+ function func.I(e)
305
+ if rawget(e,'__PE_function') then
306
+ return e.__PE_function
307
+ else return func.instantiate(e)
308
+ end
309
+ end
310
+
311
+ utils.add_function_factory(_PEMT,func.I)
312
+
313
+ --- bind the first parameter of the function to a value.
314
+ -- @class function
315
+ -- @name func.curry
316
+ -- @param fn a function of one or more arguments
317
+ -- @param p a value
318
+ -- @return a function of one less argument
319
+ -- @usage (curry(math.max,10))(20) == math.max(10,20)
320
+ func.curry = utils.bind1
321
+
322
+ --- create a function which chains two functions.
323
+ -- @param f a function of at least one argument
324
+ -- @param g a function of at least one argument
325
+ -- @return a function
326
+ -- @usage printf = compose(io.write,string.format)
327
+ function func.compose (f,g)
328
+ return function(...) return f(g(...)) end
329
+ end
330
+
331
+ --- bind the arguments of a function to given values.
332
+ -- bind(fn,v,_2) is equivalent to curry(fn,v).
333
+ -- @param fn a function of at least one argument
334
+ -- @param ... values or placeholder variables
335
+ -- @return a function
336
+ -- @usage (bind(f,_1,a))(b) == f(a,b)
337
+ -- @usage (bind(f,_2,_1))(a,b) == f(b,a)
338
+ function func.bind(fn,...)
339
+ local args = table.pack(...)
340
+ local holders,parms,bvalues,values = {},{},{'fn'},{}
341
+ local nv,maxplace,varargs = 1,0,false
342
+ for i = 1,args.n do
343
+ local a = args[i]
344
+ if isPE(a) and a.op == 'X' then
345
+ append(holders,a.repr)
346
+ maxplace = max(maxplace,a.index)
347
+ if a.index == 0 then varargs = true end
348
+ else
349
+ local v = '_v'..nv
350
+ append(bvalues,v)
351
+ append(holders,v)
352
+ append(values,a)
353
+ nv = nv + 1
354
+ end
355
+ end
356
+ for np = 1,maxplace do
357
+ append(parms,'_'..np)
358
+ end
359
+ if varargs then append(parms,'...') end
360
+ bvalues = concat(bvalues,',')
361
+ parms = concat(parms,',')
362
+ holders = concat(holders,',')
363
+ local fstr = ([[
364
+ return function (%s)
365
+ return function(%s) return fn(%s) end
366
+ end
367
+ ]]):format(bvalues,parms,holders)
368
+ if _DEBUG then print(fstr) end
369
+ local res,err = loadstring(fstr)
370
+ res = res()
371
+ return res(fn,unpack(values))
372
+ end
373
+
374
+ return func
375
+
376
+
@@ -0,0 +1,68 @@
1
+ --------------
2
+ -- Entry point for loading all PL libraries only on demand.
3
+ -- Requiring 'pl' means that whenever a module is implicitly accesssed
4
+ -- (e.g. `utils.split`)
5
+ -- then that module is dynamically loaded. The submodules are all brought into
6
+ -- the global space.
7
+ -- @module pl
8
+
9
+ local modules = {
10
+ utils = true,path=true,dir=true,tablex=true,stringio=true,sip=true,
11
+ input=true,seq=true,lexer=true,stringx=true,
12
+ config=true,pretty=true,data=true,func=true,text=true,
13
+ operator=true,lapp=true,array2d=true,
14
+ comprehension=true,xml=true,
15
+ test = true, app = true, file = true, class = true, List = true,
16
+ Map = true, Set = true, OrderedMap = true, MultiMap = true,
17
+ Date = true,
18
+ -- classes --
19
+ }
20
+ _G.utils = require 'pl.utils'
21
+
22
+ for name,klass in pairs(_G.utils.stdmt) do
23
+ klass.__index = function(t,key)
24
+ return require ('pl.'..name)[key]
25
+ end;
26
+ end
27
+
28
+ -- ensure that we play nice with libraries that also attach a metatable
29
+ -- to the global table; always forward to a custom __index if we don't
30
+ -- match
31
+
32
+ local _hook,_prev_index
33
+ local gmt = {}
34
+ local prev_gmt = getmetatable(_G)
35
+ if prev_gmt then
36
+ _prev_index = prev_gmt.__index
37
+ if prev_gmt.__newindex then
38
+ gmt.__index = prev_gmt.__newindex
39
+ end
40
+ end
41
+
42
+ function gmt.hook(handler)
43
+ _hook = handler
44
+ end
45
+
46
+ function gmt.__index(t,name)
47
+ local found = modules[name]
48
+ -- either true, or the name of the module containing this class.
49
+ -- either way, we load the required module and make it globally available.
50
+ if found then
51
+ -- e..g pretty.dump causes pl.pretty to become available as 'pretty'
52
+ rawset(_G,name,require('pl.'..name))
53
+ return _G[name]
54
+ else
55
+ local res
56
+ if _hook then
57
+ res = _hook(t,name)
58
+ if res then return res end
59
+ end
60
+ if _prev_index then
61
+ return _prev_index(t,name)
62
+ end
63
+ end
64
+ end
65
+
66
+ setmetatable(_G,gmt)
67
+
68
+ if rawget(_G,'PENLIGHT_STRICT') then require 'pl.strict' end