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,84 @@
1
+ --- Additions to the debug module
2
+ module ("debug", package.seeall)
3
+
4
+ require "debug_init"
5
+ require "io_ext"
6
+ require "string_ext"
7
+
8
+ --- To activate debugging set _DEBUG either to any true value
9
+ -- (equivalent to {level = 1}), or as documented below.
10
+ -- @class table
11
+ -- @name _DEBUG
12
+ -- @field level debugging level
13
+ -- @field call do call trace debugging
14
+ -- @field std do standard library debugging (run examples & test code)
15
+
16
+
17
+ --- Print a debugging message
18
+ -- @param n debugging level, defaults to 1
19
+ -- @param ... objects to print (as for print)
20
+ function say (n, ...)
21
+ local level = 1
22
+ local arg = {n, ...}
23
+ if type (arg[1]) == "number" then
24
+ level = arg[1]
25
+ table.remove (arg, 1)
26
+ end
27
+ if _DEBUG and
28
+ ((type (_DEBUG) == "table" and type (_DEBUG.level) == "number" and
29
+ _DEBUG.level >= level)
30
+ or level <= 1) then
31
+ io.writelines (io.stderr, table.concat (list.map (tostring, arg), "\t"))
32
+ end
33
+ end
34
+
35
+ ---
36
+ -- The global function <code>debug</code> is an abbreviation for
37
+ -- <code>debug.say (1, ...)</code>
38
+ -- @class function
39
+ -- @name debug
40
+ -- @see say
41
+ getmetatable (_M).__call =
42
+ function (self, ...)
43
+ say (1, ...)
44
+ end
45
+
46
+ --- Trace function calls
47
+ -- Use as debug.sethook (trace, "cr"), which is done automatically
48
+ -- when _DEBUG.call is set.
49
+ -- Based on test/trace-calls.lua from the Lua distribution.
50
+ -- @class function
51
+ -- @name trace
52
+ -- @param event event causing the call
53
+ local level = 0
54
+ function trace (event)
55
+ local t = getinfo (3)
56
+ local s = " >>> " .. string.rep (" ", level)
57
+ if t ~= nil and t.currentline >= 0 then
58
+ s = s .. t.short_src .. ":" .. t.currentline .. " "
59
+ end
60
+ t = getinfo (2)
61
+ if event == "call" then
62
+ level = level + 1
63
+ else
64
+ level = math.max (level - 1, 0)
65
+ end
66
+ if t.what == "main" then
67
+ if event == "call" then
68
+ s = s .. "begin " .. t.short_src
69
+ else
70
+ s = s .. "end " .. t.short_src
71
+ end
72
+ elseif t.what == "Lua" then
73
+ s = s .. event .. " " .. (t.name or "(Lua)") .. " <" ..
74
+ t.linedefined .. ":" .. t.short_src .. ">"
75
+ else
76
+ s = s .. event .. " " .. (t.name or "(C)") .. " [" .. t.what .. "]"
77
+ end
78
+ io.writelines (io.stderr, s)
79
+ end
80
+
81
+ -- Set hooks according to _DEBUG
82
+ if type (_DEBUG) == "table" and _DEBUG.call then
83
+ sethook (trace, "cr")
84
+ end
@@ -0,0 +1,2 @@
1
+ -- Debugging is on by default
2
+ _G._DEBUG = true
@@ -0,0 +1,109 @@
1
+ -- Luadist configuration
2
+
3
+ module ("dist.config", package.seeall)
4
+
5
+ local sys = require "dist.sys"
6
+
7
+ -- System information ------------------------------------------------
8
+ version = "0.2.3" -- Current LuaDist version
9
+ arch = "Windows" -- Host architecture
10
+ type = "x86" -- Host type
11
+
12
+ -- Look for _PROGDIR by default --------------------------------------
13
+ local path = _PROGDIR
14
+ if path then path = sys.parent_dir(path) end
15
+
16
+ -- Directories -------------------------------------------------------
17
+ root_dir = path or os.getenv("DIST_ROOT") or sys.path_separator()
18
+ temp_dir = "tmp"
19
+ cache_dir = sys.make_path(temp_dir, "cache")
20
+ distinfos_dir = sys.make_path("share", "luadist-git", "dists")
21
+ test_dir = sys.make_path("share", "luadist-git", "test")
22
+
23
+ -- Files -------------------------------------------------------------
24
+ manifest_file = sys.make_path(cache_dir, ".gitmodules")
25
+ log_file = sys.make_path(temp_dir, "luadist.log")
26
+ cache_file = ""
27
+
28
+ -- Repositories ------------------------------------------------------
29
+ repos = {
30
+ "git://github.com/LuaDist/Repository.git",
31
+ }
32
+
33
+ upload_url = "git@github.com:LuaDist" -- must not contain trailing '/'
34
+
35
+ -- Settings ----------------------------------------------------------
36
+ debug = false -- Use debug mode.
37
+ verbose = false -- Print verbose output.
38
+ simulate = false -- Only simulate installation of packages.
39
+ binary = true -- Use binary version of modules.
40
+ source = true -- Use source version of modules.
41
+ test = false -- Run CTest before install.
42
+
43
+ cache = true -- Use cache.
44
+ cache_timeout = 60 * 60 -- Cache timeout in seconds.
45
+
46
+ -- Components (of modules) that will be installed.
47
+ components = {
48
+ "Runtime", "Library", "Header", "Data", "Documentation", "Example", "Test", "Other", "Unspecified"
49
+ }
50
+
51
+ -- Available log levels are: DEBUG, INFO, WARN, ERROR, FATAL (see dist.logger for more information).
52
+ print_log_level = "WARN" -- Minimum level for log messages to be printed (nil to disable).
53
+ write_log_level = "INFO" -- Minimum level for log messages to be logged (nil to disable).
54
+
55
+
56
+ -- CMake variables ---------------------------------------------------
57
+ variables = {
58
+ --- Install defaults
59
+ INSTALL_BIN = "bin",
60
+ INSTALL_LIB = "lib",
61
+ INSTALL_INC = "include",
62
+ INSTALL_ETC = "etc",
63
+ INSTALL_LMOD = "lib/lua",
64
+ INSTALL_CMOD = "lib/lua",
65
+
66
+ --- LuaDist specific variables
67
+ DIST_VERSION = version,
68
+ DIST_ARCH = arch,
69
+ DIST_TYPE = type,
70
+
71
+ -- CMake specific setup
72
+ CMAKE_GENERATOR = "MinGW Makefiles",
73
+ CMAKE_BUILD_TYPE = "MinSizeRel",
74
+
75
+ -- RPath functionality
76
+ CMAKE_SKIP_BUILD_RPATH = "FALSE",
77
+ CMAKE_BUILD_WITH_INSTALL_RPATH = "FALSE",
78
+ CMAKE_INSTALL_RPATH = "$ORIGIN/../lib",
79
+ CMAKE_INSTALL_RPATH_USE_LINK_PATH = "TRUE",
80
+ CMAKE_INSTALL_NAME_DIR = "@executable_path/../lib",
81
+
82
+ -- OSX specific
83
+ CMAKE_OSX_ARCHITECTURES = "",
84
+ }
85
+
86
+ -- Building ----------------------------------------------------------
87
+ cmake = "cmake"
88
+ ctest = "ctest"
89
+
90
+ cache_command = cmake .. " -C cache.cmake"
91
+ build_command = cmake .. " --build . --clean-first"
92
+
93
+ install_component_command = " -DCOMPONENT=#COMPONENT# -P cmake_install.cmake"
94
+
95
+ test_command = ctest .. " -V ."
96
+
97
+ strip_option = " -DCMAKE_INSTALL_DO_STRIP=true"
98
+ cache_debug_options = "-DCMAKE_VERBOSE_MAKEFILE=true -DCMAKE_BUILD_TYPE=Debug"
99
+ build_debug_options = ""
100
+
101
+ -- Add -j option to make in case of unix makefiles to speed up builds
102
+ if (variables.CMAKE_GENERATOR == "Unix Makefiles") then
103
+ build_command = build_command .. " -- -j6"
104
+ end
105
+
106
+ -- Add -j option to make in case of MinGW makefiles to speed up builds
107
+ if (variables.CMAKE_GENERATOR == "MinGW Makefiles") then
108
+ build_command = "set SHELL=cmd.exe && " .. build_command .. " -- -j"
109
+ end
@@ -0,0 +1,271 @@
1
+ -- Note: the code of this module is borrowed from the original LuaDist project
2
+
3
+
4
+
5
+ --- LuaDist version constraints functions
6
+ -- Peter Drahoš, LuaDist Project, 2010
7
+ -- Original Code borrowed from LuaRocks Project
8
+
9
+ --- Version constraints handling functions.
10
+ -- Dependencies are represented in LuaDist through strings with
11
+ -- a dist name followed by a comma-separated list of constraints.
12
+ -- Each constraint consists of an operator and a version number.
13
+ -- In this string format, version numbers are represented as
14
+ -- naturally as possible, like they are used by upstream projects
15
+ -- (e.g. "2.0beta3"). Internally, LuaDist converts them to a purely
16
+ -- numeric representation, allowing comparison following some
17
+ -- "common sense" heuristics. The precise specification of the
18
+ -- comparison criteria is the source code of this module, but the
19
+ -- test/test_deps.lua file included with LuaDist provides some
20
+ -- insights on what these criteria are.
21
+
22
+ module ("dist.constraints", package.seeall)
23
+
24
+
25
+ local operators = {
26
+ ["=="] = "==",
27
+ ["~="] = "~=",
28
+ [">"] = ">",
29
+ ["<"] = "<",
30
+ [">="] = ">=",
31
+ ["<="] = "<=",
32
+ ["~>"] = "~>",
33
+ -- plus some convenience translations
34
+ [""] = "==",
35
+ ["-"] = "==",
36
+ ["="] = "==",
37
+ ["!="] = "~="
38
+ }
39
+
40
+ local deltas = {
41
+ scm = -100,
42
+ rc = -1000,
43
+ pre = -10000,
44
+ beta = -100000,
45
+ alpha = -1000000,
46
+ work = -10000000,
47
+ }
48
+
49
+ local version_mt = {
50
+ --- Equality comparison for versions.
51
+ -- All version numbers must be equal.
52
+ -- If both versions have revision numbers, they must be equal;
53
+ -- otherwise the revision number is ignored.
54
+ -- @param v1 table: version table to compare.
55
+ -- @param v2 table: version table to compare.
56
+ -- @return boolean: true if they are considered equivalent.
57
+ __eq = function(v1, v2)
58
+ if #v1 ~= #v2 then
59
+ return false
60
+ end
61
+ for i = 1, #v1 do
62
+ if v1[i] ~= v2[i] then
63
+ return false
64
+ end
65
+ end
66
+ if v1.revision and v2.revision then
67
+ return (v1.revision == v2.revision)
68
+ end
69
+ return true
70
+ end,
71
+ --- Size comparison for versions.
72
+ -- All version numbers are compared.
73
+ -- If both versions have revision numbers, they are compared;
74
+ -- otherwise the revision number is ignored.
75
+ -- @param v1 table: version table to compare.
76
+ -- @param v2 table: version table to compare.
77
+ -- @return boolean: true if v1 is considered lower than v2.
78
+ __lt = function(v1, v2)
79
+ for i = 1, math.max(#v1, #v2) do
80
+ local v1i, v2i = v1[i] or 0, v2[i] or 0
81
+ if v1i ~= v2i then
82
+ return (v1i < v2i)
83
+ end
84
+ end
85
+ if v1.revision and v2.revision then
86
+ return (v1.revision < v2.revision)
87
+ end
88
+ return false
89
+ end
90
+ }
91
+
92
+ local version_cache = {}
93
+ setmetatable(version_cache, {
94
+ __mode = "kv"
95
+ })
96
+
97
+ --- Parse a version string, converting to table format.
98
+ -- A version table contains all components of the version string
99
+ -- converted to numeric format, stored in the array part of the table.
100
+ -- If the version contains a revision, it is stored numerically
101
+ -- in the 'revision' field. The original string representation of
102
+ -- the string is preserved in the 'string' field.
103
+ -- Returned version tables use a metatable
104
+ -- allowing later comparison through relational operators.
105
+ -- @param vstring string: A version number in string format.
106
+ -- @return table or nil: A version table or nil
107
+ -- if the input string contains invalid characters.
108
+ function parseVersion(vstring)
109
+ if not vstring then return nil end
110
+ assert(type(vstring) == "string")
111
+
112
+ local cached = version_cache[vstring]
113
+ if cached then
114
+ return cached
115
+ end
116
+
117
+ local version = {}
118
+ local i = 1
119
+
120
+ local function add_token(number)
121
+ version[i] = version[i] and version[i] + number/100000 or number
122
+ i = i + 1
123
+ end
124
+
125
+ -- trim leading and trailing spaces
126
+ vstring = vstring:match("^%s*(.*)%s*$")
127
+ version.string = vstring
128
+ -- store revision separately if any
129
+ local main, revision = vstring:match("(.*)%-(%d+)$")
130
+ if revision then
131
+ vstring = main
132
+ version.revision = tonumber(revision)
133
+ end
134
+ while #vstring > 0 do
135
+ -- extract a number
136
+ local token, rest = vstring:match("^(%d+)[%.%-%_]*(.*)")
137
+ if token then
138
+ add_token(tonumber(token))
139
+ else
140
+ -- extract a word
141
+ token, rest = vstring:match("^(%a+)[%.%-%_]*(.*)")
142
+ if not token then
143
+ return nil
144
+ end
145
+ local last = #version
146
+ version[i] = deltas[token] or (token:byte() / 1000)
147
+ end
148
+ vstring = rest
149
+ end
150
+ setmetatable(version, version_mt)
151
+ version_cache[vstring] = version
152
+ return version
153
+ end
154
+
155
+ --- Utility function to compare version numbers given as strings.
156
+ -- @param a string: one version.
157
+ -- @param b string: another version.
158
+ -- @return boolean: True if a > b.
159
+ function compareVersions(a, b)
160
+ return parseVersion(a) > parseVersion(b)
161
+ end
162
+
163
+ --- Consumes a constraint from a string, converting it to table format.
164
+ -- For example, a string ">= 1.0, > 2.0" is converted to a table in the
165
+ -- format {op = ">=", version={1,0}} and the rest, "> 2.0", is returned
166
+ -- back to the caller.
167
+ -- @param input string: A list of constraints in string format.
168
+ -- @return (table, string) or nil: A table representing the same
169
+ -- constraints and the string with the unused input, or nil if the
170
+ -- input string is invalid.
171
+ local function parseConstraint(input)
172
+ assert(type(input) == "string")
173
+
174
+ local op, version, rest = input:match("^([<>=~!]*)%s*([%w%.%_%-]+)[%s,]*(.*)")
175
+ op = operators[op]
176
+ version = parseVersion(version)
177
+ if not op or not version then return nil end
178
+ return { op = op, version = version }, rest
179
+ end
180
+
181
+ --- Convert a list of constraints from string to table format.
182
+ -- For example, a string ">= 1.0, < 2.0" is converted to a table in the format
183
+ -- {{op = ">=", version={1,0}}, {op = "<", version={2,0}}}.
184
+ -- Version tables use a metatable allowing later comparison through
185
+ -- relational operators.
186
+ -- @param input string: A list of constraints in string format.
187
+ -- @return table or nil: A table representing the same constraints,
188
+ -- or nil if the input string is invalid.
189
+ function parseConstraints(input)
190
+ assert(type(input) == "string")
191
+
192
+ local constraints, constraint = {}, nil
193
+ while #input > 0 do
194
+ constraint, input = parseConstraint(input)
195
+ if constraint then
196
+ table.insert(constraints, constraint)
197
+ else
198
+ return nil
199
+ end
200
+ end
201
+ return constraints
202
+ end
203
+
204
+ --- A more lenient check for equivalence between versions.
205
+ -- This returns true if the requested components of a version
206
+ -- match and ignore the ones that were not given. For example,
207
+ -- when requesting "2", then "2", "2.1", "2.3.5-9"... all match.
208
+ -- When requesting "2.1", then "2.1", "2.1.3" match, but "2.2"
209
+ -- doesn't.
210
+ -- @param version string or table: Version to be tested; may be
211
+ -- in string format or already parsed into a table.
212
+ -- @param requested string or table: Version requested; may be
213
+ -- in string format or already parsed into a table.
214
+ -- @return boolean: True if the tested version matches the requested
215
+ -- version, false otherwise.
216
+ local function partialMatch(version, requested)
217
+ assert(type(version) == "string" or type(version) == "table")
218
+ assert(type(requested) == "string" or type(version) == "table")
219
+
220
+ if type(version) ~= "table" then version = parseVersion(version) end
221
+ if type(requested) ~= "table" then requested = parseVersion(requested) end
222
+ if not version or not requested then return false end
223
+
224
+ for i = 1, #requested do
225
+ if requested[i] ~= version[i] then return false end
226
+ end
227
+ if requested.revision then
228
+ return requested.revision == version.revision
229
+ end
230
+ return true
231
+ end
232
+
233
+ --- Check if a version satisfies a set of constraints.
234
+ -- @param version table: A version in table format
235
+ -- @param constraints table: An array of constraints in table format.
236
+ -- @return boolean: True if version satisfies all constraints,
237
+ -- false otherwise.
238
+ function matchConstraints(version, constraints)
239
+ assert(type(version) == "table")
240
+ assert(type(constraints) == "table")
241
+ local ok = true
242
+ setmetatable(version, version_mt)
243
+ for _, constr in pairs(constraints) do
244
+ local constr_version = constr.version
245
+ setmetatable(constr.version, version_mt)
246
+ if constr.op == "==" then ok = version == constr_version
247
+ elseif constr.op == "~=" then ok = version ~= constr_version
248
+ elseif constr.op == ">" then ok = version > constr_version
249
+ elseif constr.op == "<" then ok = version < constr_version
250
+ elseif constr.op == ">=" then ok = version >= constr_version
251
+ elseif constr.op == "<=" then ok = version <= constr_version
252
+ elseif constr.op == "~>" then ok = partialMatch(version, constr_version)
253
+ end
254
+ if not ok then break end
255
+ end
256
+ return ok
257
+ end
258
+
259
+ --- Check if a version string is satisfied by a constraint string.
260
+ -- @param version string: A version in string format
261
+ -- @param constraints string: Constraints in string format.
262
+ -- @return boolean: True if version satisfies all constraints,
263
+ -- false otherwise.
264
+ function constraint_satisfied(version, constraints)
265
+ local const = parseConstraints(constraints)
266
+ local ver = parseVersion(version)
267
+ if const and ver then
268
+ return matchConstraints(ver, const)
269
+ end
270
+ return nil, "Error parsing versions."
271
+ end