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,138 @@
1
+ ----------------------------------------------------------------------------
2
+ -- LuaSec 0.4
3
+ -- Copyright (C) 2009 PUC-Rio
4
+ --
5
+ -- Author: Pablo Musa
6
+ -- Author: Tomas Guisasola
7
+ ---------------------------------------------------------------------------
8
+
9
+ local socket = require("socket")
10
+ local ssl = require("ssl")
11
+ local ltn12 = require("ltn12")
12
+ local http = require("socket.http")
13
+ local url = require("socket.url")
14
+
15
+ local table = require("table")
16
+ local string = require("string")
17
+
18
+ local try = socket.try
19
+ local type = type
20
+ local pairs = pairs
21
+ local getmetatable = getmetatable
22
+
23
+ module("ssl.https")
24
+
25
+ _VERSION = "0.4"
26
+ _COPYRIGHT = "LuaSec 0.4 - Copyright (C) 2009 PUC-Rio"
27
+
28
+ -- Default settings
29
+ PORT = 443
30
+
31
+ local cfg = {
32
+ protocol = "tlsv1",
33
+ options = "all",
34
+ verify = "none",
35
+ }
36
+
37
+ --------------------------------------------------------------------
38
+ -- Auxiliar Functions
39
+ --------------------------------------------------------------------
40
+
41
+ -- Insert default HTTPS port.
42
+ local function default_https_port(u)
43
+ return url.build(url.parse(u, {port = PORT}))
44
+ end
45
+
46
+ -- Convert an URL to a table according to Luasocket needs.
47
+ local function urlstring_totable(url, body, result_table)
48
+ url = {
49
+ url = default_https_port(url),
50
+ method = body and "POST" or "GET",
51
+ sink = ltn12.sink.table(result_table)
52
+ }
53
+ if body then
54
+ url.source = ltn12.source.string(body)
55
+ url.headers = {
56
+ ["content-length"] = #body,
57
+ ["content-type"] = "application/x-www-form-urlencoded",
58
+ }
59
+ end
60
+ return url
61
+ end
62
+
63
+ -- Forward calls to the real connection object.
64
+ local function reg(conn)
65
+ local mt = getmetatable(conn.sock).__index
66
+ for name, method in pairs(mt) do
67
+ if type(method) == "function" then
68
+ conn[name] = function (self, ...)
69
+ return method(self.sock, ...)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ -- Return a function which performs the SSL/TLS connection.
76
+ local function tcp(params)
77
+ params = params or {}
78
+ -- Default settings
79
+ for k, v in pairs(cfg) do
80
+ params[k] = params[k] or v
81
+ end
82
+ -- Force client mode
83
+ params.mode = "client"
84
+ -- 'create' function for LuaSocket
85
+ return function ()
86
+ local conn = {}
87
+ conn.sock = try(socket.tcp())
88
+ local st = getmetatable(conn.sock).__index.settimeout
89
+ function conn:settimeout(...)
90
+ return st(self.sock, ...)
91
+ end
92
+ -- Replace TCP's connection function
93
+ function conn:connect(host, port)
94
+ try(self.sock:connect(host, port))
95
+ self.sock = try(ssl.wrap(self.sock, params))
96
+ try(self.sock:dohandshake())
97
+ reg(self, getmetatable(self.sock))
98
+ return 1
99
+ end
100
+ return conn
101
+ end
102
+ end
103
+
104
+ --------------------------------------------------------------------
105
+ -- Main Function
106
+ --------------------------------------------------------------------
107
+
108
+ -- Make a HTTP request over secure connection. This function receives
109
+ -- the same parameters of LuaSocket's HTTP module (except 'proxy' and
110
+ -- 'redirect') plus LuaSec parameters.
111
+ --
112
+ -- @param url mandatory (string or table)
113
+ -- @param body optional (string)
114
+ -- @return (string if url == string or 1), code, headers, status
115
+ --
116
+ function request(url, body)
117
+ local result_table = {}
118
+ local stringrequest = type(url) == "string"
119
+ if stringrequest then
120
+ url = urlstring_totable(url, body, result_table)
121
+ else
122
+ url.url = default_https_port(url.url)
123
+ end
124
+ if http.PROXY or url.proxy then
125
+ return nil, "proxy not supported"
126
+ elseif url.redirect then
127
+ return nil, "redirect not supported"
128
+ elseif url.create then
129
+ return nil, "create function not permitted"
130
+ end
131
+ -- New 'create' function to establish a secure connection
132
+ url.create = tcp(url)
133
+ local res, code, headers, status = http.request(url)
134
+ if res and stringrequest then
135
+ return table.concat(result_table), code, headers, status
136
+ end
137
+ return res, code, headers, status
138
+ end
@@ -0,0 +1,28 @@
1
+ ----------------------------------------------------------------------------
2
+ -- Stable: State persistent table for Rings.
3
+ --
4
+ -- Copyright (c) 2006-2007 Kepler Project
5
+ -- $Id: stable.lua,v 1.7 2008/06/30 17:52:31 carregal Exp $
6
+ ----------------------------------------------------------------------------
7
+
8
+ local remotedostring = assert (remotedostring, "There is no `remotedostring'. Probably not in a slave state")
9
+ -- creating persistent table at master state.
10
+ assert (remotedostring[[_state_persistent_table_ = _state_persistent_table_ or {}]])
11
+
12
+ module"stable"
13
+
14
+ ----------------------------------------------------------------------------
15
+ _COPYRIGHT = "Copyright (C) 2006 Kepler Project"
16
+ _DESCRIPTION = "State persistent table"
17
+ _VERSION = "Stable 1.0"
18
+
19
+ ----------------------------------------------------------------------------
20
+ function get (i)
21
+ local ok, value = remotedostring ("return _state_persistent_table_[...]", i)
22
+ return value
23
+ end
24
+
25
+ ----------------------------------------------------------------------------
26
+ function set (i, v)
27
+ remotedostring ("_state_persistent_table_[select(1,...)] = select(2,...)", i, v)
28
+ end
@@ -0,0 +1,16 @@
1
+ --- Lua standard library
2
+ -- <ul>
3
+ -- <li>TODO: Write a style guide (indenting/wrapping, capitalisation,
4
+ -- function and variable names); library functions should call
5
+ -- error, not die; OO vs non-OO (a thorny problem).</li>
6
+ -- <li>TODO: Add tests for each function immediately after the function;
7
+ -- this also helps to check module dependencies.</li>
8
+ -- <li>TODO: pre-compile.</li>
9
+ -- </ul>
10
+ module ("std", package.seeall)
11
+
12
+ version = "General Lua libraries / 29"
13
+
14
+ for _, m in ipairs (require "modules") do
15
+ require (m)
16
+ end
@@ -0,0 +1,32 @@
1
+ --- String buffers
2
+ module ("strbuf", package.seeall)
3
+
4
+ --- Create a new string buffer
5
+ local metatable = {}
6
+ function new ()
7
+ return setmetatable ({}, metatable)
8
+ end
9
+
10
+ --- Add a string to a buffer
11
+ -- @param b buffer
12
+ -- @param s string to add
13
+ -- @return buffer
14
+ function concat (b, s)
15
+ table.insert (b, s)
16
+ return b
17
+ end
18
+
19
+ --- Convert a buffer to a string
20
+ -- @param b buffer
21
+ -- @return string
22
+ function tostring (b)
23
+ return table.concat (b)
24
+ end
25
+
26
+ --- Metamethods for string buffers
27
+ -- buffer:method ()
28
+ metatable.__index = _M
29
+ -- buffer .. string
30
+ metatable.__concat = concat
31
+ -- tostring
32
+ metatable.__tostring = tostring
@@ -0,0 +1,45 @@
1
+ --
2
+ -- strict.lua
3
+ -- checks uses of undeclared global variables
4
+ -- All global variables must be 'declared' through a regular assignment
5
+ -- (even assigning nil will do) in a main chunk before being used
6
+ -- anywhere or assigned to inside a function.
7
+ --
8
+
9
+ local getinfo, error, rawset, rawget = debug.getinfo, error, rawset, rawget
10
+
11
+ local mt = getmetatable(_G)
12
+ if mt == nil then
13
+ mt = {}
14
+ setmetatable(_G, mt)
15
+ end
16
+
17
+ __strict = true
18
+ mt.__declared = {}
19
+
20
+ local function what ()
21
+ local d = getinfo(3, "S")
22
+ return d and d.what or "C"
23
+ end
24
+
25
+ mt.__newindex = function (t, n, v)
26
+ if __strict and not mt.__declared[n] then
27
+ local w = what()
28
+ if w ~= "main" and w ~= "C" then
29
+ error("assign to undeclared variable '"..n.."'", 2)
30
+ end
31
+ mt.__declared[n] = true
32
+ end
33
+ rawset(t, n, v)
34
+ end
35
+
36
+ mt.__index = function (t, n)
37
+ if __strict and not mt.__declared[n] and what() ~= "C" then
38
+ error("variable '"..n.."' is not declared", 2)
39
+ end
40
+ return rawget(t, n)
41
+ end
42
+
43
+ function global(...)
44
+ for _, v in ipairs{...} do mt.__declared[v] = true end
45
+ end
@@ -0,0 +1,274 @@
1
+ --- Additions to the string module
2
+ -- TODO: Pretty printing (use in getopt); see source for details.
3
+ module ("string", package.seeall)
4
+
5
+
6
+ -- Write pretty-printing based on:
7
+ --
8
+ -- John Hughes's and Simon Peyton Jones's Pretty Printer Combinators
9
+ --
10
+ -- Based on "The Design of a Pretty-printing Library in Advanced
11
+ -- Functional Programming", Johan Jeuring and Erik Meijer (eds), LNCS 925
12
+ -- http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps
13
+ -- Heavily modified by Simon Peyton Jones, Dec 96
14
+ --
15
+ -- Haskell types:
16
+ -- data Doc list of lines
17
+ -- quote :: Char -> Char -> Doc -> Doc Wrap document in ...
18
+ -- (<>) :: Doc -> Doc -> Doc Beside
19
+ -- (<+>) :: Doc -> Doc -> Doc Beside, separated by space
20
+ -- ($$) :: Doc -> Doc -> Doc Above; if there is no overlap it "dovetails" the two
21
+ -- nest :: Int -> Doc -> Doc Nested
22
+ -- punctuate :: Doc -> [Doc] -> [Doc] punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
23
+ -- render :: Int Line length
24
+ -- -> Float Ribbons per line
25
+ -- -> (TextDetails -> a -> a) What to do with text
26
+ -- -> a What to do at the end
27
+ -- -> Doc The document
28
+ -- -> a Result
29
+
30
+
31
+ --- Give strings a subscription operator.
32
+ -- @param s string
33
+ -- @param i index
34
+ -- @return <code>string.sub (s, i, i)</code> if i is a number, or
35
+ -- falls back to any previous metamethod (by default, string methods)
36
+ local old__index = getmetatable ("").__index
37
+ getmetatable ("").__index = function (s, i)
38
+ if type (i) == "number" then
39
+ return sub (s, i, i)
40
+ -- Fall back to old metamethods
41
+ elseif type (old__index) == "function" then
42
+ return old__index (s, i)
43
+ else
44
+ return old__index[i]
45
+ end
46
+ end
47
+
48
+ --- Give strings an append metamethod.
49
+ -- @param s string
50
+ -- @param c character (1-character string)
51
+ -- @return <code>s .. c</code>
52
+ getmetatable ("").__append = function (s, c)
53
+ return s .. c
54
+ end
55
+
56
+ --- Give strings a concat metamethod.
57
+ -- @param s string
58
+ -- @param o object
59
+ -- @return s .. tostring (o)
60
+ getmetatable ("").__concat = function (s, o)
61
+ return tostring (s) .. tostring (o)
62
+ end
63
+
64
+ --- Capitalise each word in a string.
65
+ -- @param s string
66
+ -- @return capitalised string
67
+ function caps (s)
68
+ return (gsub (s, "(%w)([%w]*)",
69
+ function (l, ls)
70
+ return upper (l) .. ls
71
+ end))
72
+ end
73
+
74
+ --- Remove any final newline from a string.
75
+ -- @param s string to process
76
+ -- @return processed string
77
+ function chomp (s)
78
+ return (gsub (s, "\n$", ""))
79
+ end
80
+
81
+ --- Escape a string to be used as a pattern
82
+ -- @param s string to process
83
+ -- @return
84
+ -- @param s_: processed string
85
+ function escapePattern (s)
86
+ return (gsub (s, "(%W)", "%%%1"))
87
+ end
88
+
89
+ -- Escape a string to be used as a shell token.
90
+ -- Quotes spaces, parentheses, brackets, quotes, apostrophes and
91
+ -- whitespace.
92
+ -- @param s string to process
93
+ -- @return processed string
94
+ function escapeShell (s)
95
+ return (gsub (s, "([ %(%)%\\%[%]\"'])", "\\%1"))
96
+ end
97
+
98
+ --- Return the English suffix for an ordinal.
99
+ -- @param n number of the day
100
+ -- @return suffix
101
+ function ordinalSuffix (n)
102
+ n = math.mod (n, 100)
103
+ local d = math.mod (n, 10)
104
+ if d == 1 and n ~= 11 then
105
+ return "st"
106
+ elseif d == 2 and n ~= 12 then
107
+ return "nd"
108
+ elseif d == 3 and n ~= 13 then
109
+ return "rd"
110
+ else
111
+ return "th"
112
+ end
113
+ end
114
+
115
+ --- Extend to work better with one argument.
116
+ -- If only one argument is passed, no formatting is attempted.
117
+ -- @param f format
118
+ -- @param ... arguments to format
119
+ -- @return formatted string
120
+ local _format = format
121
+ function format (f, arg1, ...)
122
+ if arg1 == nil then
123
+ return f
124
+ else
125
+ return _format (f, arg1, ...)
126
+ end
127
+ end
128
+
129
+ --- Justify a string.
130
+ -- When the string is longer than w, it is truncated (left or right
131
+ -- according to the sign of w).
132
+ -- @param s string to justify
133
+ -- @param w width to justify to (-ve means right-justify; +ve means
134
+ -- left-justify)
135
+ -- @param p string to pad with (default: <code>" "</code>)
136
+ -- @return justified string
137
+ function pad (s, w, p)
138
+ p = rep (p or " ", math.abs (w))
139
+ if w < 0 then
140
+ return sub (p .. s, w)
141
+ end
142
+ return sub (s .. p, 1, w)
143
+ end
144
+
145
+ --- Wrap a string into a paragraph.
146
+ -- @param s string to wrap
147
+ -- @param w width to wrap to (default: 78)
148
+ -- @param ind indent (default: 0)
149
+ -- @param ind1 indent of first line (default: ind)
150
+ -- @return wrapped paragraph
151
+ function wrap (s, w, ind, ind1)
152
+ w = w or 78
153
+ ind = ind or 0
154
+ ind1 = ind1 or ind
155
+ assert (ind1 < w and ind < w,
156
+ "the indents must be less than the line width")
157
+ s = rep (" ", ind1) .. s
158
+ local lstart, len = 1, len (s)
159
+ while len - lstart > w - ind do
160
+ local i = lstart + w - ind
161
+ while i > lstart and sub (s, i, i) ~= " " do
162
+ i = i - 1
163
+ end
164
+ local j = i
165
+ while j > lstart and sub (s, j, j) == " " do
166
+ j = j - 1
167
+ end
168
+ s = sub (s, 1, j) .. "\n" .. rep (" ", ind) ..
169
+ sub (s, i + 1, -1)
170
+ local change = ind + 1 - (i - j)
171
+ lstart = j + change
172
+ len = len + change
173
+ end
174
+ return s
175
+ end
176
+
177
+ --- Write a number using SI suffixes.
178
+ -- The number is always written to 3 s.f.
179
+ -- @param n number
180
+ -- @return string
181
+ function numbertosi (n)
182
+ local SIprefix = {
183
+ [-8] = "y", [-7] = "z", [-6] = "a", [-5] = "f",
184
+ [-4] = "p", [-3] = "n", [-2] = "mu", [-1] = "m",
185
+ [0] = "", [1] = "k", [2] = "M", [3] = "G",
186
+ [4] = "T", [5] = "P", [6] = "E", [7] = "Z",
187
+ [8] = "Y"
188
+ }
189
+ local t = format("% #.2e", n)
190
+ local _, _, m, e = t:find(".(.%...)e(.+)")
191
+ local man, exp = tonumber (m), tonumber (e)
192
+ local siexp = math.floor (exp / 3)
193
+ local shift = exp - siexp * 3
194
+ local s = SIprefix[siexp] or "e" .. tostring (siexp)
195
+ man = man * (10 ^ shift)
196
+ return tostring (man) .. s
197
+ end
198
+
199
+ --- Do find, returning captures as a list.
200
+ -- @param s target string
201
+ -- @param p pattern
202
+ -- @param init start position (default: 1)
203
+ -- @param plain inhibit magic characters (default: nil)
204
+ -- @return start of match, end of match, table of captures
205
+ function tfind (s, p, init, plain)
206
+ local function pack (from, to, ...)
207
+ return from, to, {...}
208
+ end
209
+ return pack (p.find (s, p, init, plain))
210
+ end
211
+
212
+ --- Do multiple <code>find</code>s on a string.
213
+ -- @param s target string
214
+ -- @param p pattern
215
+ -- @param init start position (default: 1)
216
+ -- @param plain inhibit magic characters (default: nil)
217
+ -- @return list of <code>{from, to; capt = {captures}}</code>
218
+ function finds (s, p, init, plain)
219
+ init = init or 1
220
+ local l = {}
221
+ local from, to, r
222
+ repeat
223
+ from, to, r = tfind (s, p, init, plain)
224
+ if from ~= nil then
225
+ table.insert (l, {from, to, capt = r})
226
+ init = to + 1
227
+ end
228
+ until not from
229
+ return l
230
+ end
231
+
232
+ --- Split a string at a given separator.
233
+ -- FIXME: Consider Perl and Python versions.
234
+ -- @param s string to split
235
+ -- @param sep separator regex
236
+ -- @return list of strings
237
+ function split (s, sep)
238
+ -- finds gets a list of {from, to, capt = {}} lists; we then
239
+ -- flatten the result, discarding the captures, and prepend 0 (1
240
+ -- before the first character) and append 0 (1 after the last
241
+ -- character), and then read off the result in pairs.
242
+ local pairs = list.concat ({0}, list.flatten (finds (s, sep)), {0})
243
+ local l = {}
244
+ for i = 1, #pairs, 2 do
245
+ table.insert (l, sub (s, pairs[i] + 1, pairs[i + 1] - 1))
246
+ end
247
+ return l
248
+ end
249
+
250
+ --- Remove leading matter from a string.
251
+ -- @param s string
252
+ -- @param r leading regex (default: <code>"%s+"</code>)
253
+ -- @return string without leading r
254
+ function ltrim (s, r)
255
+ r = r or "%s+"
256
+ return (gsub (s, "^" .. r, ""))
257
+ end
258
+
259
+ --- Remove trailing matter from a string.
260
+ -- @param s string
261
+ -- @param r trailing regex (default: <code>"%s+"</code>)
262
+ -- @return string without trailing r
263
+ function rtrim (s, r)
264
+ r = r or "%s+"
265
+ return (gsub (s, r .. "$", ""))
266
+ end
267
+
268
+ --- Remove leading and trailing matter from a string.
269
+ -- @param s string
270
+ -- @param r leading/trailing regex (default: <code>"%s+"</code>)
271
+ -- @return string without leading/trailing r
272
+ function trim (s, r)
273
+ return rtrim (ltrim (s, r), r)
274
+ end