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,22 @@
1
+ -------------------------------------------------------------------------------
2
+ -- Prints logging information to console
3
+ --
4
+ -- @author Thiago Costa Ponte (thiago@ideais.com.br)
5
+ --
6
+ -- @copyright 2004-2011 Kepler Project
7
+ --
8
+ -------------------------------------------------------------------------------
9
+
10
+ require"logging"
11
+
12
+ function logging.console(logPattern)
13
+
14
+ return logging.new( function(self, level, message)
15
+ io.stdout:write(logging.prepareLogMsg(logPattern, os.date(), level, message))
16
+ return true
17
+ end
18
+ )
19
+ end
20
+
21
+ return logging.console
22
+
@@ -0,0 +1,44 @@
1
+ -------------------------------------------------------------------------------
2
+ -- Emails logging information to the given recipient
3
+ --
4
+ -- @author Thiago Costa Ponte (thiago@ideais.com.br)
5
+ --
6
+ -- @copyright 2004-2011 Kepler Project
7
+ --
8
+ -------------------------------------------------------------------------------
9
+
10
+ require"logging"
11
+ local smtp = require"socket.smtp"
12
+
13
+ function logging.email(params)
14
+
15
+ params = params or {}
16
+ params.headers = params.headers or {}
17
+
18
+ if params.from == nil then
19
+ return nil, "'from' parameter is required"
20
+ end
21
+ if params.rcpt == nil then
22
+ return nil, "'rcpt' parameter is required"
23
+ end
24
+
25
+ return logging.new( function(self, level, message)
26
+ local s = logging.prepareLogMsg(params.logPattern, os.date(), level, message)
27
+ if params.headers.subject then
28
+ params.headers.subject = logging.prepareLogMsg(params.headers.subject, os.date(), level, message)
29
+ end
30
+ local msg = { headers = params.headers, body = s }
31
+ params.source = smtp.message(msg)
32
+
33
+ local r, e = smtp.send(params)
34
+ if not r then
35
+ return nil, e
36
+ end
37
+
38
+ return true
39
+ end
40
+ )
41
+ end
42
+
43
+ return logging.email
44
+
@@ -0,0 +1,55 @@
1
+ -------------------------------------------------------------------------------
2
+ -- Saves logging information in a file
3
+ --
4
+ -- @author Thiago Costa Ponte (thiago@ideais.com.br)
5
+ --
6
+ -- @copyright 2004-2011 Kepler Project
7
+ --
8
+ -------------------------------------------------------------------------------
9
+
10
+ require"logging"
11
+
12
+ local lastFileNameDatePattern
13
+ local lastFileHandler
14
+
15
+ local openFileLogger = function (filename, datePattern)
16
+
17
+ local filename = string.format(filename, os.date(datePattern))
18
+ if (lastFileNameDatePattern ~= filename) then
19
+
20
+ local f = io.open(filename, "a")
21
+ if (f) then
22
+ f:setvbuf ("line")
23
+ lastFileNameDatePattern = filename
24
+ lastFileHandler = f
25
+ return f
26
+ else
27
+ return nil, string.format("file `%s' could not be opened for writing", filename)
28
+ end
29
+ else
30
+ return lastFileHandler
31
+ end
32
+
33
+ end
34
+
35
+ function logging.file(filename, datePattern, logPattern)
36
+
37
+ if type(filename) ~= "string" then
38
+ filename = "lualogging.log"
39
+ end
40
+
41
+ return logging.new( function(self, level, message)
42
+
43
+ local f, msg = openFileLogger(filename, datePattern)
44
+ if not f then
45
+ return nil, msg
46
+ end
47
+ local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
48
+ f:write(s)
49
+ return true
50
+ end
51
+ )
52
+ end
53
+
54
+ return logging.file
55
+
@@ -0,0 +1,81 @@
1
+ ---------------------------------------------------------------------------
2
+ -- RollingFileAppender is a FileAppender that rolls over the logfile
3
+ -- once it has reached a certain size limit. It also mantains a
4
+ -- maximum number of log files.
5
+ --
6
+ -- @author Tiago Cesar Katcipis (tiagokatcipis@gmail.com)
7
+ --
8
+ -- @copyright 2004-2007 Kepler Project
9
+ ---------------------------------------------------------------------------
10
+
11
+ require"logging"
12
+
13
+
14
+ local function openFile(self)
15
+ self.file = io.open(self.filename, "a")
16
+ if not self.file then
17
+ return nil, string.format("file `%s' could not be opened for writing", self.filename)
18
+ end
19
+ self.file:setvbuf ("line")
20
+ return self.file
21
+ end
22
+
23
+ local rollOver = function (self)
24
+
25
+ for i = self.maxIndex - 1, 1, -1 do
26
+ -- files may not exist yet, lets ignore the possible errors.
27
+ os.rename(self.filename.."."..i, self.filename.."."..i+1)
28
+ end
29
+
30
+ self.file:close()
31
+ self.file = nil
32
+
33
+ local _, msg = os.rename(self.filename, self.filename..".".."1")
34
+
35
+ if msg then
36
+ return nil, string.format("error %s on log rollover", msg)
37
+ end
38
+
39
+ return openFile(self)
40
+ end
41
+
42
+
43
+ local openRollingFileLogger = function (self)
44
+
45
+ if not self.file then
46
+ return openFile(self)
47
+ end
48
+
49
+ local filesize = self.file:seek("end", 0)
50
+
51
+ if (filesize < self.maxSize) then
52
+ return self.file
53
+ end
54
+
55
+ return rollOver(self)
56
+ end
57
+
58
+
59
+ function logging.rolling_file(filename, maxFileSize, maxBackupIndex, logPattern)
60
+
61
+ if type(filename) ~= "string" then
62
+ filename = "lualogging.log"
63
+ end
64
+
65
+ local obj = { filename = filename,
66
+ maxSize = maxFileSize,
67
+ maxIndex = maxBackupIndex or 1
68
+ }
69
+
70
+ return logging.new( function(self, level, message)
71
+
72
+ local f, msg = openRollingFileLogger(obj)
73
+ if not f then
74
+ return nil, msg
75
+ end
76
+ local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
77
+ f:write(s)
78
+ return true
79
+ end
80
+ )
81
+ end
@@ -0,0 +1,35 @@
1
+ -------------------------------------------------------------------------------
2
+ -- Sends the logging information through a socket using luasocket
3
+ --
4
+ -- @author Thiago Costa Ponte (thiago@ideais.com.br)
5
+ --
6
+ -- @copyright 2004-2011 Kepler Project
7
+ --
8
+ -------------------------------------------------------------------------------
9
+
10
+ require"logging"
11
+ local socket = require"socket"
12
+
13
+ function logging.socket(address, port, logPattern)
14
+
15
+ return logging.new( function(self, level, message)
16
+ local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
17
+
18
+ local socket, err = socket.connect(address, port)
19
+ if not socket then
20
+ return nil, err
21
+ end
22
+
23
+ local cond, err = socket:send(s)
24
+ if not cond then
25
+ return nil, err
26
+ end
27
+ socket:close()
28
+
29
+ return true
30
+ end
31
+ )
32
+ end
33
+
34
+ return logging.socket
35
+
@@ -0,0 +1,64 @@
1
+ -------------------------------------------------------------------------------
2
+ -- Saves the logging information in a table using luasql
3
+ --
4
+ -- @author Thiago Costa Ponte (thiago@ideais.com.br)
5
+ --
6
+ -- @copyright 2004-2011 Kepler Project
7
+ --
8
+ -------------------------------------------------------------------------------
9
+
10
+ require"logging"
11
+
12
+ function logging.sql(params)
13
+
14
+ params = params or {}
15
+ params.tablename = params.tablename or "LogTable"
16
+ params.logdatefield = params.logdatefield or "LogDate"
17
+ params.loglevelfield = params.loglevelfield or "LogLevel"
18
+ params.logmessagefield = params.logmessagefield or "LogMessage"
19
+
20
+ if params.connectionfactory == nil or type(params.connectionfactory) ~= "function" then
21
+ return nil, "No specified connection factory function"
22
+ end
23
+
24
+ local con, err
25
+ if params.keepalive then
26
+ con, err = params.connectionfactory()
27
+ end
28
+
29
+ return logging.new( function(self, level, message)
30
+ if (not params.keepalive) or (con == nil) then
31
+ con, err = params.connectionfactory()
32
+ if not con then
33
+ return nil, err
34
+ end
35
+ end
36
+
37
+ local logDate = os.date("%Y-%m-%d %H:%M:%S")
38
+ local insert = string.format("INSERT INTO %s (%s, %s, %s) VALUES ('%s', '%s', '%s')",
39
+ params.tablename, params.logdatefield, params.loglevelfield,
40
+ params.logmessagefield, logDate, level, string.gsub(message, "'", "''"))
41
+
42
+ local ret, err = pcall(con.execute, con, insert)
43
+ if not ret then
44
+ con, err = params.connectionfactory()
45
+ if not con then
46
+ return nil, err
47
+ end
48
+ ret, err = con:execute(insert)
49
+ if not ret then
50
+ return nil, err
51
+ end
52
+ end
53
+
54
+ if not params.keepalive then
55
+ con:close()
56
+ end
57
+
58
+ return true
59
+ end
60
+ )
61
+ end
62
+
63
+ return logging.sql
64
+
@@ -0,0 +1,68 @@
1
+ --------------------------------------------------------------------------------
2
+ ---------------------- ## ##### ##### ###### -----------------------
3
+ ---------------------- ## ## ## ## ## ## ## -----------------------
4
+ ---------------------- ## ## ## ## ## ###### -----------------------
5
+ ---------------------- ## ## ## ## ## ## -----------------------
6
+ ---------------------- ###### ##### ##### ## -----------------------
7
+ ---------------------- -----------------------
8
+ ----------------------- Lua Object-Oriented Programming ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: LOOP - Lua Object-Oriented Programming --
11
+ -- Release: 2.3 beta --
12
+ -- Title : Base Class Model --
13
+ -- Author : Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- Exported API: --
16
+ -- class(class) --
17
+ -- new(class, ...) --
18
+ -- classof(object) --
19
+ -- isclass(class) --
20
+ -- instanceof(object, class) --
21
+ -- memberof(class, name) --
22
+ -- members(class) --
23
+ --------------------------------------------------------------------------------
24
+
25
+ local pairs = pairs
26
+ local unpack = unpack
27
+ local rawget = rawget
28
+ local setmetatable = setmetatable
29
+ local getmetatable = getmetatable
30
+
31
+ module "loop.base"
32
+
33
+ --------------------------------------------------------------------------------
34
+ function rawnew(class, object)
35
+ return setmetatable(object or {}, class)
36
+ end
37
+ --------------------------------------------------------------------------------
38
+ function new(class, ...)
39
+ if class.__init
40
+ then return class:__init(...)
41
+ else return rawnew(class, ...)
42
+ end
43
+ end
44
+ --------------------------------------------------------------------------------
45
+ function initclass(class)
46
+ if class == nil then class = {} end
47
+ if class.__index == nil then class.__index = class end
48
+ return class
49
+ end
50
+ --------------------------------------------------------------------------------
51
+ local MetaClass = { __call = new }
52
+ function class(class)
53
+ return setmetatable(initclass(class), MetaClass)
54
+ end
55
+ --------------------------------------------------------------------------------
56
+ classof = getmetatable
57
+ --------------------------------------------------------------------------------
58
+ function isclass(class)
59
+ return classof(class) == MetaClass
60
+ end
61
+ --------------------------------------------------------------------------------
62
+ function instanceof(object, class)
63
+ return classof(object) == class
64
+ end
65
+ --------------------------------------------------------------------------------
66
+ memberof = rawget
67
+ --------------------------------------------------------------------------------
68
+ members = pairs
@@ -0,0 +1,312 @@
1
+ --------------------------------------------------------------------------------
2
+ ---------------------- ## ##### ##### ###### -----------------------
3
+ ---------------------- ## ## ## ## ## ## ## -----------------------
4
+ ---------------------- ## ## ## ## ## ###### -----------------------
5
+ ---------------------- ## ## ## ## ## ## -----------------------
6
+ ---------------------- ###### ##### ##### ## -----------------------
7
+ ---------------------- -----------------------
8
+ ----------------------- Lua Object-Oriented Programming ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: LOOP - Lua Object-Oriented Programming --
11
+ -- Release: 2.3 beta --
12
+ -- Title : Cached Class Model --
13
+ -- Author : Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- Exported API: --
16
+ -- class(class, ...) --
17
+ -- new(class, ...) --
18
+ -- classof(object) --
19
+ -- isclass(class) --
20
+ -- instanceof(object, class) --
21
+ -- memberof(class, name) --
22
+ -- members(class) --
23
+ -- superclass(class) --
24
+ -- subclassof(class, super) --
25
+ -- supers(class) --
26
+ -- allmembers(class) --
27
+ --------------------------------------------------------------------------------
28
+
29
+ local type = type
30
+ local unpack = unpack
31
+ local pairs = pairs
32
+ local rawget = rawget
33
+ local rawset = rawset
34
+ local require = require
35
+ local ipairs = ipairs
36
+ local setmetatable = setmetatable
37
+ local select = select
38
+
39
+ local table = require "loop.table"
40
+
41
+ module "loop.cached"
42
+ --------------------------------------------------------------------------------
43
+ local OrderedSet = require "loop.collection.OrderedSet"
44
+ local base = require "loop.multiple"
45
+ --------------------------------------------------------------------------------
46
+ table.copy(base, _M)
47
+ --------------------------------------------------------------------------------
48
+ local function subsiterator(queue, class)
49
+ class = queue[class]
50
+ if class then
51
+ for sub in pairs(class.subs) do
52
+ queue:enqueue(sub)
53
+ end
54
+ return class
55
+ end
56
+ end
57
+ function subs(class)
58
+ queue = OrderedSet()
59
+ queue:enqueue(class)
60
+ return subsiterator, queue, OrderedSet.firstkey
61
+ end
62
+ --------------------------------------------------------------------------------
63
+ local function proxy_newindex(proxy, field, value)
64
+ return base.classof(proxy):updatefield(field, value)
65
+ end
66
+ --------------------------------------------------------------------------------
67
+ function getclass(class)
68
+ local cached = base.classof(class)
69
+ if base.instanceof(cached, CachedClass) then
70
+ return cached
71
+ end
72
+ end
73
+ --------------------------------------------------------------------------------
74
+ local ClassMap = base.new { __mode = "k" }
75
+ --------------------------------------------------------------------------------
76
+ CachedClass = base.class()
77
+
78
+ function CachedClass:__init(class)
79
+ local meta = {}
80
+ self = base.rawnew(self, {
81
+ __call = new,
82
+ __index = meta,
83
+ __newindex = proxy_newindex,
84
+ supers = {},
85
+ subs = {},
86
+ members = table.copy(class, {}),
87
+ class = meta,
88
+ })
89
+ self.proxy = setmetatable(class and table.clear(class) or {}, self)
90
+ ClassMap[self.class] = self.proxy
91
+ return self
92
+ end
93
+
94
+ function CachedClass:updatehierarchy(...)
95
+ -- separate cached from non-cached classes
96
+ local caches = {}
97
+ local supers = {}
98
+ for i = 1, select("#", ...) do
99
+ local super = select(i, ...)
100
+ local cached = getclass(super)
101
+ if cached
102
+ then caches[#caches + 1] = cached
103
+ else supers[#supers + 1] = super
104
+ end
105
+ end
106
+
107
+ -- remove it from its old superclasses
108
+ for _, super in ipairs(self.supers) do
109
+ super:removesubclass(self)
110
+ end
111
+
112
+ -- update superclasses
113
+ self.uncached = supers
114
+ self.supers = caches
115
+
116
+ -- register as subclass in all superclasses
117
+ for _, super in ipairs(self.supers) do
118
+ super:addsubclass(self)
119
+ end
120
+ end
121
+
122
+ function CachedClass:updateinheritance()
123
+ -- relink all affected classes
124
+ for sub in subs(self) do
125
+ sub:updatemembers()
126
+ sub:updatesuperclasses()
127
+ end
128
+ end
129
+
130
+ function CachedClass:addsubclass(class)
131
+ self.subs[class] = true
132
+ end
133
+
134
+ function CachedClass:removesubclass(class)
135
+ self.subs[class] = nil
136
+ end
137
+
138
+ function CachedClass:updatesuperclasses()
139
+ local uncached = {}
140
+ -- copy uncached superclasses defined in the class
141
+ for _, super in ipairs(self.uncached) do
142
+ if not uncached[super] then
143
+ uncached[super] = true
144
+ uncached[#uncached + 1] = super
145
+ end
146
+ end
147
+ -- copy inherited uncached superclasses
148
+ for _, cached in ipairs(self.supers) do
149
+ for _, super in base.supers(cached.class) do
150
+ if not uncached[super] then
151
+ uncached[super] = true
152
+ uncached[#uncached + 1] = super
153
+ end
154
+ end
155
+ end
156
+ base.class(self.class, unpack(uncached))
157
+ end
158
+
159
+ function CachedClass:updatemembers()
160
+ local class = table.clear(self.class)
161
+ for i = #self.supers, 1, -1 do
162
+ local super = self.supers[i].class
163
+ -- copy inherited members
164
+ table.copy(super, class)
165
+ -- do not copy the default __index value
166
+ if rawget(class, "__index") == super then
167
+ rawset(class, "__index", nil)
168
+ end
169
+ end
170
+ -- copy members defined in the class
171
+ table.copy(self.members, class)
172
+ -- set the default __index value
173
+ if rawget(class, "__index") == nil then
174
+ rawset(class, "__index", class)
175
+ end
176
+ end
177
+
178
+ function CachedClass:updatefield(name, member)
179
+ -- update member list
180
+ local members = self.members
181
+ members[name] = member
182
+
183
+ -- get old linkage
184
+ local class = self.class
185
+ local old = class[name]
186
+
187
+ -- replace old linkage for the new one
188
+ class[name] = member
189
+ local queue = OrderedSet()
190
+ for sub in pairs(self.subs) do
191
+ queue:enqueue(sub)
192
+ end
193
+ while queue:head() do
194
+ local current = queue:dequeue()
195
+ class = current.class
196
+ members = current.members
197
+ if members[name] == nil then
198
+ for _, super in ipairs(current.supers) do
199
+ local superclass = super.class
200
+ if superclass[name] ~= nil then
201
+ if superclass[name] ~= class[name] then
202
+ class[name] = superclass[name]
203
+ for sub in pairs(current.subs) do
204
+ queue:enqueue(sub)
205
+ end
206
+ end
207
+ break
208
+ end
209
+ end
210
+ end
211
+ end
212
+ return old
213
+ end
214
+ --------------------------------------------------------------------------------
215
+ function class(class, ...)
216
+ class = getclass(class) or CachedClass(class)
217
+ class:updatehierarchy(...)
218
+ class:updateinheritance()
219
+ return class.proxy
220
+ end
221
+ --------------------------------------------------------------------------------
222
+ function rawnew(class, object)
223
+ local cached = getclass(class)
224
+ if cached then class = cached.class end
225
+ return base.rawnew(class, object)
226
+ end
227
+ --------------------------------------------------------------------------------
228
+ function new(class, ...)
229
+ if class.__init
230
+ then return class:__init(...)
231
+ else return rawnew(class, ...)
232
+ end
233
+ end
234
+ --------------------------------------------------------------------------------
235
+ function classof(object)
236
+ local class = base.classof(object)
237
+ return ClassMap[class] or class
238
+ end
239
+ --------------------------------------------------------------------------------
240
+ function isclass(class)
241
+ return getclass(class) ~= nil
242
+ end
243
+ --------------------------------------------------------------------------------
244
+ function superclass(class)
245
+ local supers = {}
246
+ local cached = getclass(class)
247
+ if cached then
248
+ for index, super in ipairs(cached.supers) do
249
+ supers[index] = super.proxy
250
+ end
251
+ class = cached.class
252
+ end
253
+ for _, super in base.supers(class) do
254
+ supers[#supers + 1] = super
255
+ end
256
+ return unpack(supers)
257
+ end
258
+ --------------------------------------------------------------------------------
259
+ local function icached(cached, index)
260
+ local super
261
+ local supers = cached.supers
262
+ index = index + 1
263
+ -- check if index points to a cached superclass
264
+ super = supers[index]
265
+ if super then return index, super.proxy end
266
+ -- check if index points to an uncached superclass
267
+ super = cached.uncached[index - #supers]
268
+ if super then return index, super end
269
+ end
270
+ function supers(class)
271
+ local cached = getclass(class)
272
+ if cached
273
+ then return icached, cached, 0
274
+ else return base.supers(class)
275
+ end
276
+ end
277
+ --------------------------------------------------------------------------------
278
+ function subclassof(class, super)
279
+ if class == super then return true end
280
+ for _, superclass in supers(class) do
281
+ if subclassof(superclass, super) then return true end
282
+ end
283
+ return false
284
+ end
285
+ --------------------------------------------------------------------------------
286
+ function instanceof(object, class)
287
+ return subclassof(classof(object), class)
288
+ end
289
+ --------------------------------------------------------------------------------
290
+ function memberof(class, name)
291
+ local cached = getclass(class)
292
+ if cached
293
+ then return cached.members[name]
294
+ else return base.member(class, name)
295
+ end
296
+ end
297
+ --------------------------------------------------------------------------------
298
+ function members(class)
299
+ local cached = getclass(class)
300
+ if cached
301
+ then return pairs(cached.members)
302
+ else return base.members(class)
303
+ end
304
+ end
305
+ --------------------------------------------------------------------------------
306
+ function allmembers(class)
307
+ local cached = getclass(class)
308
+ if cached
309
+ then return pairs(cached.class)
310
+ else return base.members(class)
311
+ end
312
+ end