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,60 @@
1
+ -- See Copyright Notice in license.html
2
+ -- $Id: lom.lua,v 1.6 2005/06/09 19:18:40 tuler Exp $
3
+
4
+ require "lxp"
5
+
6
+ local tinsert, tremove, getn = table.insert, table.remove, table.getn
7
+ local assert, type, print = assert, type, print
8
+ local lxp = lxp
9
+
10
+ module ("lxp.lom")
11
+
12
+ local function starttag (p, tag, attr)
13
+ local stack = p:getcallbacks().stack
14
+ local newelement = {tag = tag, attr = attr}
15
+ tinsert(stack, newelement)
16
+ end
17
+
18
+ local function endtag (p, tag)
19
+ local stack = p:getcallbacks().stack
20
+ local element = tremove(stack)
21
+ assert(element.tag == tag)
22
+ local level = getn(stack)
23
+ tinsert(stack[level], element)
24
+ end
25
+
26
+ local function text (p, txt)
27
+ local stack = p:getcallbacks().stack
28
+ local element = stack[getn(stack)]
29
+ local n = getn(element)
30
+ if type(element[n]) == "string" then
31
+ element[n] = element[n] .. txt
32
+ else
33
+ tinsert(element, txt)
34
+ end
35
+ end
36
+
37
+ function parse (o)
38
+ local c = { StartElement = starttag,
39
+ EndElement = endtag,
40
+ CharacterData = text,
41
+ _nonstrict = true,
42
+ stack = {{}}
43
+ }
44
+ local p = lxp.new(c)
45
+ local status, err
46
+ if type(o) == "string" then
47
+ status, err = p:parse(o)
48
+ if not status then return nil, err end
49
+ else
50
+ for l in o do
51
+ status, err = p:parse(l)
52
+ if not status then return nil, err end
53
+ end
54
+ end
55
+ status, err = p:parse()
56
+ if not status then return nil, err end
57
+ p:close()
58
+ return c.stack[1][1]
59
+ end
60
+
@@ -0,0 +1,27 @@
1
+ --- Additions to the math module.
2
+ module ("math", package.seeall)
3
+
4
+
5
+ local _floor = floor
6
+
7
+ --- Extend <code>math.floor</code> to take the number of decimal places.
8
+ -- @param n number
9
+ -- @param p number of decimal places to truncate to (default: 0)
10
+ -- @return <code>n</code> truncated to <code>p</code> decimal places
11
+ function floor (n, p)
12
+ if p and p ~= 0 then
13
+ local e = 10 ^ p
14
+ return _floor (n * e) / e
15
+ else
16
+ return _floor (n)
17
+ end
18
+ end
19
+
20
+ --- Round a number to a given number of decimal places
21
+ -- @param n number
22
+ -- @param p number of decimal places to round to (default: 0)
23
+ -- @return <code>n</code> rounded to <code>p</code> decimal places
24
+ function round (n, p)
25
+ local e = 10 ^ (p or 0)
26
+ return _floor (n * e + 0.5) / e
27
+ end
@@ -0,0 +1,53 @@
1
+ --- mbox parser.
2
+ -- Based on code by Diego Nahab.
3
+ module ("mbox", package.seeall)
4
+
5
+ local function headers (s)
6
+ local header = {}
7
+ s = "\n" .. s .. "$$$:\n"
8
+ local i, j = 1, 1
9
+ while true do
10
+ j = string.find (s, "\n%S-:", i + 1)
11
+ if not j then
12
+ break
13
+ end
14
+ local _, _, name, val = string.find (string.sub (s, i + 1, j - 1),
15
+ "(%S-):(.*)")
16
+ val = string.gsub (val or "", "\r\n", "\n")
17
+ val = string.gsub (val, "\n%s*", " ")
18
+ name = string.lower (name)
19
+ if header[name] then
20
+ header[name] = header[name] .. ", " .. val
21
+ else
22
+ header[name] = val
23
+ end
24
+ i, j = j, i
25
+ end
26
+ header["$$$"] = nil
27
+ return header
28
+ end
29
+
30
+ local function message (s)
31
+ s = string.gsub (s, "^.-\n", "")
32
+ local _, s, body
33
+ _, _, s, body = string.find(s, "^(.-\n)\n(.*)")
34
+ return {header = headers (s or ""), body = body or ""}
35
+ end
36
+
37
+ --- Parse a mailbox into messages.
38
+ -- @param s mailbox as a string
39
+ -- @return list of messages, each of form <code>{header = {...}, body = "..."}</code>
40
+ function parse (s)
41
+ local mbox = {}
42
+ s = "\n" .. s .. "\nFrom "
43
+ local i, j = 1, 1
44
+ while true do
45
+ j = string.find (s, "\nFrom ", i + 1)
46
+ if not j then
47
+ break
48
+ end
49
+ table.insert (mbox, message (string.sub (s, i + 1, j - 1)))
50
+ i, j = j, i
51
+ end
52
+ return mbox
53
+ end
@@ -0,0 +1,19 @@
1
+ ----------------------------------------------------------------------------
2
+ -- $Id: md5.lua,v 1.4 2006/08/21 19:24:21 carregal Exp $
3
+ ----------------------------------------------------------------------------
4
+
5
+ local core = require"md5.core"
6
+ local string = require"string"
7
+
8
+ module ("md5")
9
+
10
+ ----------------------------------------------------------------------------
11
+ -- @param k String with original message.
12
+ -- @return String with the md5 hash value converted to hexadecimal digits
13
+
14
+ function sumhexa (k)
15
+ k = core.sum(k)
16
+ return (string.gsub(k, ".", function (c)
17
+ return string.format("%02x", string.byte(c))
18
+ end))
19
+ end
@@ -0,0 +1,553 @@
1
+ -{ extension 'match' }
2
+
3
+ local M = { }
4
+ M.__index = M
5
+
6
+ ast_to_string = |x| M.run(x)
7
+
8
+ --------------------------------------------------------------------------------
9
+ -- Instanciate a new AST->source synthetizer
10
+ --------------------------------------------------------------------------------
11
+ function M.new ()
12
+ local self = {
13
+ _acc = { }, -- Accumulates pieces of source as strings
14
+ current_indent = 0, -- Current level of line indentation
15
+ indent_step = " " -- Indentation symbol, normally spaces or '\t'
16
+ }
17
+ return setmetatable (self, M)
18
+ end
19
+
20
+ --------------------------------------------------------------------------------
21
+ -- Run a synthetizer on the `ast' arg and return the source as a string.
22
+ -- Can also be used as a static method `M.run (ast)'; in this case,
23
+ -- a temporary Metizer is instanciated on the fly.
24
+ --------------------------------------------------------------------------------
25
+ function M:run (ast)
26
+ if not ast then
27
+ self, ast = M.new(), self
28
+ end
29
+ self._acc = { }
30
+ self:node (ast)
31
+ return table.concat (self._acc)
32
+ end
33
+
34
+ --------------------------------------------------------------------------------
35
+ -- Accumulate a piece of source file in the synthetizer.
36
+ --------------------------------------------------------------------------------
37
+ function M:acc (x)
38
+ if x then table.insert (self._acc, x) end
39
+ end
40
+
41
+ --------------------------------------------------------------------------------
42
+ -- Accumulate an indented newline.
43
+ -- Jumps an extra line if indentation is 0, so that
44
+ -- toplevel definitions are separated by an extra empty line.
45
+ --------------------------------------------------------------------------------
46
+ function M:nl ()
47
+ if self.current_indent == 0 then self:acc "\n" end
48
+ self:acc ("\n" .. self.indent_step:rep (self.current_indent))
49
+ end
50
+
51
+ --------------------------------------------------------------------------------
52
+ -- Increase indentation and accumulate a new line.
53
+ --------------------------------------------------------------------------------
54
+ function M:nlindent ()
55
+ self.current_indent = self.current_indent + 1
56
+ self:nl ()
57
+ end
58
+
59
+ --------------------------------------------------------------------------------
60
+ -- Decrease indentation and accumulate a new line.
61
+ --------------------------------------------------------------------------------
62
+ function M:nldedent ()
63
+ self.current_indent = self.current_indent - 1
64
+ self:acc ("\n" .. self.indent_step:rep (self.current_indent))
65
+ end
66
+
67
+ --------------------------------------------------------------------------------
68
+ -- Keywords, which are illegal as identifiers.
69
+ --------------------------------------------------------------------------------
70
+ local keywords = table.transpose {
71
+ "and", "break", "do", "else", "elseif",
72
+ "end", "false", "for", "function", "if",
73
+ "in", "local", "nil", "not", "or",
74
+ "repeat", "return", "then", "true", "until",
75
+ "while" }
76
+
77
+ --------------------------------------------------------------------------------
78
+ -- Return true iff string `id' is a legal identifier name.
79
+ --------------------------------------------------------------------------------
80
+ local function is_ident (id)
81
+ return id:strmatch "^[%a_][%w_]*$" and not keywords[id]
82
+ end
83
+
84
+ --------------------------------------------------------------------------------
85
+ -- Return true iff ast represents a legal function name for
86
+ -- syntax sugar ``function foo.bar.gnat() ... end'':
87
+ -- a series of nested string indexes, with an identifier as
88
+ -- the innermost node.
89
+ --------------------------------------------------------------------------------
90
+ local function is_idx_stack (ast)
91
+ match ast with
92
+ | `Id{ _ } -> return true
93
+ | `Index{ left, `String{ _ } } -> return is_idx_stack (left)
94
+ | _ -> return false
95
+ end
96
+ end
97
+
98
+ --------------------------------------------------------------------------------
99
+ -- Operator precedences, in increasing order.
100
+ -- This is not directly used, it's used to generate op_prec below.
101
+ --------------------------------------------------------------------------------
102
+ local op_preprec = {
103
+ { "or", "and" },
104
+ { "lt", "le", "eq", "ne" },
105
+ { "concat" },
106
+ { "add", "sub" },
107
+ { "mul", "div", "mod" },
108
+ { "unary", "not", "len" },
109
+ { "pow" },
110
+ { "index" } }
111
+
112
+ --------------------------------------------------------------------------------
113
+ -- operator --> precedence table, generated from op_preprec.
114
+ --------------------------------------------------------------------------------
115
+ local op_prec = { }
116
+
117
+ for prec, ops in ipairs (op_preprec) do
118
+ for op in ivalues (ops) do
119
+ op_prec[op] = prec
120
+ end
121
+ end
122
+
123
+ --------------------------------------------------------------------------------
124
+ -- operator --> source representation.
125
+ --------------------------------------------------------------------------------
126
+ local op_symbol = {
127
+ add = " + ", sub = " - ", mul = " * ",
128
+ div = " / ", mod = " % ", pow = " ^ ",
129
+ concat = " .. ", eq = " == ", ne = " ~= ",
130
+ lt = " < ", le = " <= ", ["and"] = " and ",
131
+ ["or"] = " or ", ["not"] = "not ", len = "# " }
132
+
133
+ --------------------------------------------------------------------------------
134
+ -- Accumulate the source representation of AST `node' in
135
+ -- the synthetizer. Most of the work is done by delegating to
136
+ -- the method having the name of the AST tag.
137
+ -- If something can't be converted to normal sources, it's
138
+ -- instead dumped as a `-{ ... }' splice in the source accumulator.
139
+ --------------------------------------------------------------------------------
140
+ function M:node (node)
141
+ assert (self~=M and self._acc)
142
+ if not node.tag then -- tagless block.
143
+ self:list (node, self.nl)
144
+ else
145
+ local f = M[node.tag]
146
+ if type (f) == "function" then -- Delegate to tag method.
147
+ f (self, node, unpack (node))
148
+ elseif type (f) == "string" then -- tag string.
149
+ self:acc (f)
150
+ else -- No appropriate method, fall back to splice dumping.
151
+ -- This cannot happen in a plain Lua AST.
152
+ self:acc " -{ "
153
+ self:acc (table.tostring (node, "nohash"), 80)
154
+ self:acc " }"
155
+ end
156
+ end
157
+ end
158
+
159
+ --------------------------------------------------------------------------------
160
+ -- Convert every node in the AST list `list' passed as 1st arg.
161
+ -- `sep' is an optional separator to be accumulated between each list element,
162
+ -- it can be a string or a synth method.
163
+ -- `start' is an optional number (default == 1), indicating which is the
164
+ -- first element of list to be converted, so that we can skip the begining
165
+ -- of a list.
166
+ --------------------------------------------------------------------------------
167
+ function M:list (list, sep, start)
168
+ for i = start or 1, # list do
169
+ self:node (list[i])
170
+ if list[i + 1] then
171
+ if not sep then
172
+ elseif type (sep) == "function" then sep (self)
173
+ elseif type (sep) == "string" then self:acc (sep)
174
+ else error "Invalid list separator" end
175
+ end
176
+ end
177
+ end
178
+
179
+ --------------------------------------------------------------------------------
180
+ --
181
+ -- Tag methods.
182
+ -- ------------
183
+ --
184
+ -- Specific AST node dumping methods, associated to their node kinds
185
+ -- by their name, which is the corresponding AST tag.
186
+ -- synth:node() is in charge of delegating a node's treatment to the
187
+ -- appropriate tag method.
188
+ --
189
+ -- Such tag methods are called with the AST node as 1st arg.
190
+ -- As a convenience, the n node's children are passed as args #2 ... n+1.
191
+ --
192
+ -- There are several things that could be refactored into common subroutines
193
+ -- here: statement blocks dumping, function dumping...
194
+ -- However, given their small size and linear execution
195
+ -- (they basically perform series of :acc(), :node(), :list(),
196
+ -- :nl(), :nlindent() and :nldedent() calls), it seems more readable
197
+ -- to avoid multiplication of such tiny functions.
198
+ --
199
+ -- To make sense out of these, you need to know metalua's AST syntax, as
200
+ -- found in the reference manual or in metalua/doc/ast.txt.
201
+ --
202
+ --------------------------------------------------------------------------------
203
+
204
+ function M:Do (node)
205
+ self:acc "do"
206
+ self:nlindent ()
207
+ self:list (node, self.nl)
208
+ self:nldedent ()
209
+ self:acc "end"
210
+ end
211
+
212
+ function M:Set (node)
213
+ match node with
214
+ | `Set{ { `Index{ lhs, `String{ method } } },
215
+ { `Function{ { `Id "self", ... } == params, body } } }
216
+ if is_idx_stack (lhs) and is_ident (method) ->
217
+ -- ``function foo:bar(...) ... end'' --
218
+ self:acc "function "
219
+ self:node (lhs)
220
+ self:acc ":"
221
+ self:acc (method)
222
+ self:acc " ("
223
+ self:list (params, ", ", 2)
224
+ self:acc ")"
225
+ self:nlindent ()
226
+ self:list (body, self.nl)
227
+ self:nldedent ()
228
+ self:acc "end"
229
+
230
+ | `Set{ { lhs }, { `Function{ params, body } } } if is_idx_stack (lhs) ->
231
+ -- ``function foo(...) ... end'' --
232
+ self:acc "function "
233
+ self:node (lhs)
234
+ self:acc " ("
235
+ self:list (params, ", ")
236
+ self:acc ")"
237
+ self:nlindent ()
238
+ self:list (body, self.nl)
239
+ self:nldedent ()
240
+ self:acc "end"
241
+
242
+ | `Set{ { `Id{ lhs1name } == lhs1, ... } == lhs, rhs }
243
+ if not is_ident (lhs1name) ->
244
+ -- ``foo, ... = ...'' when foo is *not* a valid identifier.
245
+ -- In that case, the spliced 1st variable must get parentheses,
246
+ -- to be distinguished from a statement splice.
247
+ -- This cannot happen in a plain Lua AST.
248
+ self:acc "("
249
+ self:node (lhs1)
250
+ self:acc ")"
251
+ if lhs[2] then -- more than one lhs variable
252
+ self:acc ", "
253
+ self:list (lhs, ", ", 2)
254
+ end
255
+ self:acc " = "
256
+ self:list (rhs, ", ")
257
+
258
+ | `Set{ lhs, rhs } ->
259
+ -- ``... = ...'', no syntax sugar --
260
+ self:list (lhs, ", ")
261
+ self:acc " = "
262
+ self:list (rhs, ", ")
263
+ end
264
+ end
265
+
266
+ function M:While (node, cond, body)
267
+ self:acc "while "
268
+ self:node (cond)
269
+ self:acc " do"
270
+ self:nlindent ()
271
+ self:list (body, self.nl)
272
+ self:nldedent ()
273
+ self:acc "end"
274
+ end
275
+
276
+ function M:Repeat (node, body, cond)
277
+ self:acc "repeat"
278
+ self:nlindent ()
279
+ self:list (body, self.nl)
280
+ self:nldedent ()
281
+ self:acc "until "
282
+ self:node (cond)
283
+ end
284
+
285
+ function M:If (node)
286
+ for i = 1, #node-1, 2 do
287
+ -- for each ``if/then'' and ``elseif/then'' pair --
288
+ local cond, body = node[i], node[i+1]
289
+ self:acc (i==1 and "if " or "elseif ")
290
+ self:node (cond)
291
+ self:acc " then"
292
+ self:nlindent ()
293
+ self:list (body, self.nl)
294
+ self:nldedent ()
295
+ end
296
+ -- odd number of children --> last one is an `else' clause --
297
+ if #node%2 == 1 then
298
+ self:acc "else"
299
+ self:nlindent ()
300
+ self:list (node[#node], self.nl)
301
+ self:nldedent ()
302
+ end
303
+ self:acc "end"
304
+ end
305
+
306
+ function M:Fornum (node, var, first, last)
307
+ local body = node[#node]
308
+ self:acc "for "
309
+ self:node (var)
310
+ self:acc " = "
311
+ self:node (first)
312
+ self:acc ", "
313
+ self:node (last)
314
+ if #node==5 then -- 5 children --> child #4 is a step increment.
315
+ self:acc ", "
316
+ self:node (node[4])
317
+ end
318
+ self:acc " do"
319
+ self:nlindent ()
320
+ self:list (body, self.nl)
321
+ self:nldedent ()
322
+ self:acc "end"
323
+ end
324
+
325
+ function M:Forin (node, vars, generators, body)
326
+ self:acc "for "
327
+ self:list (vars, ", ")
328
+ self:acc " in "
329
+ self:list (generators, ", ")
330
+ self:acc " do"
331
+ self:nlindent ()
332
+ self:list (body, self.nl)
333
+ self:nldedent ()
334
+ self:acc "end"
335
+ end
336
+
337
+ function M:Local (node, lhs, rhs)
338
+ if next (lhs) then
339
+ self:acc "local "
340
+ self:list (lhs, ", ")
341
+ if rhs[1] then
342
+ self:acc " = "
343
+ self:list (rhs, ", ")
344
+ end
345
+ else -- Can't create a local statement with 0 variables in plain Lua
346
+ self:acc (table.tostring (node, 'nohash', 80))
347
+ end
348
+ end
349
+
350
+ function M:Localrec (node, lhs, rhs)
351
+ match node with
352
+ | `Localrec{ { `Id{name} }, { `Function{ params, body } } }
353
+ if is_ident (name) ->
354
+ -- ``local function name() ... end'' --
355
+ self:acc "local function "
356
+ self:acc (name)
357
+ self:acc " ("
358
+ self:list (params, ", ")
359
+ self:acc ")"
360
+ self:nlindent ()
361
+ self:list (body, self.nl)
362
+ self:nldedent ()
363
+ self:acc "end"
364
+
365
+ | _ ->
366
+ -- Other localrec are unprintable ==> splice them --
367
+ -- This cannot happen in a plain Lua AST. --
368
+ self:acc "-{ "
369
+ self:acc (table.tostring (node, 'nohash', 80))
370
+ self:acc " }"
371
+ end
372
+ end
373
+
374
+ function M:Call (node, f)
375
+ -- single string or table literal arg ==> no need for parentheses. --
376
+ local parens
377
+ match node with
378
+ | `Call{ _, `String{_} }
379
+ | `Call{ _, `Table{...}} -> parens = false
380
+ | _ -> parens = true
381
+ end
382
+ self:node (f)
383
+ self:acc (parens and " (" or " ")
384
+ self:list (node, ", ", 2) -- skip `f'.
385
+ self:acc (parens and ")")
386
+ end
387
+
388
+ function M:Invoke (node, f, method)
389
+ -- single string or table literal arg ==> no need for parentheses. --
390
+ local parens
391
+ match node with
392
+ | `Invoke{ _, _, `String{_} }
393
+ | `Invoke{ _, _, `Table{...}} -> parens = false
394
+ | _ -> parens = true
395
+ end
396
+ self:node (f)
397
+ self:acc ":"
398
+ self:acc (method[1])
399
+ self:acc (parens and " (" or " ")
400
+ self:list (node, ", ", 3) -- Skip args #1 and #2, object and method name.
401
+ self:acc (parens and ")")
402
+ end
403
+
404
+ function M:Return (node)
405
+ self:acc "return "
406
+ self:list (node, ", ")
407
+ end
408
+
409
+ M.Break = "break"
410
+ M.Nil = "nil"
411
+ M.False = "false"
412
+ M.True = "true"
413
+ M.Dots = "..."
414
+
415
+ function M:Number (node, n)
416
+ self:acc (tostring (n))
417
+ end
418
+
419
+ function M:String (node, str)
420
+ -- format "%q" prints '\n' in an umpractical way IMO,
421
+ -- so this is fixed with the :gsub( ) call.
422
+ self:acc (string.format ("%q", str):gsub ("\\\n", "\\n"))
423
+ end
424
+
425
+ function M:Function (node, params, body)
426
+ self:acc "function ("
427
+ self:list (params, ", ")
428
+ self:acc ")"
429
+ self:nlindent ()
430
+ self:list (body, self.nl)
431
+ self:nldedent ()
432
+ self:acc "end"
433
+ end
434
+
435
+ function M:Table (node)
436
+ if not node[1] then self:acc "{ }" else
437
+ self:acc "{"
438
+ if #node > 1 then self:nlindent () else self:acc " " end
439
+ for i, elem in ipairs (node) do
440
+ match elem with
441
+ | `Pair{ `String{ key }, value } if is_ident (key) ->
442
+ -- ``key = value''. --
443
+ self:acc (key)
444
+ self:acc " = "
445
+ self:node (value)
446
+
447
+ | `Pair{ key, value } ->
448
+ -- ``[key] = value''. --
449
+ self:acc "["
450
+ self:node (key)
451
+ self:acc "] = "
452
+ self:node (value)
453
+
454
+ | _ ->
455
+ -- ``value''. --
456
+ self:node (elem)
457
+ end
458
+ if node [i+1] then
459
+ self:acc ","
460
+ self:nl ()
461
+ end
462
+ end
463
+ if #node > 1 then self:nldedent () else self:acc " " end
464
+ self:acc "}"
465
+ end
466
+ end
467
+
468
+ function M:Op (node, op, a, b)
469
+ -- Transform ``not (a == b)'' into ``a ~= b''. --
470
+ match node with
471
+ | `Op{ "not", `Op{ "eq", _a, _b } }
472
+ | `Op{ "not", `Paren{ `Op{ "eq", _a, _b } } } ->
473
+ op, a, b = "ne", _a, _b
474
+ | _ ->
475
+ end
476
+
477
+ if b then -- binary operator.
478
+ local left_paren, right_paren
479
+ match a with
480
+ | `Op{ op_a, ...} if op_prec[op] >= op_prec[op_a] -> left_paren = true
481
+ | _ -> left_paren = false
482
+ end
483
+
484
+ match b with -- FIXME: might not work with right assoc operators ^ and ..
485
+ | `Op{ op_b, ...} if op_prec[op] >= op_prec[op_b] -> right_paren = true
486
+ | _ -> right_paren = false
487
+ end
488
+
489
+ self:acc (left_paren and "(")
490
+ self:node (a)
491
+ self:acc (left_paren and ")")
492
+
493
+ self:acc (op_symbol [op])
494
+
495
+ self:acc (right_paren and "(")
496
+ self:node (b)
497
+ self:acc (right_paren and ")")
498
+
499
+ else -- unary operator.
500
+ local paren
501
+ match a with
502
+ | `Op{ op_a, ... } if op_prec[op] >= op_prec[op_a] -> paren = true
503
+ | _ -> paren = false
504
+ end
505
+ self:acc (op_symbol[op])
506
+ self:acc (paren and "(")
507
+ self:node (a)
508
+ self:acc (paren and ")")
509
+ end
510
+ end
511
+
512
+ function M:Paren (node, content)
513
+ self:acc "("
514
+ self:node (content)
515
+ self:acc ")"
516
+ end
517
+
518
+ function M:Index (node, table, key)
519
+ local paren_table
520
+ -- Check precedence, see if parens are needed around the table --
521
+ match table with
522
+ | `Op{ op, ... } if op_prec[op] < op_prec.index -> paren_table = true
523
+ | _ -> paren_table = false
524
+ end
525
+
526
+ self:acc (paren_table and "(")
527
+ self:node (table)
528
+ self:acc (paren_table and ")")
529
+
530
+ match key with
531
+ | `String{ field } if is_ident (field) ->
532
+ -- ``table.key''. --
533
+ self:acc "."
534
+ self:acc (field)
535
+ | _ ->
536
+ -- ``table [key]''. --
537
+ self:acc "["
538
+ self:node (key)
539
+ self:acc "]"
540
+ end
541
+ end
542
+
543
+ function M:Id (node, name)
544
+ if is_ident (name) then
545
+ self:acc (name)
546
+ else -- Unprintable identifier, fall back to splice representation.
547
+ -- This cannot happen in a plain Lua AST.
548
+ self:acc "-{`Id "
549
+ self:String (node, name)
550
+ self:acc "}"
551
+ end
552
+ end
553
+