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,613 @@
1
+ --- Python-style list class.
2
+ --
3
+ -- **Please Note**: methods that change the list will return the list.
4
+ -- This is to allow for method chaining, but please note that `ls = ls:sort()`
5
+ -- does not mean that a new copy of the list is made. In-place (mutable) methods
6
+ -- are marked as returning 'the list' in this documentation.
7
+ --
8
+ -- See the Guide for further @{02-arrays.md.Python_style_Lists|discussion}
9
+ --
10
+ -- See <a href="http://www.python.org/doc/current/tut/tut.html">http://www.python.org/doc/current/tut/tut.html</a>, section 5.1
11
+ --
12
+ -- **Note**: The comments before some of the functions are from the Python docs
13
+ -- and contain Python code.
14
+ --
15
+ -- Written for Lua version Nick Trout 4.0; Redone for Lua 5.1, Steve Donovan.
16
+ --
17
+ -- Dependencies: `pl.utils`, `pl.tablex`
18
+ -- @module pl.List
19
+ -- @pragma nostrip
20
+
21
+ local tinsert,tremove,concat,tsort = table.insert,table.remove,table.concat,table.sort
22
+ local setmetatable, getmetatable,type,tostring,assert,string,next = setmetatable,getmetatable,type,tostring,assert,string,next
23
+ local write = io.write
24
+ local tablex = require 'pl.tablex'
25
+ local filter,imap,imap2,reduce,transform,tremovevalues = tablex.filter,tablex.imap,tablex.imap2,tablex.reduce,tablex.transform,tablex.removevalues
26
+ local tablex = tablex
27
+ local tsub = tablex.sub
28
+ local utils = require 'pl.utils'
29
+ local function_arg = utils.function_arg
30
+ local is_type = utils.is_type
31
+ local split = utils.split
32
+ local assert_arg = utils.assert_arg
33
+ local normalize_slice = tablex._normalize_slice
34
+
35
+ --[[
36
+ module ('pl.List',utils._module)
37
+ ]]
38
+
39
+ local Multimap = utils.stdmt.MultiMap
40
+ -- metatable for our list objects
41
+ local List = utils.stdmt.List
42
+ List.__index = List
43
+ List._class = List
44
+
45
+ local iter
46
+
47
+ -- we give the metatable its own metatable so that we can call it like a function!
48
+ setmetatable(List,{
49
+ __call = function (tbl,arg)
50
+ return List.new(arg)
51
+ end,
52
+ })
53
+
54
+ local function makelist (t,obj)
55
+ local klass = List
56
+ if obj then
57
+ klass = getmetatable(obj)
58
+ end
59
+ return setmetatable(t,klass)
60
+ end
61
+
62
+ local function is_list(t)
63
+ return getmetatable(t) == List
64
+ end
65
+
66
+ local function simple_table(t)
67
+ return type(t) == 'table' and not is_list(t) and #t > 0
68
+ end
69
+
70
+ function List:_init (src)
71
+ if src then
72
+ for v in iter(src) do
73
+ tinsert(self,v)
74
+ end
75
+ end
76
+ end
77
+
78
+ --- Create a new list. Can optionally pass a table;
79
+ -- passing another instance of List will cause a copy to be created
80
+ -- we pass anything which isn't a simple table to iterate() to work out
81
+ -- an appropriate iterator @see List.iterate
82
+ -- @param t An optional list-like table
83
+ -- @return a new List
84
+ -- @usage ls = List(); ls = List {1,2,3,4}
85
+ function List.new(t)
86
+ local ls
87
+ if not simple_table(t) then
88
+ ls = {}
89
+ List._init(ls,t)
90
+ else
91
+ ls = t
92
+ end
93
+ makelist(ls)
94
+ return ls
95
+ end
96
+
97
+ function List:clone()
98
+ local ls = makelist({},self)
99
+ List._init(ls,self)
100
+ return ls
101
+ end
102
+
103
+ function List.default_map_with(T)
104
+ return function(self,name)
105
+ local f = T[name]
106
+ if f then
107
+ return function(self,...)
108
+ return self:map(f,...)
109
+ end
110
+ else
111
+ error("method not found: "..name,2)
112
+ end
113
+ end
114
+ end
115
+
116
+
117
+ ---Add an item to the end of the list.
118
+ -- @param i An item
119
+ -- @return the list
120
+ function List:append(i)
121
+ tinsert(self,i)
122
+ return self
123
+ end
124
+
125
+ List.push = tinsert
126
+
127
+ --- Extend the list by appending all the items in the given list.
128
+ -- equivalent to 'a[len(a):] = L'.
129
+ -- @param L Another List
130
+ -- @return the list
131
+ function List:extend(L)
132
+ assert_arg(1,L,'table')
133
+ for i = 1,#L do tinsert(self,L[i]) end
134
+ return self
135
+ end
136
+
137
+ --- Insert an item at a given position. i is the index of the
138
+ -- element before which to insert.
139
+ -- @param i index of element before whichh to insert
140
+ -- @param x A data item
141
+ -- @return the list
142
+ function List:insert(i, x)
143
+ assert_arg(1,i,'number')
144
+ tinsert(self,i,x)
145
+ return self
146
+ end
147
+
148
+ --- Insert an item at the begining of the list.
149
+ -- @param x a data item
150
+ -- @return the list
151
+ function List:put (x)
152
+ return self:insert(1,x)
153
+ end
154
+
155
+ --- Remove an element given its index.
156
+ -- (equivalent of Python's del s[i])
157
+ -- @param i the index
158
+ -- @return the list
159
+ function List:remove (i)
160
+ assert_arg(1,i,'number')
161
+ tremove(self,i)
162
+ return self
163
+ end
164
+
165
+ --- Remove the first item from the list whose value is given.
166
+ -- (This is called 'remove' in Python; renamed to avoid confusion
167
+ -- with table.remove)
168
+ -- Return nil if there is no such item.
169
+ -- @param x A data value
170
+ -- @return the list
171
+ function List:remove_value(x)
172
+ for i=1,#self do
173
+ if self[i]==x then tremove(self,i) return self end
174
+ end
175
+ return self
176
+ end
177
+
178
+ --- Remove the item at the given position in the list, and return it.
179
+ -- If no index is specified, a:pop() returns the last item in the list.
180
+ -- The item is also removed from the list.
181
+ -- @param i An index
182
+ -- @return the item
183
+ function List:pop(i)
184
+ if not i then i = #self end
185
+ assert_arg(1,i,'number')
186
+ return tremove(self,i)
187
+ end
188
+
189
+ List.get = List.pop
190
+
191
+ --- Return the index in the list of the first item whose value is given.
192
+ -- Return nil if there is no such item.
193
+ -- @class function
194
+ -- @name List:index
195
+ -- @param x A data value
196
+ -- @param idx where to start search (default 1)
197
+ -- @return the index, or nil if not found.
198
+
199
+ local tfind = tablex.find
200
+ List.index = tfind
201
+
202
+ --- does this list contain the value?.
203
+ -- @param x A data value
204
+ -- @return true or false
205
+ function List:contains(x)
206
+ return tfind(self,x) and true or false
207
+ end
208
+
209
+ --- Return the number of times value appears in the list.
210
+ -- @param x A data value
211
+ -- @return number of times x appears
212
+ function List:count(x)
213
+ local cnt=0
214
+ for i=1,#self do
215
+ if self[i]==x then cnt=cnt+1 end
216
+ end
217
+ return cnt
218
+ end
219
+
220
+ --- Sort the items of the list, in place.
221
+ -- @param cmp an optional comparison function, default '<'
222
+ -- @return the list
223
+ function List:sort(cmp)
224
+ if cmp then cmp = function_arg(1,cmp) end
225
+ tsort(self,cmp)
226
+ return self
227
+ end
228
+
229
+ --- return a sorted copy of this list.
230
+ -- @param cmp an optional comparison function, default '<'
231
+ -- @return a new list
232
+ function List:sorted(cmp)
233
+ return List(self):sort(cmp)
234
+ end
235
+
236
+ --- Reverse the elements of the list, in place.
237
+ -- @return the list
238
+ function List:reverse()
239
+ local t = self
240
+ local n = #t
241
+ local n2 = n/2
242
+ for i = 1,n2 do
243
+ local k = n-i+1
244
+ t[i],t[k] = t[k],t[i]
245
+ end
246
+ return self
247
+ end
248
+
249
+ --- return the minimum and the maximum value of the list.
250
+ -- @return minimum value
251
+ -- @return maximum value
252
+ function List:minmax()
253
+ local vmin,vmax = 1e70,-1e70
254
+ for i = 1,#self do
255
+ local v = self[i]
256
+ if v < vmin then vmin = v end
257
+ if v > vmax then vmax = v end
258
+ end
259
+ return vmin,vmax
260
+ end
261
+
262
+ --- Emulate list slicing. like 'list[first:last]' in Python.
263
+ -- If first or last are negative then they are relative to the end of the list
264
+ -- eg. slice(-2) gives last 2 entries in a list, and
265
+ -- slice(-4,-2) gives from -4th to -2nd
266
+ -- @param first An index
267
+ -- @param last An index
268
+ -- @return a new List
269
+ function List:slice(first,last)
270
+ return tsub(self,first,last)
271
+ end
272
+
273
+ --- empty the list.
274
+ -- @return the list
275
+ function List:clear()
276
+ for i=1,#self do tremove(self) end
277
+ return self
278
+ end
279
+
280
+ local eps = 1.0e-10
281
+
282
+ --- Emulate Python's range(x) function.
283
+ -- Include it in List table for tidiness
284
+ -- @param start A number
285
+ -- @param finish A number greater than start; if absent,
286
+ -- then start is 1 and finish is start
287
+ -- @param incr an optional increment (may be less than 1)
288
+ -- @return a List from start .. finish
289
+ -- @usage List.range(0,3) == List{0,1,2,3}
290
+ -- @usage List.range(4) = List{1,2,3,4}
291
+ -- @usage List.range(5,1,-1) == List{5,4,3,2,1}
292
+ function List.range(start,finish,incr)
293
+ if not finish then
294
+ finish = start
295
+ start = 1
296
+ end
297
+ if incr then
298
+ assert_arg(3,incr,'number')
299
+ if not utils.is_integer(incr) then finish = finish + eps end
300
+ else
301
+ incr = 1
302
+ end
303
+ assert_arg(1,start,'number')
304
+ assert_arg(2,finish,'number')
305
+ local t = List.new()
306
+ for i=start,finish,incr do tinsert(t,i) end
307
+ return t
308
+ end
309
+
310
+ --- list:len() is the same as #list.
311
+ function List:len()
312
+ return #self
313
+ end
314
+
315
+ -- Extended operations --
316
+
317
+ --- Remove a subrange of elements.
318
+ -- equivalent to 'del s[i1:i2]' in Python.
319
+ -- @param i1 start of range
320
+ -- @param i2 end of range
321
+ -- @return the list
322
+ function List:chop(i1,i2)
323
+ return tremovevalues(self,i1,i2)
324
+ end
325
+
326
+ --- Insert a sublist into a list
327
+ -- equivalent to 's[idx:idx] = list' in Python
328
+ -- @param idx index
329
+ -- @param list list to insert
330
+ -- @return the list
331
+ -- @usage l = List{10,20}; l:splice(2,{21,22}); assert(l == List{10,21,22,20})
332
+ function List:splice(idx,list)
333
+ assert_arg(1,idx,'number')
334
+ idx = idx - 1
335
+ local i = 1
336
+ for v in iter(list) do
337
+ tinsert(self,i+idx,v)
338
+ i = i + 1
339
+ end
340
+ return self
341
+ end
342
+
343
+ --- general slice assignment s[i1:i2] = seq.
344
+ -- @param i1 start index
345
+ -- @param i2 end index
346
+ -- @param seq a list
347
+ -- @return the list
348
+ function List:slice_assign(i1,i2,seq)
349
+ assert_arg(1,i1,'number')
350
+ assert_arg(1,i2,'number')
351
+ i1,i2 = normalize_slice(self,i1,i2)
352
+ if i2 >= i1 then self:chop(i1,i2) end
353
+ self:splice(i1,seq)
354
+ return self
355
+ end
356
+
357
+ --- concatenation operator.
358
+ -- @param L another List
359
+ -- @return a new list consisting of the list with the elements of the new list appended
360
+ function List:__concat(L)
361
+ assert_arg(1,L,'table')
362
+ local ls = self:clone()
363
+ ls:extend(L)
364
+ return ls
365
+ end
366
+
367
+ --- equality operator ==. True iff all elements of two lists are equal.
368
+ -- @param L another List
369
+ -- @return true or false
370
+ function List:__eq(L)
371
+ if #self ~= #L then return false end
372
+ for i = 1,#self do
373
+ if self[i] ~= L[i] then return false end
374
+ end
375
+ return true
376
+ end
377
+
378
+ --- join the elements of a list using a delimiter. <br>
379
+ -- This method uses tostring on all elements.
380
+ -- @param delim a delimiter string, can be empty.
381
+ -- @return a string
382
+ function List:join (delim)
383
+ delim = delim or ''
384
+ assert_arg(1,delim,'string')
385
+ return concat(imap(tostring,self),delim)
386
+ end
387
+
388
+ --- join a list of strings. <br>
389
+ -- Uses table.concat directly.
390
+ -- @class function
391
+ -- @name List:concat
392
+ -- @param delim a delimiter
393
+ -- @return a string
394
+ List.concat = concat
395
+
396
+ local function tostring_q(val)
397
+ local s = tostring(val)
398
+ if type(val) == 'string' then
399
+ s = '"'..s..'"'
400
+ end
401
+ return s
402
+ end
403
+
404
+ --- how our list should be rendered as a string. Uses join().
405
+ -- @see List:join
406
+ function List:__tostring()
407
+ return '{'..self:join(',',tostring_q)..'}'
408
+ end
409
+
410
+ --[[
411
+ -- NOTE: this works, but is unreliable. If you leave the loop before finishing,
412
+ -- then the iterator is not reset.
413
+ --- can iterate over a list directly.
414
+ -- @usage for v in ls do print(v) end
415
+ function List:__call()
416
+ if not self.key then self.key = 1 end
417
+ local value = self[self.key]
418
+ self.key = self.key + 1
419
+ if not value then self.key = nil end
420
+ return value
421
+ end
422
+ --]]
423
+
424
+ --[[
425
+ function List.__call(t,v,i)
426
+ i = (i or 0) + 1
427
+ v = t[i]
428
+ if v then return i, v end
429
+ end
430
+ --]]
431
+
432
+ local MethodIter = {}
433
+
434
+ function MethodIter:__index (name)
435
+ return function(mm,...)
436
+ return self.list:foreachm(name,...)
437
+ end
438
+ end
439
+
440
+ --- call the function for each element of the list.
441
+ -- @param fun a function or callable object
442
+ -- @param ... optional values to pass to function
443
+ function List:foreach (fun,...)
444
+ if fun==nil then
445
+ return setmetatable({list=self},MethodIter)
446
+ end
447
+ fun = function_arg(1,fun)
448
+ for i = 1,#self do
449
+ fun(self[i],...)
450
+ end
451
+ end
452
+
453
+ function List:foreachm (name,...)
454
+ for i = 1,#self do
455
+ local obj = self[i]
456
+ local f = assert(obj[name],"method not found on object")
457
+ f(obj,...)
458
+ end
459
+ end
460
+
461
+ --- create a list of all elements which match a function.
462
+ -- @param fun a boolean function
463
+ -- @param arg optional argument to be passed as second argument of the predicate
464
+ -- @return a new filtered list.
465
+ function List:filter (fun,arg)
466
+ return makelist(filter(self,fun,arg),self)
467
+ end
468
+
469
+ --- split a string using a delimiter.
470
+ -- @param s the string
471
+ -- @param delim the delimiter (default spaces)
472
+ -- @return a List of strings
473
+ -- @see pl.utils.split
474
+ function List.split (s,delim)
475
+ assert_arg(1,s,'string')
476
+ return makelist(split(s,delim))
477
+ end
478
+
479
+ local MethodMapper = {}
480
+
481
+ function MethodMapper:__index (name)
482
+ return function(mm,...)
483
+ return self.list:mapm(name,...)
484
+ end
485
+ end
486
+
487
+ --- apply a function to all elements.
488
+ -- Any extra arguments will be passed to the function; if the function
489
+ -- is `nil` then `map` returns a mapper object that maps over a method
490
+ -- of the items
491
+ -- @param fun a function of at least one argument
492
+ -- @param ... arbitrary extra arguments.
493
+ -- @return a new list: {f(x) for x in self}
494
+ -- @usage List{'one','two'}:map(string.upper) == {'ONE','TWO'}
495
+ -- @usage List{'one','two'}:map():sub(1,2) == {'on','tw'}
496
+ -- @see pl.tablex.imap
497
+ function List:map (fun,...)
498
+ if fun==nil then
499
+ return setmetatable({list=self},MethodMapper)
500
+ end
501
+ return makelist(imap(fun,self,...),self)
502
+ end
503
+
504
+ --- apply a function to all elements, in-place.
505
+ -- Any extra arguments are passed to the function.
506
+ -- @param fun A function that takes at least one argument
507
+ -- @param ... arbitrary extra arguments.
508
+ -- @return the list.
509
+ function List:transform (fun,...)
510
+ transform(fun,self,...)
511
+ return self
512
+ end
513
+
514
+ --- apply a function to elements of two lists.
515
+ -- Any extra arguments will be passed to the function
516
+ -- @param fun a function of at least two arguments
517
+ -- @param ls another list
518
+ -- @param ... arbitrary extra arguments.
519
+ -- @return a new list: {f(x,y) for x in self, for x in arg1}
520
+ -- @see pl.tablex.imap2
521
+ function List:map2 (fun,ls,...)
522
+ return makelist(imap2(fun,self,ls,...),self)
523
+ end
524
+
525
+ --- apply a named method to all elements.
526
+ -- Any extra arguments will be passed to the method.
527
+ -- @param name name of method
528
+ -- @param ... extra arguments
529
+ -- @return a new list of the results
530
+ -- @see pl.seq.mapmethod
531
+ function List:mapm (name,...)
532
+ local res = {}
533
+ local t = self
534
+ for i = 1,#t do
535
+ local val = t[i]
536
+ local fn = val[name]
537
+ if not fn then error(type(val).." does not have method "..name,2) end
538
+ res[i] = fn(val,...)
539
+ end
540
+ return makelist(res,self)
541
+ end
542
+
543
+ --- 'reduce' a list using a binary function.
544
+ -- @param fun a function of two arguments
545
+ -- @return result of the function
546
+ -- @see pl.tablex.reduce
547
+ function List:reduce (fun)
548
+ return reduce(fun,self)
549
+ end
550
+
551
+ --- partition a list using a classifier function.
552
+ -- The function may return nil, but this will be converted to the string key '<nil>'.
553
+ -- @param fun a function of at least one argument
554
+ -- @param ... will also be passed to the function
555
+ -- @return a table where the keys are the returned values, and the values are Lists
556
+ -- of values where the function returned that key. It is given the type of Multimap.
557
+ -- @see pl.MultiMap
558
+ function List:partition (fun,...)
559
+ fun = function_arg(1,fun)
560
+ local res = {}
561
+ for i = 1,#self do
562
+ local val = self[i]
563
+ local klass = fun(val,...)
564
+ if klass == nil then klass = '<nil>' end
565
+ if not res[klass] then res[klass] = List() end
566
+ res[klass]:append(val)
567
+ end
568
+ return setmetatable(res,Multimap)
569
+ end
570
+
571
+ --- return an iterator over all values.
572
+ function List:iter ()
573
+ return iter(self)
574
+ end
575
+
576
+ --- Create an iterator over a seqence.
577
+ -- This captures the Python concept of 'sequence'.
578
+ -- For tables, iterates over all values with integer indices.
579
+ -- @param seq a sequence; a string (over characters), a table, a file object (over lines) or an iterator function
580
+ -- @usage for x in iterate {1,10,22,55} do io.write(x,',') end ==> 1,10,22,55
581
+ -- @usage for ch in iterate 'help' do do io.write(ch,' ') end ==> h e l p
582
+ function List.iterate(seq)
583
+ if type(seq) == 'string' then
584
+ local idx = 0
585
+ local n = #seq
586
+ local sub = string.sub
587
+ return function ()
588
+ idx = idx + 1
589
+ if idx > n then return nil
590
+ else
591
+ return sub(seq,idx,idx)
592
+ end
593
+ end
594
+ elseif type(seq) == 'table' then
595
+ local idx = 0
596
+ local n = #seq
597
+ return function()
598
+ idx = idx + 1
599
+ if idx > n then return nil
600
+ else
601
+ return seq[idx]
602
+ end
603
+ end
604
+ elseif type(seq) == 'function' then
605
+ return seq
606
+ elseif type(seq) == 'userdata' and io.type(seq) == 'file' then
607
+ return seq:lines()
608
+ end
609
+ end
610
+ iter = List.iterate
611
+
612
+ return List
613
+