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,104 @@
1
+ ----------------------------------------------------------------------
2
+ ----------------------------------------------------------------------
3
+ --
4
+ -- Base library extension
5
+ --
6
+ ----------------------------------------------------------------------
7
+ ----------------------------------------------------------------------
8
+
9
+ if not metalua then rawset(getfenv(), 'metalua', { }) end
10
+ metalua.version = "v-0.5"
11
+
12
+ if not rawpairs then
13
+ rawpairs, rawipairs, rawtype = pairs, ipairs, type
14
+ end
15
+
16
+ function pairs(x)
17
+ assert(type(x)=='table', 'pairs() expects a table')
18
+ local mt = getmetatable(x)
19
+ if mt then
20
+ local mtp = mt.__pairs
21
+ if mtp then return mtp(x) end
22
+ end
23
+ return rawpairs(x)
24
+ end
25
+
26
+ function ipairs(x)
27
+ assert(type(x)=='table', 'ipairs() expects a table')
28
+ local mt = getmetatable(x)
29
+ if mt then
30
+ local mti = mt.__ipairs
31
+ if mti then return mti(x) end
32
+ end
33
+ return rawipairs(x)
34
+ end
35
+
36
+ --[[
37
+ function type(x)
38
+ local mt = getmetatable(x)
39
+ if mt then
40
+ local mtt = mt.__type
41
+ if mtt then return mtt end
42
+ end
43
+ return rawtype(x)
44
+ end
45
+ ]]
46
+
47
+ function min (a, ...)
48
+ for n in values{...} do if n<a then a=n end end
49
+ return a
50
+ end
51
+
52
+ function max (a, ...)
53
+ for n in values{...} do if n>a then a=n end end
54
+ return a
55
+ end
56
+
57
+ function o (...)
58
+ local args = {...}
59
+ local function g (...)
60
+ local result = {...}
61
+ for i=#args, 1, -1 do result = {args[i](unpack(result))} end
62
+ return unpack (result)
63
+ end
64
+ return g
65
+ end
66
+
67
+ function id (...) return ... end
68
+ function const (k) return function () return k end end
69
+
70
+ function printf(...) return print(string.format(...)) end
71
+ function eprintf(...)
72
+ io.stderr:write(string.format(...).."\n")
73
+ end
74
+
75
+ function ivalues (x)
76
+ assert(type(x)=='table', 'ivalues() expects a table')
77
+ local i = 1
78
+ local function iterator ()
79
+ local r = x[i]; i=i+1; return r
80
+ end
81
+ return iterator
82
+ end
83
+
84
+
85
+ function values (x)
86
+ assert(type(x)=='table', 'values() expects a table')
87
+ local function iterator (state)
88
+ local it
89
+ state.content, it = next(state.list, state.content)
90
+ return it
91
+ end
92
+ return iterator, { list = x }
93
+ end
94
+
95
+ function keys (x)
96
+ assert(type(x)=='table', 'keys() expects a table')
97
+ local function iterator (state)
98
+ local it = next(state.list, state.content)
99
+ state.content = it
100
+ return it
101
+ end
102
+ return iterator, { list = x }
103
+ end
104
+
@@ -0,0 +1,204 @@
1
+ --------------------------------------------------------------------------------
2
+ -- Command Line OPTionS handler
3
+ -- ============================
4
+ --
5
+ -- This lib generates parsers for command-line options. It encourages
6
+ -- the following of some common idioms: I'm pissed off by Unix tools
7
+ -- which sometimes will let you concatenate single letters options,
8
+ -- sometimes won't, will prefix long name options with simple dashes
9
+ -- instead of doubles, etc.
10
+ --
11
+ --------------------------------------------------------------------------------
12
+
13
+ -- TODO:
14
+ -- * add a generic way to unparse options ('grab everything')
15
+ -- * doc
16
+ -- * when a short options that takes a param isn't the last element of a series
17
+ -- of shorts, take the remaining of the sequence as that param, e.g. -Ifoo
18
+ -- * let unset strings/numbers with +
19
+ -- * add a ++ long counterpart to +
20
+ --
21
+
22
+ -{ extension 'match' }
23
+
24
+ function clopts(cfg)
25
+ local short, long, param_func = { }, { }
26
+ local legal_types = table.transpose{
27
+ 'boolean','string','number','string*','number*','nil', '*' }
28
+
29
+ -----------------------------------------------------------------------------
30
+ -- Fill short and long name indexes, and check its validity
31
+ -----------------------------------------------------------------------------
32
+ for x in ivalues(cfg) do
33
+ local xtype = type(x)
34
+ if xtype=='table' then
35
+ if not x.type then x.type='nil' end
36
+ if not legal_types[x.type] then error ("Invalid type name "..x.type) end
37
+ if x.short then
38
+ if short[x.short] then error ("multiple definitions for option "..x.short)
39
+ else short[x.short] = x end
40
+ end
41
+ if x.long then
42
+ if long[x.long] then error ("multiple definitions for option "..x.long)
43
+ else long[x.long] = x end
44
+ end
45
+ elseif xtype=='function' then
46
+ if param_func then error "multiple parameters handler in clopts"
47
+ else param_func=x end
48
+ end
49
+ end
50
+
51
+ -----------------------------------------------------------------------------
52
+ -- Print a help message, summarizing how to use the command line
53
+ -----------------------------------------------------------------------------
54
+ local function print_usage(msg)
55
+ if msg then print(msg,'\n') end
56
+ print(cfg.usage or "Options:\n")
57
+ for x in values(cfg) do
58
+ if type(x) == 'table' then
59
+ local opts = { }
60
+ if x.type=='boolean' then
61
+ if x.short then opts = { '-'..x.short..'/+'..x.short } end
62
+ if x.long then table.insert (opts, '--'..x.long..'/++'..x.long) end
63
+ else
64
+ if x.short then opts = { '-'..x.short..' <'..x.type..'>' } end
65
+ if x.long then table.insert (opts, '--'..x.long..' <'..x.type..'>' ) end
66
+ end
67
+ printf(" %s: %s", table.concat(opts,', '), x.usage or '<undocumented>')
68
+ end
69
+ end
70
+ print''
71
+ end
72
+
73
+ -- Unless overridden, -h and --help display the help msg
74
+ local default_help = { action = | | print_usage() or os.exit(0);
75
+ long='help';short='h';type='nil'}
76
+ if not short.h then short.h = default_help end
77
+ if not long.help then long.help = default_help end
78
+
79
+ -----------------------------------------------------------------------------
80
+ -- Helper function for options parsing. Execute the attached action and/or
81
+ -- register the config in cfg.
82
+ --
83
+ -- * cfg is the table which registers the options
84
+ -- * dict the name->config entry hash table that describes options
85
+ -- * flag is the prefix '-', '--' or '+'
86
+ -- * opt is the option name
87
+ -- * i the current index in the arguments list
88
+ -- * args is the arguments list
89
+ -----------------------------------------------------------------------------
90
+ local function actionate(cfg, dict, flag, opt, i, args)
91
+ local entry = dict[opt]
92
+ if not entry then print_usage ("invalid option "..flag..opt); return false; end
93
+ local etype, name = entry.type, entry.name or entry.long or entry.short
94
+ match etype with
95
+ | 'string' | 'number' | 'string*' | 'number*' ->
96
+ if flag=='+' or flag=='++' then
97
+ print_usage ("flag "..flag.." is reserved for boolean options, not for "..opt)
98
+ return false
99
+ end
100
+ local arg = args[i+1]
101
+ if not arg then
102
+ print_usage ("missing parameter for option "..flag..opt)
103
+ return false
104
+ end
105
+ if etype:strmatch '^number' then
106
+ arg = tonumber(arg)
107
+ if not arg then
108
+ print_usage ("option "..flag..opt.." expects a number argument")
109
+ end
110
+ end
111
+ if etype:strmatch '%*$' then
112
+ if not cfg[name] then cfg[name]={ } end
113
+ table.insert(cfg[name], arg)
114
+ else cfg[name] = arg end
115
+ if entry.action then entry.action(arg) end
116
+ return i+2
117
+ | 'boolean' ->
118
+ local arg = flag=='-' or flag=='--'
119
+ cfg[name] = arg
120
+ if entry.action then entry.action(arg) end
121
+ return i+1
122
+ | 'nil' ->
123
+ cfg[name] = true;
124
+ if entry.action then entry.action() end
125
+ return i+1
126
+ | '*' ->
127
+ local arg = table.isub(args, i+1, #args)
128
+ cfg[name] = arg
129
+ if entry.action then entry.action(arg) end
130
+ return #args+1
131
+ | _ -> assert( false, 'undetected bad type for clopts action')
132
+ end
133
+ end
134
+
135
+ -----------------------------------------------------------------------------
136
+ -- Parse a list of commands: the resulting function
137
+ -----------------------------------------------------------------------------
138
+ local function parse(...)
139
+ local cfg = { }
140
+ if not ... then return cfg end
141
+ local args = type(...)=='table' and ... or {...}
142
+ local i, i_max = 1, #args
143
+ while i <= i_max do
144
+ local arg, flag, opt, opts = args[i]
145
+ --printf('beginning of loop: i=%i/%i, arg=%q', i, i_max, arg)
146
+ if arg=='-' then
147
+ i=actionate (cfg, short, '-', '', i, args)
148
+ -{ `Goto 'continue' }
149
+ end
150
+
151
+ -----------------------------------------------------------------------
152
+ -- double dash option
153
+ -----------------------------------------------------------------------
154
+ flag, opt = arg:strmatch "^(%-%-)(.*)"
155
+ if opt then
156
+ i=actionate (cfg, long, flag, opt, i, args)
157
+ -{ `Goto 'continue' }
158
+ end
159
+
160
+ -----------------------------------------------------------------------
161
+ -- double plus option
162
+ -----------------------------------------------------------------------
163
+ flag, opt = arg:strmatch "^(%+%+)(.*)"
164
+ if opt then
165
+ i=actionate (cfg, long, flag, opt, i, args)
166
+ -{ `Goto 'continue' }
167
+ end
168
+
169
+ -----------------------------------------------------------------------
170
+ -- single plus or single dash series of short options
171
+ -----------------------------------------------------------------------
172
+ flag, opts = arg:strmatch "^([+-])(.+)"
173
+ if opts then
174
+ local j_max, i2 = opts:len()
175
+ for j = 1, j_max do
176
+ opt = opts:sub(j,j)
177
+ --printf ('parsing short opt %q', opt)
178
+ i2 = actionate (cfg, short, flag, opt, i, args)
179
+ if i2 ~= i+1 and j < j_max then
180
+ error ('short option '..opt..' needs a param of type '..short[opt])
181
+ end
182
+ end
183
+ i=i2
184
+ -{ `Goto 'continue' }
185
+ end
186
+
187
+ -----------------------------------------------------------------------
188
+ -- handler for non-option parameter
189
+ -----------------------------------------------------------------------
190
+ if param_func then param_func(args[i]) end
191
+ if cfg.params then table.insert(cfg.params, args[i])
192
+ else cfg.params = { args[i] } end
193
+ i=i+1
194
+
195
+ -{ `Label 'continue' }
196
+ if not i then return false end
197
+ end -- </while>
198
+ return cfg
199
+ end
200
+
201
+ return parse
202
+ end
203
+
204
+
@@ -0,0 +1,3 @@
1
+ require 'metalua.runtime'
2
+ require 'metalua.mlc'
3
+ require 'metalua.package2'
@@ -0,0 +1,24 @@
1
+ -- TODO: support modules as macros?
2
+ -- does it make sense to store a constant AST as a macro?
3
+
4
+ -{ extension 'match' }
5
+
6
+ dollar = rawget(getfenv(), 'dollar') or { }
7
+
8
+ local function dollar_builder(call)
9
+ match call with
10
+ | `Call{ `Id{name}, ... } -> return dollar[name](select(2, unpack(call)))
11
+ | `Id{name} ->
12
+ local m = dollar[name]
13
+ match type(m) with
14
+ | 'function' -> return m()
15
+ | 'table' -> return m
16
+ | 'nil' -> error "No such macro registered"
17
+ | t -> error ("Invalid macro type "..t)
18
+ end
19
+ | _ -> error "Invalid $macro, '$' should be followed by an identifier or function call"
20
+ end
21
+ end
22
+
23
+ mlp.expr.prefix:add{ '$', prec = 100, builder = |_, x| dollar_builder(x) }
24
+ mlp.stat:add{ '$', mlp.expr, builder = |x| dollar_builder(x[1]) }
@@ -0,0 +1,216 @@
1
+ require 'metalua.walk.id'
2
+ -{ extension 'log' }
3
+
4
+ --------------------------------------------------------------------------------
5
+ --
6
+ -- H params:
7
+ -- * H.alpha is the `Local{ } (or `Set{ }) statement which will
8
+ -- receive the alpha-conversions required to restore the free
9
+ -- variables of the transformed term. For instance,
10
+ -- H+{print(1)} will be transformed into +{.1.X.print(1)},
11
+ -- and alpha will contain +{local -{`Id '.1.X.print} = print }.
12
+ -- alpha is reused and augmented by successive calls to H().
13
+ --
14
+ -- * H.side contains 'inside', 'outside', 'both' or nil (equivalent to
15
+ -- 'both'). It indicates the kind of hygienization that's to be
16
+ -- performed.
17
+ --
18
+ -- * H.keep contain a set of free variable names which must not be
19
+ -- renamed.
20
+ --
21
+ -- * H.kind is the kind of walker that must be used ('expr', 'stat',
22
+ -- 'block'...) and defaults to 'guess'.
23
+ --
24
+ -- * H:set (field, val) sets a field in H and returns H, so that calls
25
+ -- can be chained, e.g.:
26
+ -- > H:set(keep, {'print'}):set('side', outside)+{print(x)}
27
+ --
28
+ -- * H:reset(field) sets a field to nil, and returns the value of that
29
+ -- field prior to nilification.
30
+ --------------------------------------------------------------------------------
31
+
32
+ H = { } --setmetatable(H, H)
33
+ H.__index=H
34
+ H.template = { alpha = { } }
35
+
36
+ --------------------------------------------------------------------------------
37
+ --
38
+ --------------------------------------------------------------------------------
39
+ function H:new(x)
40
+ local instance = table.deep_copy(self.template)
41
+ if x then instance <- x end
42
+ setmetatable(instance, self)
43
+ return instance
44
+ end
45
+
46
+ --------------------------------------------------------------------------------
47
+ --
48
+ --------------------------------------------------------------------------------
49
+ function H:__call (ast)
50
+ assert (type(ast)=='table', "H expects an AST")
51
+
52
+ local local_renames -- only set if inside hygienization's required
53
+
54
+ -----------------------------------------------------------------------------
55
+ -- kind of hygienization(s) to perform: h_inseide and/or h_outside
56
+ -----------------------------------------------------------------------------
57
+ local h_inside, h_outside do
58
+ local side = self.side or 'both'
59
+ h_inside = side=='inside' or side=='both'
60
+ h_outside = side=='outside' or side=='both'
61
+ end
62
+
63
+ -----------------------------------------------------------------------------
64
+ -- Initialize self.keep:
65
+ -- self.keep is a dictionary of free var names to be protected from capture
66
+ -----------------------------------------------------------------------------
67
+ do
68
+ local k = self.keep
69
+ -- If there's no self.keep, that's an empty dictionary
70
+ if not k then k = { }; self.keep = k
71
+ -- If it's a string, consider it as a single-element dictionary
72
+ elseif type(k)=='string' then k = { [k] = true }; self.keep=k
73
+ -- If there's a list-part in self.keep, transpose it:
74
+ else for i, v in ipairs(k) do k[v], k[i] = true, nil end end
75
+ end
76
+
77
+ -----------------------------------------------------------------------------
78
+ -- Config skeleton for the id walker
79
+ -----------------------------------------------------------------------------
80
+ local cfg = { expr = { }, stat = { }, id = { } }
81
+
82
+ -----------------------------------------------------------------------------
83
+ -- Outside hygienization: all free variables are renamed to fresh ones,
84
+ -- and self.alpha is updated to contain the assignments required to keep
85
+ -- the AST's semantics.
86
+ -----------------------------------------------------------------------------
87
+ if h_outside then
88
+ local alpha = self.alpha
89
+
90
+ -- free_vars is an old_name -> new_name dictionary computed from alpha:
91
+ -- self.alpha is not an efficient representation for searching.
92
+ if not alpha then alpha = { }; self.alpha = alpha end
93
+ -- FIXME: alpha should only be overridden when there actually are some
94
+ -- globals renamed.
95
+ if #alpha==0 then alpha <- `Local{ { }, { } } end
96
+ local new, old = unpack(alpha)
97
+ local free_vars = { }
98
+
99
+ assert (#new==#old, "Invalid alpha list")
100
+ for i = 1, #new do
101
+ assert (old[i].tag=='Id' and #old[i]==1, "Invalid lhs in alpha list")
102
+ assert (new[i].tag=='Id' and #new[i]==1, "Invalid rhs in alpha list")
103
+ free_vars[old[i][1]] = new[i][1]
104
+ end
105
+
106
+ -- Rename free variables that are not supposed to be captured.
107
+ function cfg.id.free (id)
108
+ local old_name = id[1]
109
+ if self.keep[old_name] then return end
110
+ local new_name = free_vars[old_name]
111
+ if not new_name then
112
+ new_name = mlp.gensym('X.'..old_name)[1]
113
+ free_vars[old_name] = new_name
114
+ table.insert(alpha[1], `Id{new_name})
115
+ table.insert(alpha[2], `Id{old_name})
116
+ end
117
+ id[1] = new_name
118
+ end
119
+ end
120
+
121
+ -----------------------------------------------------------------------------
122
+ -- Inside hygienization: rename all local variables and their ocurrences.
123
+ -----------------------------------------------------------------------------
124
+ if h_inside then
125
+
126
+ ----------------------------------------------------------------
127
+ -- Renamings can't performed on-the-spot, as it would
128
+ -- transiently break the link between binders and bound vars,
129
+ -- thus preventing the algo to work. They're therefore stored
130
+ -- in local_renames, and performed after the whole tree has been
131
+ -- walked.
132
+ ----------------------------------------------------------------
133
+
134
+ local_renames = { } -- `Id{ old_name } -> new_name
135
+ local bound_vars = { } -- binding statement -> old_name -> new_name
136
+
137
+ ----------------------------------------------------------------
138
+ -- Give a new name to newly created local vars, store it in
139
+ -- bound_vars
140
+ ----------------------------------------------------------------
141
+ function cfg.binder (id, binder)
142
+ if id.h_boundary then return end
143
+ local old_name = id[1]
144
+ local binder_table = bound_vars[binder]
145
+ if not binder_table then
146
+ binder_table = { }
147
+ bound_vars[binder] = binder_table
148
+ end
149
+ local new_name = mlp.gensym('L.'..old_name)[1]
150
+ binder_table[old_name] = new_name
151
+ local_renames[id] = new_name
152
+ end
153
+
154
+ ----------------------------------------------------------------
155
+ -- List a bound var for renaming. The new name has already been
156
+ -- chosen and put in bound_vars by cfg.binder().
157
+ ----------------------------------------------------------------
158
+ function cfg.id.bound (id, binder)
159
+ if id.h_boundary then return end
160
+ local old_name = id[1]
161
+ local new_name = bound_vars[binder][old_name]
162
+ --.log(bound_vars[binder])
163
+ assert(new_name, "no alpha conversion for a bound var?!")
164
+ local_renames[id] = new_name
165
+ end
166
+ end
167
+
168
+ -----------------------------------------------------------------------------
169
+ -- Don't traverse subtrees marked by '!'
170
+ -----------------------------------------------------------------------------
171
+ local cut_boundaries = |x| x.h_boundary and 'break' or nil
172
+ cfg.stat.down, cfg.expr.down = cut_boundaries, cut_boundaries
173
+
174
+ -----------------------------------------------------------------------------
175
+ -- The walker's config is ready, let's go.
176
+ -- After that, ids are renamed in ast, free_vars and bound_vars are set.
177
+ -----------------------------------------------------------------------------
178
+ walk_id [self.kind or 'guess'] (cfg, ast)
179
+
180
+ if h_inside then -- Apply local name changes
181
+ for id, new_name in pairs(local_renames) do id[1] = new_name end
182
+ end
183
+
184
+ return ast
185
+ end
186
+
187
+ --------------------------------------------------------------------------------
188
+ -- Return H to allow call chainings
189
+ --------------------------------------------------------------------------------
190
+ function H:set(field, val)
191
+ local t = type(field)
192
+ if t=='string' then self[field]=val
193
+ elseif t=='table' then self <- field
194
+ else error("Can't set H, field arg can't be of type "..t) end
195
+ return self
196
+ end
197
+
198
+ --------------------------------------------------------------------------------
199
+ -- Return the value before reset
200
+ --------------------------------------------------------------------------------
201
+ function H:reset(field)
202
+ if type(field) ~= 'string' then error "Can only reset H string fields" end
203
+ local r = H[field]
204
+ H[field] = nil
205
+ return r
206
+ end
207
+
208
+ -- local function commit_locals_to_chunk(x)
209
+ -- local alpha = H:reset 'alpha'
210
+ -- --$log ('commit locals', x, alpha, 'nohash')
211
+ -- if not alpha or not alpha[1][1] then return end
212
+ -- if not x then return alpha end
213
+ -- table.insert(x, 1, alpha)
214
+ -- end
215
+
216
+ -- mlp.chunk.transformers:add (commit_locals_to_chunk)