esruby 0.0.0

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 (763) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +22 -0
  4. data/bin/esruby +34 -0
  5. data/lib/esruby.rb +26 -0
  6. data/lib/esruby/build.rb +140 -0
  7. data/lib/esruby/build/configuration.rb +77 -0
  8. data/lib/esruby/gem.rb +5 -0
  9. data/lib/esruby/gem/specification.rb +35 -0
  10. data/resources/build_config.eruby +53 -0
  11. data/resources/cpp/esruby.cpp +64 -0
  12. data/resources/cpp/esruby.hpp +42 -0
  13. data/resources/cpp/main.cpp +9 -0
  14. data/resources/js/esruby.js +45 -0
  15. data/resources/mruby/AUTHORS +40 -0
  16. data/resources/mruby/CONTRIBUTING.md +68 -0
  17. data/resources/mruby/LEGAL +6 -0
  18. data/resources/mruby/MITL +20 -0
  19. data/resources/mruby/Makefile +17 -0
  20. data/resources/mruby/NEWS +13 -0
  21. data/resources/mruby/README.md +92 -0
  22. data/resources/mruby/Rakefile +152 -0
  23. data/resources/mruby/TODO +10 -0
  24. data/resources/mruby/appveyor.yml +38 -0
  25. data/resources/mruby/appveyor_config.rb +50 -0
  26. data/resources/mruby/benchmark/bm_ao_render.rb +314 -0
  27. data/resources/mruby/benchmark/bm_app_lc_fizzbuzz.rb +52 -0
  28. data/resources/mruby/benchmark/bm_fib.rb +7 -0
  29. data/resources/mruby/benchmark/bm_so_lists.rb +47 -0
  30. data/resources/mruby/benchmark/build_config_boxing.rb +28 -0
  31. data/resources/mruby/benchmark/build_config_cc.rb +13 -0
  32. data/resources/mruby/benchmark/plot.gpl +5 -0
  33. data/resources/mruby/bin/mirb +0 -0
  34. data/resources/mruby/bin/mrbc +0 -0
  35. data/resources/mruby/bin/mruby +0 -0
  36. data/resources/mruby/bin/mruby-strip +0 -0
  37. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/README.md +82 -0
  38. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrbgem.rake +63 -0
  39. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/regexp_pcre.rb +232 -0
  40. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/string_pcre.rb +333 -0
  41. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/132html +313 -0
  42. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/AUTHORS +45 -0
  43. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CMakeLists.txt +959 -0
  44. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/COPYING +5 -0
  45. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ChangeLog +4981 -0
  46. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CheckMan +67 -0
  47. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CleanTxt +113 -0
  48. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Detrail +35 -0
  49. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/HACKING +473 -0
  50. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/INSTALL +370 -0
  51. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/LICENCE +92 -0
  52. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.am +877 -0
  53. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.in +2917 -0
  54. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NEWS +611 -0
  55. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-AUTOTOOLS-BUILD +639 -0
  56. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-UNIX-USE +7 -0
  57. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/PrepareRelease +253 -0
  58. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/README +935 -0
  59. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunGrepTest +551 -0
  60. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest +1015 -0
  61. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest.bat +616 -0
  62. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/aclocal.m4 +1230 -0
  63. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.0 +21280 -0
  64. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.1 +21280 -0
  65. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/requests +273 -0
  66. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.0 +2421 -0
  67. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.1 +1144 -0
  68. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  69. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindEditline.cmake +17 -0
  70. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  71. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindReadline.cmake +29 -0
  72. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/compile +343 -0
  73. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config-cmake.h.in +54 -0
  74. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.guess +1552 -0
  75. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h +392 -0
  76. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.generic +392 -0
  77. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.in +343 -0
  78. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.sub +1804 -0
  79. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure +21280 -0
  80. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure.ac +1082 -0
  81. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/depcomp +708 -0
  82. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/dftables.c +212 -0
  83. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/index.html +180 -0
  84. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre-config.html +109 -0
  85. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre.html +204 -0
  86. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre16.html +383 -0
  87. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_assign_jit_stack.html +76 -0
  88. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile.html +108 -0
  89. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile2.html +112 -0
  90. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_config.html +91 -0
  91. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_named_substring.html +65 -0
  92. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_substring.html +61 -0
  93. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_dfa_exec.html +128 -0
  94. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_exec.html +110 -0
  95. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_study.html +46 -0
  96. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring.html +46 -0
  97. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring_list.html +46 -0
  98. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_fullinfo.html +108 -0
  99. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_named_substring.html +68 -0
  100. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringnumber.html +57 -0
  101. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringtable_entries.html +60 -0
  102. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring.html +64 -0
  103. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring_list.html +61 -0
  104. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_exec.html +108 -0
  105. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_alloc.html +55 -0
  106. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_free.html +48 -0
  107. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_maketables.html +48 -0
  108. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_pattern_to_host_byte_order.html +58 -0
  109. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_refcount.html +51 -0
  110. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_study.html +68 -0
  111. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_utf16_to_host_byte_order.html +57 -0
  112. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_version.html +46 -0
  113. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreapi.html +2786 -0
  114. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrebuild.html +517 -0
  115. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecallout.html +243 -0
  116. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecompat.html +216 -0
  117. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecpp.html +368 -0
  118. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcredemo.html +426 -0
  119. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcregrep.html +757 -0
  120. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrejit.html +458 -0
  121. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrelimits.html +86 -0
  122. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrematching.html +233 -0
  123. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepartial.html +474 -0
  124. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepattern.html +2953 -0
  125. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreperform.html +195 -0
  126. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreposix.html +292 -0
  127. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreprecompile.html +158 -0
  128. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresample.html +110 -0
  129. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrestack.html +225 -0
  130. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresyntax.html +521 -0
  131. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcretest.html +1082 -0
  132. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreunicode.html +270 -0
  133. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/index.html.src +180 -0
  134. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.1 +92 -0
  135. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.txt +86 -0
  136. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.3 +202 -0
  137. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.txt +9909 -0
  138. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre16.3 +390 -0
  139. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre32.3 +389 -0
  140. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_assign_jit_stack.3 +61 -0
  141. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile.3 +98 -0
  142. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile2.3 +106 -0
  143. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_config.3 +76 -0
  144. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_named_substring.3 +59 -0
  145. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_substring.3 +52 -0
  146. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_dfa_exec.3 +125 -0
  147. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_exec.3 +103 -0
  148. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_study.3 +31 -0
  149. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring.3 +31 -0
  150. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring_list.3 +31 -0
  151. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_fullinfo.3 +95 -0
  152. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_named_substring.3 +62 -0
  153. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringnumber.3 +45 -0
  154. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringtable_entries.3 +48 -0
  155. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring.3 +55 -0
  156. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring_list.3 +49 -0
  157. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_exec.3 +104 -0
  158. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_alloc.3 +45 -0
  159. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_free.3 +35 -0
  160. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_maketables.3 +33 -0
  161. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_pattern_to_host_byte_order.3 +46 -0
  162. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_refcount.3 +36 -0
  163. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_study.3 +56 -0
  164. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf16_to_host_byte_order.3 +46 -0
  165. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf32_to_host_byte_order.3 +46 -0
  166. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_version.3 +31 -0
  167. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreapi.3 +2823 -0
  168. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrebuild.3 +520 -0
  169. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecallout.3 +214 -0
  170. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecompat.3 +185 -0
  171. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecpp.3 +348 -0
  172. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.1 +679 -0
  173. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.txt +740 -0
  174. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrejit.3 +437 -0
  175. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrelimits.3 +67 -0
  176. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrematching.3 +206 -0
  177. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepartial.3 +445 -0
  178. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepattern.3 +2983 -0
  179. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreperform.3 +177 -0
  180. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreposix.3 +270 -0
  181. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreprecompile.3 +151 -0
  182. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresample.3 +99 -0
  183. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrestack.3 +215 -0
  184. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresyntax.3 +496 -0
  185. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.1 +1079 -0
  186. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.txt +1012 -0
  187. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreunicode.3 +255 -0
  188. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/perltest.txt +42 -0
  189. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/install-sh +527 -0
  190. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre.pc.in +12 -0
  191. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre16.pc.in +12 -0
  192. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre32.pc.in +12 -0
  193. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcrecpp.pc.in +12 -0
  194. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcreposix.pc.in +13 -0
  195. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ltmain.sh +9636 -0
  196. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ax_pthread.m4 +309 -0
  197. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/libtool.m4 +7844 -0
  198. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltoptions.m4 +369 -0
  199. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltsugar.m4 +123 -0
  200. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltversion.m4 +23 -0
  201. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/lt~obsolete.m4 +98 -0
  202. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/pcre_visibility.m4 +89 -0
  203. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp.bat +66 -0
  204. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_c.txt +20 -0
  205. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_l.txt +20 -0
  206. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/missing +331 -0
  207. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre-config.in +133 -0
  208. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h +653 -0
  209. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.generic +653 -0
  210. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.in +653 -0
  211. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_byte_order.c +45 -0
  212. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_chartables.c +45 -0
  213. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_compile.c +45 -0
  214. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_config.c +45 -0
  215. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_dfa_exec.c +45 -0
  216. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_exec.c +45 -0
  217. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_fullinfo.c +45 -0
  218. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_get.c +45 -0
  219. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_globals.c +45 -0
  220. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_jit_compile.c +45 -0
  221. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_maketables.c +45 -0
  222. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_newline.c +45 -0
  223. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ord2utf16.c +90 -0
  224. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_printint.c +45 -0
  225. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_refcount.c +45 -0
  226. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_string_utils.c +45 -0
  227. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_study.c +45 -0
  228. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_tables.c +45 -0
  229. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ucd.c +45 -0
  230. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_utf16_utils.c +130 -0
  231. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_valid_utf16.c +156 -0
  232. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_version.c +45 -0
  233. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_xclass.c +45 -0
  234. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_byte_order.c +45 -0
  235. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_chartables.c +45 -0
  236. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_compile.c +45 -0
  237. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_config.c +45 -0
  238. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_dfa_exec.c +45 -0
  239. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_exec.c +45 -0
  240. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_fullinfo.c +45 -0
  241. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_get.c +45 -0
  242. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_globals.c +45 -0
  243. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_jit_compile.c +45 -0
  244. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_maketables.c +45 -0
  245. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_newline.c +45 -0
  246. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ord2utf32.c +82 -0
  247. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_printint.c +45 -0
  248. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_refcount.c +45 -0
  249. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_string_utils.c +45 -0
  250. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_study.c +45 -0
  251. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_tables.c +45 -0
  252. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ucd.c +45 -0
  253. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_utf32_utils.c +141 -0
  254. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_valid_utf32.c +131 -0
  255. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_version.c +45 -0
  256. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_xclass.c +45 -0
  257. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_byte_order.c +318 -0
  258. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c +198 -0
  259. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c.dist +198 -0
  260. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_compile.c +8386 -0
  261. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_config.c +186 -0
  262. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_dfa_exec.c +3582 -0
  263. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_exec.c +7049 -0
  264. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_fullinfo.c +231 -0
  265. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_get.c +662 -0
  266. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_globals.c +84 -0
  267. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_internal.h +2744 -0
  268. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_compile.c +8560 -0
  269. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_test.c +1614 -0
  270. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_maketables.c +151 -0
  271. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_newline.c +210 -0
  272. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ord2utf8.c +94 -0
  273. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_printint.c +766 -0
  274. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_refcount.c +92 -0
  275. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.cc +199 -0
  276. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.h +172 -0
  277. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner_unittest.cc +159 -0
  278. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_string_utils.c +211 -0
  279. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.cc +43 -0
  280. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.h.in +179 -0
  281. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece_unittest.cc +150 -0
  282. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_study.c +1562 -0
  283. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_tables.c +655 -0
  284. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ucd.c +3298 -0
  285. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_valid_utf8.c +312 -0
  286. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_version.c +98 -0
  287. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_xclass.c +198 -0
  288. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.cc +922 -0
  289. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.h +710 -0
  290. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_internal.h +71 -0
  291. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_unittest.cc +1291 -0
  292. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpparg.h.in +174 -0
  293. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcredemo.c +406 -0
  294. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregexp.pas +845 -0
  295. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregrep.c +3180 -0
  296. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.c +419 -0
  297. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.h +146 -0
  298. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcretest.c +5488 -0
  299. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/perltest.pl +237 -0
  300. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfig.h +110 -0
  301. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfigInternal.h +484 -0
  302. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitExecAllocator.c +289 -0
  303. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.c +1766 -0
  304. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.h +985 -0
  305. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_Thumb2.c +2008 -0
  306. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_v5.c +2515 -0
  307. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_32.c +404 -0
  308. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_common.c +1881 -0
  309. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_32.c +269 -0
  310. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_64.c +421 -0
  311. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_common.c +2014 -0
  312. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_32.c +164 -0
  313. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_common.c +1348 -0
  314. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_32.c +547 -0
  315. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_64.c +810 -0
  316. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_common.c +2836 -0
  317. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitUtils.c +332 -0
  318. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepbinary +0 -0
  319. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepfilelist +3 -0
  320. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput +611 -0
  321. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput3 +15 -0
  322. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput8 +11 -0
  323. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputv +4 -0
  324. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputx +43 -0
  325. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greplist +7 -0
  326. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput +707 -0
  327. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput8 +12 -0
  328. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutputN +16 -1
  329. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greppatN4 +2 -0
  330. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16 +0 -0
  331. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-1 +0 -0
  332. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-2 +0 -0
  333. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-1 +0 -0
  334. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-2 +0 -0
  335. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32 +0 -0
  336. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-1 +0 -0
  337. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-2 +0 -0
  338. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-1 +0 -0
  339. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-2 +0 -0
  340. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved8 +0 -0
  341. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput1 +5306 -0
  342. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput10 +1337 -0
  343. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput11 +135 -0
  344. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput12 +89 -0
  345. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput13 +9 -0
  346. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput14 +329 -0
  347. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput15 +430 -0
  348. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput16 +35 -0
  349. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput17 +296 -0
  350. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput18 +296 -0
  351. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput19 +22 -0
  352. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput2 +3813 -0
  353. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput20 +19 -0
  354. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput21 +16 -0
  355. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput22 +13 -0
  356. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput23 +16 -0
  357. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput24 +77 -0
  358. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput25 +32 -0
  359. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput26 +80 -0
  360. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput3 +95 -0
  361. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput4 +624 -0
  362. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput5 +772 -0
  363. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput6 +1319 -0
  364. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput7 +672 -0
  365. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput8 +4801 -0
  366. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput9 +717 -0
  367. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinputEBC +121 -0
  368. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput1 +8798 -0
  369. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput10 +2726 -0
  370. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-16 +713 -0
  371. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-32 +713 -0
  372. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-8 +713 -0
  373. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput12 +181 -0
  374. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput13 +21 -0
  375. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput14 +476 -0
  376. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput15 +1269 -0
  377. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput16 +121 -0
  378. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput17 +505 -0
  379. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-16 +1022 -0
  380. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-32 +1019 -0
  381. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput19 +88 -0
  382. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput2 +12484 -0
  383. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput20 +27 -0
  384. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-16 +90 -0
  385. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-32 +90 -0
  386. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-16 +71 -0
  387. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-32 +71 -0
  388. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput23 +42 -0
  389. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput24 +145 -0
  390. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput25 +79 -0
  391. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput26 +148 -0
  392. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput3 +169 -0
  393. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput4 +1094 -0
  394. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput5 +1849 -0
  395. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput6 +2137 -0
  396. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput7 +1473 -0
  397. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput8 +8019 -0
  398. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput9 +1371 -0
  399. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutputEBC +182 -0
  400. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestinput3 +91 -0
  401. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestoutput3 +166 -0
  402. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ucp.h +197 -0
  403. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/run_test.rb +23 -0
  404. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/src/mruby_regexp_pcre.c +364 -0
  405. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/matchdata.rb +94 -0
  406. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/regexp.rb +264 -0
  407. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/string.rb +201 -0
  408. data/resources/mruby/build_config.rb +152 -0
  409. data/resources/mruby/doc/guides/compile.md +488 -0
  410. data/resources/mruby/doc/guides/debugger.md +370 -0
  411. data/resources/mruby/doc/guides/gc-arena-howto.md +177 -0
  412. data/resources/mruby/doc/guides/mrbconf.md +146 -0
  413. data/resources/mruby/doc/guides/mrbgems.md +340 -0
  414. data/resources/mruby/doc/limitations.md +187 -0
  415. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/README.md +4 -0
  416. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +23 -0
  417. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +5 -0
  418. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +20 -0
  419. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/test/example.rb +7 -0
  420. data/resources/mruby/examples/mrbgems/c_extension_example/README.md +4 -0
  421. data/resources/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +23 -0
  422. data/resources/mruby/examples/mrbgems/c_extension_example/src/example.c +20 -0
  423. data/resources/mruby/examples/mrbgems/c_extension_example/test/example.c +7 -0
  424. data/resources/mruby/examples/mrbgems/c_extension_example/test/example.rb +3 -0
  425. data/resources/mruby/examples/mrbgems/ruby_extension_example/README.md +4 -0
  426. data/resources/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +25 -0
  427. data/resources/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +5 -0
  428. data/resources/mruby/examples/mrbgems/ruby_extension_example/test/example.rb +3 -0
  429. data/resources/mruby/examples/targets/build_config_ArduinoDue.rb +90 -0
  430. data/resources/mruby/examples/targets/build_config_IntelEdison.rb +69 -0
  431. data/resources/mruby/examples/targets/build_config_IntelGalileo.rb +106 -0
  432. data/resources/mruby/examples/targets/build_config_RX630.rb +81 -0
  433. data/resources/mruby/examples/targets/build_config_android_arm64-v8a.rb +26 -0
  434. data/resources/mruby/examples/targets/build_config_android_armeabi.rb +26 -0
  435. data/resources/mruby/examples/targets/build_config_android_armeabi_v7a_neon_hard.rb +28 -0
  436. data/resources/mruby/examples/targets/build_config_chipKITMax32.rb +86 -0
  437. data/resources/mruby/include/mrbconf.h +145 -0
  438. data/resources/mruby/include/mruby.h +1280 -0
  439. data/resources/mruby/include/mruby/array.h +279 -0
  440. data/resources/mruby/include/mruby/boxing_nan.h +102 -0
  441. data/resources/mruby/include/mruby/boxing_no.h +56 -0
  442. data/resources/mruby/include/mruby/boxing_word.h +136 -0
  443. data/resources/mruby/include/mruby/class.h +94 -0
  444. data/resources/mruby/include/mruby/common.h +72 -0
  445. data/resources/mruby/include/mruby/compile.h +194 -0
  446. data/resources/mruby/include/mruby/data.h +75 -0
  447. data/resources/mruby/include/mruby/debug.h +66 -0
  448. data/resources/mruby/include/mruby/dump.h +196 -0
  449. data/resources/mruby/include/mruby/error.h +75 -0
  450. data/resources/mruby/include/mruby/gc.h +91 -0
  451. data/resources/mruby/include/mruby/hash.h +182 -0
  452. data/resources/mruby/include/mruby/irep.h +62 -0
  453. data/resources/mruby/include/mruby/istruct.h +47 -0
  454. data/resources/mruby/include/mruby/khash.h +274 -0
  455. data/resources/mruby/include/mruby/numeric.h +161 -0
  456. data/resources/mruby/include/mruby/object.h +45 -0
  457. data/resources/mruby/include/mruby/opcode.h +161 -0
  458. data/resources/mruby/include/mruby/proc.h +131 -0
  459. data/resources/mruby/include/mruby/range.h +49 -0
  460. data/resources/mruby/include/mruby/re.h +16 -0
  461. data/resources/mruby/include/mruby/string.h +440 -0
  462. data/resources/mruby/include/mruby/throw.h +55 -0
  463. data/resources/mruby/include/mruby/value.h +309 -0
  464. data/resources/mruby/include/mruby/variable.h +138 -0
  465. data/resources/mruby/include/mruby/version.h +110 -0
  466. data/resources/mruby/lib/mruby-core-ext.rb +79 -0
  467. data/resources/mruby/lib/mruby/build.rb +355 -0
  468. data/resources/mruby/lib/mruby/build/command.rb +324 -0
  469. data/resources/mruby/lib/mruby/build/load_gems.rb +122 -0
  470. data/resources/mruby/lib/mruby/gem.rb +459 -0
  471. data/resources/mruby/lib/mruby/source.rb +30 -0
  472. data/resources/mruby/minirake +484 -0
  473. data/resources/mruby/mrbgems/default.gembox +82 -0
  474. data/resources/mruby/mrbgems/full-core.gembox +9 -0
  475. data/resources/mruby/mrbgems/mruby-array-ext/mrbgem.rake +6 -0
  476. data/resources/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +935 -0
  477. data/resources/mruby/mrbgems/mruby-array-ext/src/array.c +246 -0
  478. data/resources/mruby/mrbgems/mruby-array-ext/test/array.rb +422 -0
  479. data/resources/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +286 -0
  480. data/resources/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +701 -0
  481. data/resources/mruby/mrbgems/mruby-bin-debugger/mrbgem.rake +9 -0
  482. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +505 -0
  483. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.h +26 -0
  484. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +240 -0
  485. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.h +14 -0
  486. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +78 -0
  487. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +13 -0
  488. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +436 -0
  489. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +502 -0
  490. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +58 -0
  491. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +64 -0
  492. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +759 -0
  493. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +165 -0
  494. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +16 -0
  495. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdberror.h +20 -0
  496. data/resources/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +12 -0
  497. data/resources/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +33 -0
  498. data/resources/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +611 -0
  499. data/resources/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +16 -0
  500. data/resources/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +336 -0
  501. data/resources/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +30 -0
  502. data/resources/mruby/mrbgems/mruby-bin-mruby-config/mruby-config +20 -0
  503. data/resources/mruby/mrbgems/mruby-bin-mruby-config/mruby-config.bat +42 -0
  504. data/resources/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +60 -0
  505. data/resources/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +12 -0
  506. data/resources/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +254 -0
  507. data/resources/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +73 -0
  508. data/resources/mruby/mrbgems/mruby-bin-strip/mrbgem.rake +6 -0
  509. data/resources/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +155 -0
  510. data/resources/mruby/mrbgems/mruby-class-ext/mrbgem.rake +5 -0
  511. data/resources/mruby/mrbgems/mruby-class-ext/src/class.c +68 -0
  512. data/resources/mruby/mrbgems/mruby-class-ext/test/module.rb +55 -0
  513. data/resources/mruby/mrbgems/mruby-compar-ext/mrbgem.rake +5 -0
  514. data/resources/mruby/mrbgems/mruby-compar-ext/mrblib/compar.rb +31 -0
  515. data/resources/mruby/mrbgems/mruby-compiler/bintest/mrbc.rb +30 -0
  516. data/resources/mruby/mrbgems/mruby-compiler/core/codegen.c +3083 -0
  517. data/resources/mruby/mrbgems/mruby-compiler/core/keywords +50 -0
  518. data/resources/mruby/mrbgems/mruby-compiler/core/lex.def +211 -0
  519. data/resources/mruby/mrbgems/mruby-compiler/core/node.h +118 -0
  520. data/resources/mruby/mrbgems/mruby-compiler/core/parse.y +6661 -0
  521. data/resources/mruby/mrbgems/mruby-compiler/mrbgem.rake +40 -0
  522. data/resources/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +5 -0
  523. data/resources/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +813 -0
  524. data/resources/mruby/mrbgems/mruby-enum-ext/test/enum.rb +185 -0
  525. data/resources/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake +7 -0
  526. data/resources/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +178 -0
  527. data/resources/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +53 -0
  528. data/resources/mruby/mrbgems/mruby-enumerator/mrbgem.rake +7 -0
  529. data/resources/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +645 -0
  530. data/resources/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +546 -0
  531. data/resources/mruby/mrbgems/mruby-error/mrbgem.rake +10 -0
  532. data/resources/mruby/mrbgems/mruby-error/src/exception.c +100 -0
  533. data/resources/mruby/mrbgems/mruby-error/test/exception.c +59 -0
  534. data/resources/mruby/mrbgems/mruby-error/test/exception.rb +55 -0
  535. data/resources/mruby/mrbgems/mruby-eval/mrbgem.rake +7 -0
  536. data/resources/mruby/mrbgems/mruby-eval/src/eval.c +346 -0
  537. data/resources/mruby/mrbgems/mruby-eval/test/eval.rb +101 -0
  538. data/resources/mruby/mrbgems/mruby-exit/mrbgem.rake +5 -0
  539. data/resources/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
  540. data/resources/mruby/mrbgems/mruby-fiber/mrbgem.rake +5 -0
  541. data/resources/mruby/mrbgems/mruby-fiber/src/fiber.c +420 -0
  542. data/resources/mruby/mrbgems/mruby-fiber/test/fiber.rb +208 -0
  543. data/resources/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +8 -0
  544. data/resources/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +502 -0
  545. data/resources/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +128 -0
  546. data/resources/mruby/mrbgems/mruby-hash-ext/test/hash.rb +300 -0
  547. data/resources/mruby/mrbgems/mruby-inline-struct/mrbgem.rake +5 -0
  548. data/resources/mruby/mrbgems/mruby-inline-struct/test/inline.c +83 -0
  549. data/resources/mruby/mrbgems/mruby-inline-struct/test/inline.rb +151 -0
  550. data/resources/mruby/mrbgems/mruby-io/README.md +193 -0
  551. data/resources/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +38 -0
  552. data/resources/mruby/mrbgems/mruby-io/mrbgem.rake +17 -0
  553. data/resources/mruby/mrbgems/mruby-io/mrblib/file.rb +208 -0
  554. data/resources/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +29 -0
  555. data/resources/mruby/mrbgems/mruby-io/mrblib/io.rb +387 -0
  556. data/resources/mruby/mrbgems/mruby-io/mrblib/kernel.rb +15 -0
  557. data/resources/mruby/mrbgems/mruby-io/run_test.rb +26 -0
  558. data/resources/mruby/mrbgems/mruby-io/src/file.c +489 -0
  559. data/resources/mruby/mrbgems/mruby-io/src/file_test.c +381 -0
  560. data/resources/mruby/mrbgems/mruby-io/src/io.c +1320 -0
  561. data/resources/mruby/mrbgems/mruby-io/src/mruby_io_gem.c +20 -0
  562. data/resources/mruby/mrbgems/mruby-io/test/file.rb +197 -0
  563. data/resources/mruby/mrbgems/mruby-io/test/file_test.rb +117 -0
  564. data/resources/mruby/mrbgems/mruby-io/test/gc_filedes.sh +4 -0
  565. data/resources/mruby/mrbgems/mruby-io/test/io.rb +642 -0
  566. data/resources/mruby/mrbgems/mruby-io/test/mruby_io_test.c +256 -0
  567. data/resources/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +5 -0
  568. data/resources/mruby/mrbgems/mruby-kernel-ext/mrblib/kernel.rb +13 -0
  569. data/resources/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +264 -0
  570. data/resources/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +86 -0
  571. data/resources/mruby/mrbgems/mruby-math/mrbgem.rake +5 -0
  572. data/resources/mruby/mrbgems/mruby-math/src/math.c +783 -0
  573. data/resources/mruby/mrbgems/mruby-math/test/math.rb +152 -0
  574. data/resources/mruby/mrbgems/mruby-method/README.md +59 -0
  575. data/resources/mruby/mrbgems/mruby-method/mrbgem.rake +7 -0
  576. data/resources/mruby/mrbgems/mruby-method/mrblib/kernel.rb +9 -0
  577. data/resources/mruby/mrbgems/mruby-method/mrblib/method.rb +20 -0
  578. data/resources/mruby/mrbgems/mruby-method/mrblib/unbound_method.rb +9 -0
  579. data/resources/mruby/mrbgems/mruby-method/src/method.c +418 -0
  580. data/resources/mruby/mrbgems/mruby-method/test/method.rb +425 -0
  581. data/resources/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +5 -0
  582. data/resources/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +25 -0
  583. data/resources/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +102 -0
  584. data/resources/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +28 -0
  585. data/resources/mruby/mrbgems/mruby-object-ext/mrbgem.rake +5 -0
  586. data/resources/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +19 -0
  587. data/resources/mruby/mrbgems/mruby-object-ext/src/object.c +112 -0
  588. data/resources/mruby/mrbgems/mruby-object-ext/test/nil.rb +11 -0
  589. data/resources/mruby/mrbgems/mruby-object-ext/test/object.rb +53 -0
  590. data/resources/mruby/mrbgems/mruby-objectspace/mrbgem.rake +5 -0
  591. data/resources/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +187 -0
  592. data/resources/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +60 -0
  593. data/resources/mruby/mrbgems/mruby-pack/README.md +70 -0
  594. data/resources/mruby/mrbgems/mruby-pack/mrbgem.rake +7 -0
  595. data/resources/mruby/mrbgems/mruby-pack/packtest.rb +157 -0
  596. data/resources/mruby/mrbgems/mruby-pack/run_test.rb +26 -0
  597. data/resources/mruby/mrbgems/mruby-pack/src/pack.c +1281 -0
  598. data/resources/mruby/mrbgems/mruby-pack/test/pack.rb +165 -0
  599. data/resources/mruby/mrbgems/mruby-print/mrbgem.rake +5 -0
  600. data/resources/mruby/mrbgems/mruby-print/mrblib/print.rb +64 -0
  601. data/resources/mruby/mrbgems/mruby-print/src/print.c +64 -0
  602. data/resources/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +5 -0
  603. data/resources/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +42 -0
  604. data/resources/mruby/mrbgems/mruby-proc-ext/src/proc.c +173 -0
  605. data/resources/mruby/mrbgems/mruby-proc-ext/test/proc.c +62 -0
  606. data/resources/mruby/mrbgems/mruby-proc-ext/test/proc.rb +96 -0
  607. data/resources/mruby/mrbgems/mruby-random/mrbgem.rake +5 -0
  608. data/resources/mruby/mrbgems/mruby-random/src/mt19937ar.c +224 -0
  609. data/resources/mruby/mrbgems/mruby-random/src/mt19937ar.h +80 -0
  610. data/resources/mruby/mrbgems/mruby-random/src/random.c +349 -0
  611. data/resources/mruby/mrbgems/mruby-random/src/random.h +12 -0
  612. data/resources/mruby/mrbgems/mruby-random/test/random.rb +88 -0
  613. data/resources/mruby/mrbgems/mruby-range-ext/mrbgem.rake +5 -0
  614. data/resources/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +31 -0
  615. data/resources/mruby/mrbgems/mruby-range-ext/src/range.c +176 -0
  616. data/resources/mruby/mrbgems/mruby-range-ext/test/range.rb +32 -0
  617. data/resources/mruby/mrbgems/mruby-socket/README.md +55 -0
  618. data/resources/mruby/mrbgems/mruby-socket/mrbgem.rake +17 -0
  619. data/resources/mruby/mrbgems/mruby-socket/mrblib/socket.rb +621 -0
  620. data/resources/mruby/mrbgems/mruby-socket/run_test.rb +28 -0
  621. data/resources/mruby/mrbgems/mruby-socket/src/const.cstub +453 -0
  622. data/resources/mruby/mrbgems/mruby-socket/src/const.def +163 -0
  623. data/resources/mruby/mrbgems/mruby-socket/src/gen.rb +17 -0
  624. data/resources/mruby/mrbgems/mruby-socket/src/socket.c +928 -0
  625. data/resources/mruby/mrbgems/mruby-socket/test/addrinfo.rb +91 -0
  626. data/resources/mruby/mrbgems/mruby-socket/test/basicsocket.rb +17 -0
  627. data/resources/mruby/mrbgems/mruby-socket/test/ipsocket.rb +44 -0
  628. data/resources/mruby/mrbgems/mruby-socket/test/socket.rb +38 -0
  629. data/resources/mruby/mrbgems/mruby-socket/test/sockettest.c +46 -0
  630. data/resources/mruby/mrbgems/mruby-socket/test/tcpsocket.rb +4 -0
  631. data/resources/mruby/mrbgems/mruby-socket/test/udpsocket.rb +16 -0
  632. data/resources/mruby/mrbgems/mruby-socket/test/unix.rb +130 -0
  633. data/resources/mruby/mrbgems/mruby-sprintf/mrbgem.rake +5 -0
  634. data/resources/mruby/mrbgems/mruby-sprintf/mrblib/string.rb +9 -0
  635. data/resources/mruby/mrbgems/mruby-sprintf/src/kernel.c +30 -0
  636. data/resources/mruby/mrbgems/mruby-sprintf/src/sprintf.c +1126 -0
  637. data/resources/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +110 -0
  638. data/resources/mruby/mrbgems/mruby-string-ext/mrbgem.rake +6 -0
  639. data/resources/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +368 -0
  640. data/resources/mruby/mrbgems/mruby-string-ext/src/string.c +804 -0
  641. data/resources/mruby/mrbgems/mruby-string-ext/test/string.rb +682 -0
  642. data/resources/mruby/mrbgems/mruby-struct/mrbgem.rake +5 -0
  643. data/resources/mruby/mrbgems/mruby-struct/mrblib/struct.rb +103 -0
  644. data/resources/mruby/mrbgems/mruby-struct/src/struct.c +726 -0
  645. data/resources/mruby/mrbgems/mruby-struct/test/struct.rb +205 -0
  646. data/resources/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +5 -0
  647. data/resources/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +78 -0
  648. data/resources/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +64 -0
  649. data/resources/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +48 -0
  650. data/resources/mruby/mrbgems/mruby-test/README.md +7 -0
  651. data/resources/mruby/mrbgems/mruby-test/driver.c +175 -0
  652. data/resources/mruby/mrbgems/mruby-test/init_mrbtest.c +38 -0
  653. data/resources/mruby/mrbgems/mruby-test/mrbgem.rake +191 -0
  654. data/resources/mruby/mrbgems/mruby-time/mrbgem.rake +5 -0
  655. data/resources/mruby/mrbgems/mruby-time/mrblib/time.rb +9 -0
  656. data/resources/mruby/mrbgems/mruby-time/src/time.c +869 -0
  657. data/resources/mruby/mrbgems/mruby-time/test/time.rb +228 -0
  658. data/resources/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +5 -0
  659. data/resources/mruby/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb +11 -0
  660. data/resources/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +24 -0
  661. data/resources/mruby/mrblib/00class.rb +29 -0
  662. data/resources/mruby/mrblib/10error.rb +59 -0
  663. data/resources/mruby/mrblib/array.rb +243 -0
  664. data/resources/mruby/mrblib/compar.rb +84 -0
  665. data/resources/mruby/mrblib/enum.rb +348 -0
  666. data/resources/mruby/mrblib/float.rb +9 -0
  667. data/resources/mruby/mrblib/hash.rb +358 -0
  668. data/resources/mruby/mrblib/init_mrblib.c +11 -0
  669. data/resources/mruby/mrblib/kernel.rb +50 -0
  670. data/resources/mruby/mrblib/mrblib.rake +21 -0
  671. data/resources/mruby/mrblib/numeric.rb +163 -0
  672. data/resources/mruby/mrblib/range.rb +67 -0
  673. data/resources/mruby/mrblib/string.rb +275 -0
  674. data/resources/mruby/mruby-source.gemspec +18 -0
  675. data/resources/mruby/src/array.c +1251 -0
  676. data/resources/mruby/src/backtrace.c +285 -0
  677. data/resources/mruby/src/class.c +2546 -0
  678. data/resources/mruby/src/codedump.c +477 -0
  679. data/resources/mruby/src/compar.c +13 -0
  680. data/resources/mruby/src/crc.c +39 -0
  681. data/resources/mruby/src/debug.c +217 -0
  682. data/resources/mruby/src/dump.c +1106 -0
  683. data/resources/mruby/src/enum.c +14 -0
  684. data/resources/mruby/src/error.c +513 -0
  685. data/resources/mruby/src/error.h +3 -0
  686. data/resources/mruby/src/etc.c +246 -0
  687. data/resources/mruby/src/fmt_fp.c +374 -0
  688. data/resources/mruby/src/gc.c +1835 -0
  689. data/resources/mruby/src/hash.c +916 -0
  690. data/resources/mruby/src/init.c +51 -0
  691. data/resources/mruby/src/kernel.c +1264 -0
  692. data/resources/mruby/src/load.c +706 -0
  693. data/resources/mruby/src/mruby_core.rake +20 -0
  694. data/resources/mruby/src/numeric.c +1574 -0
  695. data/resources/mruby/src/object.c +618 -0
  696. data/resources/mruby/src/opcode.h +2 -0
  697. data/resources/mruby/src/pool.c +209 -0
  698. data/resources/mruby/src/print.c +47 -0
  699. data/resources/mruby/src/proc.c +313 -0
  700. data/resources/mruby/src/range.c +446 -0
  701. data/resources/mruby/src/state.c +307 -0
  702. data/resources/mruby/src/string.c +3025 -0
  703. data/resources/mruby/src/symbol.c +494 -0
  704. data/resources/mruby/src/value_array.h +27 -0
  705. data/resources/mruby/src/variable.c +982 -0
  706. data/resources/mruby/src/version.c +17 -0
  707. data/resources/mruby/src/vm.c +3020 -0
  708. data/resources/mruby/tasks/benchmark.rake +91 -0
  709. data/resources/mruby/tasks/gitlab.rake +118 -0
  710. data/resources/mruby/tasks/libmruby.rake +24 -0
  711. data/resources/mruby/tasks/mrbgems.rake +98 -0
  712. data/resources/mruby/tasks/toolchains/android.rake +321 -0
  713. data/resources/mruby/tasks/toolchains/clang.rake +9 -0
  714. data/resources/mruby/tasks/toolchains/gcc.rake +66 -0
  715. data/resources/mruby/tasks/toolchains/openwrt.rake +38 -0
  716. data/resources/mruby/tasks/toolchains/visualcpp.rake +68 -0
  717. data/resources/mruby/test/assert.rb +249 -0
  718. data/resources/mruby/test/bintest.rb +33 -0
  719. data/resources/mruby/test/report.rb +4 -0
  720. data/resources/mruby/test/t/argumenterror.rb +16 -0
  721. data/resources/mruby/test/t/array.rb +394 -0
  722. data/resources/mruby/test/t/basicobject.rb +11 -0
  723. data/resources/mruby/test/t/bs_block.rb +521 -0
  724. data/resources/mruby/test/t/bs_literal.rb +38 -0
  725. data/resources/mruby/test/t/class.rb +451 -0
  726. data/resources/mruby/test/t/codegen.rb +197 -0
  727. data/resources/mruby/test/t/comparable.rb +80 -0
  728. data/resources/mruby/test/t/ensure.rb +54 -0
  729. data/resources/mruby/test/t/enumerable.rb +134 -0
  730. data/resources/mruby/test/t/exception.rb +422 -0
  731. data/resources/mruby/test/t/false.rb +31 -0
  732. data/resources/mruby/test/t/float.rb +209 -0
  733. data/resources/mruby/test/t/gc.rb +45 -0
  734. data/resources/mruby/test/t/hash.rb +375 -0
  735. data/resources/mruby/test/t/indexerror.rb +6 -0
  736. data/resources/mruby/test/t/integer.rb +277 -0
  737. data/resources/mruby/test/t/iterations.rb +61 -0
  738. data/resources/mruby/test/t/kernel.rb +600 -0
  739. data/resources/mruby/test/t/lang.rb +74 -0
  740. data/resources/mruby/test/t/literals.rb +337 -0
  741. data/resources/mruby/test/t/localjumperror.rb +13 -0
  742. data/resources/mruby/test/t/methods.rb +109 -0
  743. data/resources/mruby/test/t/module.rb +914 -0
  744. data/resources/mruby/test/t/nameerror.rb +28 -0
  745. data/resources/mruby/test/t/nil.rb +39 -0
  746. data/resources/mruby/test/t/nomethoderror.rb +22 -0
  747. data/resources/mruby/test/t/numeric.rb +43 -0
  748. data/resources/mruby/test/t/object.rb +11 -0
  749. data/resources/mruby/test/t/proc.rb +180 -0
  750. data/resources/mruby/test/t/range.rb +95 -0
  751. data/resources/mruby/test/t/rangeerror.rb +6 -0
  752. data/resources/mruby/test/t/regexperror.rb +4 -0
  753. data/resources/mruby/test/t/runtimeerror.rb +6 -0
  754. data/resources/mruby/test/t/standarderror.rb +6 -0
  755. data/resources/mruby/test/t/string.rb +728 -0
  756. data/resources/mruby/test/t/superclass.rb +47 -0
  757. data/resources/mruby/test/t/symbol.rb +30 -0
  758. data/resources/mruby/test/t/syntax.rb +468 -0
  759. data/resources/mruby/test/t/true.rb +31 -0
  760. data/resources/mruby/test/t/typeerror.rb +6 -0
  761. data/resources/mruby/test/t/unicode.rb +39 -0
  762. data/resources/mruby/travis_config.rb +53 -0
  763. metadata +806 -0
@@ -0,0 +1,38 @@
1
+ #include <stdlib.h>
2
+ #include <mruby.h>
3
+ #include <mruby/irep.h>
4
+ #include <mruby/variable.h>
5
+
6
+ extern const uint8_t mrbtest_assert_irep[];
7
+
8
+ void mrbgemtest_init(mrb_state* mrb);
9
+ void mrb_init_test_driver(mrb_state* mrb, mrb_bool verbose);
10
+ void mrb_t_pass_result(mrb_state *mrb_dst, mrb_state *mrb_src);
11
+
12
+ void
13
+ mrb_init_mrbtest(mrb_state *mrb)
14
+ {
15
+ mrb_state *core_test;
16
+
17
+ mrb_load_irep(mrb, mrbtest_assert_irep);
18
+
19
+ core_test = mrb_open_core(mrb_default_allocf, NULL);
20
+ if (core_test == NULL) {
21
+ fprintf(stderr, "Invalid mrb_state, exiting %s", __FUNCTION__);
22
+ exit(EXIT_FAILURE);
23
+ }
24
+ mrb_init_test_driver(core_test, mrb_test(mrb_gv_get(mrb, mrb_intern_lit(mrb, "$mrbtest_verbose"))));
25
+ mrb_load_irep(core_test, mrbtest_assert_irep);
26
+ mrb_t_pass_result(mrb, core_test);
27
+
28
+ #ifndef DISABLE_GEMS
29
+ mrbgemtest_init(mrb);
30
+ #endif
31
+
32
+ if (mrb->exc) {
33
+ mrb_print_error(mrb);
34
+ exit(EXIT_FAILURE);
35
+ }
36
+ mrb_close(core_test);
37
+ }
38
+
@@ -0,0 +1,191 @@
1
+ MRuby::Gem::Specification.new('mruby-test') do |spec|
2
+ spec.license = 'MIT'
3
+ spec.author = 'mruby developers'
4
+ spec.summary = 'mruby test'
5
+
6
+ build.bins << 'mrbtest'
7
+ spec.add_dependency('mruby-compiler', :core => 'mruby-compiler')
8
+
9
+ spec.test_rbfiles = Dir.glob("#{MRUBY_ROOT}/test/t/*.rb")
10
+ if build.cc.defines.flatten.include?("MRB_WITHOUT_FLOAT")
11
+ spec.test_rbfiles.delete("#{MRUBY_ROOT}/test/t/float.rb")
12
+ end
13
+
14
+
15
+ clib = "#{build_dir}/mrbtest.c"
16
+ mlib = clib.ext(exts.object)
17
+ exec = exefile("#{build.build_dir}/bin/mrbtest")
18
+
19
+ libmruby = libfile("#{build.build_dir}/lib/libmruby")
20
+ libmruby_core = libfile("#{build.build_dir}/lib/libmruby_core")
21
+
22
+ mrbtest_lib = libfile("#{build_dir}/mrbtest")
23
+ mrbtest_objs = []
24
+
25
+ driver_obj = objfile("#{build_dir}/driver")
26
+ driver = "#{spec.dir}/driver.c"
27
+
28
+ assert_c = "#{build_dir}/assert.c"
29
+ assert_rb = "#{MRUBY_ROOT}/test/assert.rb"
30
+ assert_lib = assert_c.ext(exts.object)
31
+ mrbtest_objs << assert_lib
32
+
33
+ file assert_lib => assert_c
34
+ file assert_c => assert_rb do |t|
35
+ open(t.name, 'w') do |f|
36
+ mrbc.run f, assert_rb, 'mrbtest_assert_irep'
37
+ end
38
+ end
39
+
40
+ gem_table = build.gems.generate_gem_table build
41
+
42
+ build.gems.each do |g|
43
+ test_rbobj = g.test_rbireps.ext(exts.object)
44
+ g.test_objs << test_rbobj
45
+ dep_list = build.gems.tsort_dependencies(g.test_dependencies, gem_table).select(&:generate_functions)
46
+
47
+ file test_rbobj => g.test_rbireps
48
+ file g.test_rbireps => [g.test_rbfiles].flatten do |t|
49
+ FileUtils.mkdir_p File.dirname(t.name)
50
+ open(t.name, 'w') do |f|
51
+ g.print_gem_test_header(f)
52
+ test_preload = g.test_preload and [g.dir, MRUBY_ROOT].map {|dir|
53
+ File.expand_path(g.test_preload, dir)
54
+ }.find {|file| File.exist?(file) }
55
+
56
+ f.puts %Q[/*]
57
+ f.puts %Q[ * This file contains a test code for #{g.name} gem.]
58
+ f.puts %Q[ *]
59
+ f.puts %Q[ * IMPORTANT:]
60
+ f.puts %Q[ * This file was generated!]
61
+ f.puts %Q[ * All manual changes will get lost.]
62
+ f.puts %Q[ */]
63
+ if test_preload.nil?
64
+ f.puts %Q[extern const uint8_t mrbtest_assert_irep[];]
65
+ else
66
+ g.build.mrbc.run f, test_preload, "gem_test_irep_#{g.funcname}_preload"
67
+ end
68
+ g.test_rbfiles.flatten.each_with_index do |rbfile, i|
69
+ g.build.mrbc.run f, rbfile, "gem_test_irep_#{g.funcname}_#{i}"
70
+ end
71
+ f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty?
72
+ dep_list.each do |d|
73
+ f.puts %Q[void GENERATED_TMP_mrb_#{d.funcname}_gem_init(mrb_state *mrb);]
74
+ f.puts %Q[void GENERATED_TMP_mrb_#{d.funcname}_gem_final(mrb_state *mrb);]
75
+ end
76
+ f.puts %Q[void mrb_init_test_driver(mrb_state *mrb, mrb_bool verbose);]
77
+ f.puts %Q[void mrb_t_pass_result(mrb_state *dst, mrb_state *src);]
78
+ f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb) {]
79
+ unless g.test_rbfiles.empty?
80
+ f.puts %Q[ mrb_state *mrb2;]
81
+ unless g.test_args.empty?
82
+ f.puts %Q[ mrb_value test_args_hash;]
83
+ end
84
+ f.puts %Q[ int ai;]
85
+ g.test_rbfiles.count.times do |i|
86
+ f.puts %Q[ ai = mrb_gc_arena_save(mrb);]
87
+ f.puts %Q[ mrb2 = mrb_open_core(mrb_default_allocf, NULL);]
88
+ f.puts %Q[ if (mrb2 == NULL) {]
89
+ f.puts %Q[ fprintf(stderr, "Invalid mrb_state, exiting \%s", __FUNCTION__);]
90
+ f.puts %Q[ exit(EXIT_FAILURE);]
91
+ f.puts %Q[ }]
92
+ dep_list.each do |d|
93
+ f.puts %Q[ GENERATED_TMP_mrb_#{d.funcname}_gem_init(mrb2);]
94
+ f.puts %Q[ mrb_state_atexit(mrb2, GENERATED_TMP_mrb_#{d.funcname}_gem_final);]
95
+ end
96
+ f.puts %Q[ mrb_init_test_driver(mrb2, mrb_test(mrb_gv_get(mrb, mrb_intern_lit(mrb, "$mrbtest_verbose"))));]
97
+ if test_preload.nil?
98
+ f.puts %Q[ mrb_load_irep(mrb2, mrbtest_assert_irep);]
99
+ else
100
+ f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_preload);]
101
+ end
102
+ f.puts %Q[ if (mrb2->exc) {]
103
+ f.puts %Q[ mrb_print_error(mrb2);]
104
+ f.puts %Q[ exit(EXIT_FAILURE);]
105
+ f.puts %Q[ }]
106
+ f.puts %Q[ mrb_const_set(mrb2, mrb_obj_value(mrb2->object_class), mrb_intern_lit(mrb2, "GEMNAME"), mrb_str_new(mrb2, "#{g.name}", #{g.name.length}));]
107
+
108
+ unless g.test_args.empty?
109
+ f.puts %Q[ test_args_hash = mrb_hash_new_capa(mrb, #{g.test_args.length}); ]
110
+ g.test_args.each do |arg_name, arg_value|
111
+ escaped_arg_name = arg_name.gsub('\\', '\\\\\\\\').gsub('"', '\"')
112
+ escaped_arg_value = arg_value.gsub('\\', '\\\\\\\\').gsub('"', '\"')
113
+ f.puts %Q[ mrb_hash_set(mrb2, test_args_hash, mrb_str_new(mrb2, "#{escaped_arg_name.to_s}", #{escaped_arg_name.to_s.length}), mrb_str_new(mrb2, "#{escaped_arg_value.to_s}", #{escaped_arg_value.to_s.length})); ]
114
+ end
115
+ f.puts %Q[ mrb_const_set(mrb2, mrb_obj_value(mrb2->object_class), mrb_intern_lit(mrb2, "TEST_ARGS"), test_args_hash); ]
116
+ end
117
+
118
+ f.puts %Q[ mrb_#{g.funcname}_gem_test(mrb2);] if g.custom_test_init?
119
+
120
+ f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_#{i});]
121
+ f.puts %Q[ ]
122
+
123
+ f.puts %Q[ mrb_t_pass_result(mrb, mrb2);]
124
+ f.puts %Q[ mrb_close(mrb2);]
125
+ f.puts %Q[ mrb_gc_arena_restore(mrb, ai);]
126
+ end
127
+ end
128
+ f.puts %Q[}]
129
+ end
130
+ end
131
+ end
132
+
133
+ build.gems.each do |v|
134
+ mrbtest_objs.concat v.test_objs
135
+ end
136
+
137
+ file mrbtest_lib => mrbtest_objs do |t|
138
+ build.archiver.run t.name, t.prerequisites
139
+ end
140
+
141
+ unless build.build_mrbtest_lib_only?
142
+ file exec => [driver_obj, mlib, mrbtest_lib, libmruby_core, libmruby] do |t|
143
+ gem_flags = build.gems.map { |g| g.linker.flags }
144
+ gem_flags_before_libraries = build.gems.map { |g| g.linker.flags_before_libraries }
145
+ gem_flags_after_libraries = build.gems.map { |g| g.linker.flags_after_libraries }
146
+ gem_libraries = build.gems.map { |g| g.linker.libraries }
147
+ gem_library_paths = build.gems.map { |g| g.linker.library_paths }
148
+ build.linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags, gem_flags_before_libraries
149
+ end
150
+ end
151
+
152
+ init = "#{spec.dir}/init_mrbtest.c"
153
+
154
+ # store the last gem selection and make the re-build
155
+ # of the test gem depending on a change to the gem
156
+ # selection
157
+ active_gems = "#{build_dir}/active_gems.lst"
158
+ FileUtils.mkdir_p File.dirname(active_gems)
159
+ open(active_gems, 'w+') do |f|
160
+ build.gems.each do |g|
161
+ f.puts g.name
162
+ end
163
+ end
164
+ file clib => active_gems
165
+
166
+ file mlib => clib
167
+ file clib => init do |t|
168
+ _pp "GEN", "*.rb", "#{clib.relative_path}"
169
+ FileUtils.mkdir_p File.dirname(clib)
170
+ open(clib, 'w') do |f|
171
+ f.puts %Q[/*]
172
+ f.puts %Q[ * This file contains a list of all]
173
+ f.puts %Q[ * test functions.]
174
+ f.puts %Q[ *]
175
+ f.puts %Q[ * IMPORTANT:]
176
+ f.puts %Q[ * This file was generated!]
177
+ f.puts %Q[ * All manual changes will get lost.]
178
+ f.puts %Q[ */]
179
+ f.puts %Q[]
180
+ f.puts IO.read(init)
181
+ build.gems.each do |g|
182
+ f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb);]
183
+ end
184
+ f.puts %Q[void mrbgemtest_init(mrb_state* mrb) {]
185
+ build.gems.each do |g|
186
+ f.puts %Q[ GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb);]
187
+ end
188
+ f.puts %Q[}]
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,5 @@
1
+ MRuby::Gem::Specification.new('mruby-time') do |spec|
2
+ spec.license = 'MIT'
3
+ spec.author = 'mruby developers'
4
+ spec.summary = 'standard Time class'
5
+ end
@@ -0,0 +1,9 @@
1
+ class Time
2
+ def sunday?; wday == 0 end
3
+ def monday?; wday == 1 end
4
+ def tuesday?; wday == 2 end
5
+ def wednesday?; wday == 3 end
6
+ def thursday?; wday == 4 end
7
+ def friday?; wday == 5 end
8
+ def saturday?; wday == 6 end
9
+ end
@@ -0,0 +1,869 @@
1
+ /*
2
+ ** time.c - Time class
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #include <math.h>
8
+ #include <time.h>
9
+ #include <mruby.h>
10
+ #include <mruby/class.h>
11
+ #include <mruby/data.h>
12
+
13
+ #ifndef MRB_DISABLE_STDIO
14
+ #include <stdio.h>
15
+ #else
16
+ #include <string.h>
17
+ #endif
18
+
19
+ #define NDIV(x,y) (-(-((x)+1)/(y))-1)
20
+
21
+ #if defined(_MSC_VER) && _MSC_VER < 1800
22
+ double round(double x) {
23
+ return floor(x + 0.5);
24
+ }
25
+ #endif
26
+
27
+ #if !defined(__MINGW64__) && defined(_WIN32)
28
+ # define llround(x) round(x)
29
+ #endif
30
+
31
+ #if defined(__MINGW64__) || defined(__MINGW32__)
32
+ # include <sys/time.h>
33
+ #endif
34
+
35
+ /** Time class configuration */
36
+
37
+ /* gettimeofday(2) */
38
+ /* C99 does not have gettimeofday that is required to retrieve microseconds */
39
+ /* uncomment following macro on platforms without gettimeofday(2) */
40
+ /* #define NO_GETTIMEOFDAY */
41
+
42
+ /* gmtime(3) */
43
+ /* C99 does not have reentrant gmtime_r() so it might cause troubles under */
44
+ /* multi-threading environment. undef following macro on platforms that */
45
+ /* does not have gmtime_r() and localtime_r(). */
46
+ /* #define NO_GMTIME_R */
47
+
48
+ #ifdef _WIN32
49
+ #if _MSC_VER
50
+ /* Win32 platform do not provide gmtime_r/localtime_r; emulate them using gmtime_s/localtime_s */
51
+ #define gmtime_r(tp, tm) ((gmtime_s((tm), (tp)) == 0) ? (tm) : NULL)
52
+ #define localtime_r(tp, tm) ((localtime_s((tm), (tp)) == 0) ? (tm) : NULL)
53
+ #else
54
+ #define NO_GMTIME_R
55
+ #endif
56
+ #endif
57
+
58
+ /* asctime(3) */
59
+ /* mruby usually use its own implementation of struct tm to string conversion */
60
+ /* except when DISABLE_STDIO is set. In that case, it uses asctime() or asctime_r(). */
61
+ /* By default mruby tries to use asctime_r() which is reentrant. */
62
+ /* Undef following macro on platforms that does not have asctime_r(). */
63
+ /* #define NO_ASCTIME_R */
64
+
65
+ /* timegm(3) */
66
+ /* mktime() creates tm structure for localtime; timegm() is for UTC time */
67
+ /* define following macro to use probably faster timegm() on the platform */
68
+ /* #define USE_SYSTEM_TIMEGM */
69
+
70
+ /** end of Time class configuration */
71
+
72
+ #ifndef NO_GETTIMEOFDAY
73
+ # ifdef _WIN32
74
+ # define WIN32_LEAN_AND_MEAN /* don't include winsock.h */
75
+ # include <windows.h>
76
+ # define gettimeofday my_gettimeofday
77
+
78
+ # ifdef _MSC_VER
79
+ # define UI64(x) x##ui64
80
+ # else
81
+ # define UI64(x) x##ull
82
+ # endif
83
+
84
+ typedef long suseconds_t;
85
+
86
+ # if (!defined __MINGW64__) && (!defined __MINGW32__)
87
+ struct timeval {
88
+ time_t tv_sec;
89
+ suseconds_t tv_usec;
90
+ };
91
+ # endif
92
+
93
+ static int
94
+ gettimeofday(struct timeval *tv, void *tz)
95
+ {
96
+ if (tz) {
97
+ mrb_assert(0); /* timezone is not supported */
98
+ }
99
+ if (tv) {
100
+ union {
101
+ FILETIME ft;
102
+ unsigned __int64 u64;
103
+ } t;
104
+ GetSystemTimeAsFileTime(&t.ft); /* 100 ns intervals since Windows epoch */
105
+ t.u64 -= UI64(116444736000000000); /* Unix epoch bias */
106
+ t.u64 /= 10; /* to microseconds */
107
+ tv->tv_sec = (time_t)(t.u64 / (1000 * 1000));
108
+ tv->tv_usec = t.u64 % (1000 * 1000);
109
+ }
110
+ return 0;
111
+ }
112
+ # else
113
+ # include <sys/time.h>
114
+ # endif
115
+ #endif
116
+ #ifdef NO_GMTIME_R
117
+ #define gmtime_r(t,r) gmtime(t)
118
+ #define localtime_r(t,r) localtime(t)
119
+ #endif
120
+
121
+ #ifndef USE_SYSTEM_TIMEGM
122
+ #define timegm my_timgm
123
+
124
+ static unsigned int
125
+ is_leapyear(unsigned int y)
126
+ {
127
+ return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0);
128
+ }
129
+
130
+ static time_t
131
+ timegm(struct tm *tm)
132
+ {
133
+ static const unsigned int ndays[2][12] = {
134
+ {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
135
+ {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
136
+ };
137
+ time_t r = 0;
138
+ int i;
139
+ unsigned int *nday = (unsigned int*) ndays[is_leapyear(tm->tm_year+1900)];
140
+
141
+ for (i = 70; i < tm->tm_year; ++i)
142
+ r += is_leapyear(i+1900) ? 366*24*60*60 : 365*24*60*60;
143
+ for (i = 0; i < tm->tm_mon; ++i)
144
+ r += nday[i] * 24 * 60 * 60;
145
+ r += (tm->tm_mday - 1) * 24 * 60 * 60;
146
+ r += tm->tm_hour * 60 * 60;
147
+ r += tm->tm_min * 60;
148
+ r += tm->tm_sec;
149
+ return r;
150
+ }
151
+ #endif
152
+
153
+ /* Since we are limited to using ISO C99, this implementation is based
154
+ * on time_t. That means the resolution of time is only precise to the
155
+ * second level. Also, there are only 2 timezones, namely UTC and LOCAL.
156
+ */
157
+
158
+ enum mrb_timezone {
159
+ MRB_TIMEZONE_NONE = 0,
160
+ MRB_TIMEZONE_UTC = 1,
161
+ MRB_TIMEZONE_LOCAL = 2,
162
+ MRB_TIMEZONE_LAST = 3
163
+ };
164
+
165
+ typedef struct mrb_timezone_name {
166
+ const char name[8];
167
+ size_t len;
168
+ } mrb_timezone_name;
169
+
170
+ static const mrb_timezone_name timezone_names[] = {
171
+ { "none", sizeof("none") - 1 },
172
+ { "UTC", sizeof("UTC") - 1 },
173
+ { "LOCAL", sizeof("LOCAL") - 1 },
174
+ };
175
+
176
+ #ifndef MRB_DISABLE_STDIO
177
+ static const char mon_names[12][4] = {
178
+ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
179
+ };
180
+
181
+ static const char wday_names[7][4] = {
182
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
183
+ };
184
+ #endif
185
+
186
+ struct mrb_time {
187
+ time_t sec;
188
+ time_t usec;
189
+ enum mrb_timezone timezone;
190
+ struct tm datetime;
191
+ };
192
+
193
+ static const struct mrb_data_type mrb_time_type = { "Time", mrb_free };
194
+
195
+ /** Updates the datetime of a mrb_time based on it's timezone and
196
+ seconds setting. Returns self on success, NULL of failure. */
197
+ static struct mrb_time*
198
+ time_update_datetime(mrb_state *mrb, struct mrb_time *self)
199
+ {
200
+ struct tm *aid;
201
+
202
+ if (self->timezone == MRB_TIMEZONE_UTC) {
203
+ aid = gmtime_r(&self->sec, &self->datetime);
204
+ }
205
+ else {
206
+ aid = localtime_r(&self->sec, &self->datetime);
207
+ }
208
+ if (!aid) {
209
+ mrb_raisef(mrb, E_ARGUMENT_ERROR, "%S out of Time range", mrb_float_value(mrb, (mrb_float)self->sec));
210
+ /* not reached */
211
+ return NULL;
212
+ }
213
+ #ifdef NO_GMTIME_R
214
+ self->datetime = *aid; /* copy data */
215
+ #endif
216
+
217
+ return self;
218
+ }
219
+
220
+ static mrb_value
221
+ mrb_time_wrap(mrb_state *mrb, struct RClass *tc, struct mrb_time *tm)
222
+ {
223
+ return mrb_obj_value(Data_Wrap_Struct(mrb, tc, &mrb_time_type, tm));
224
+ }
225
+
226
+ void mrb_check_num_exact(mrb_state *mrb, mrb_float num);
227
+
228
+ /* Allocates a mrb_time object and initializes it. */
229
+ static struct mrb_time*
230
+ time_alloc(mrb_state *mrb, double sec, double usec, enum mrb_timezone timezone)
231
+ {
232
+ struct mrb_time *tm;
233
+ time_t tsec = 0;
234
+
235
+ mrb_check_num_exact(mrb, (mrb_float)sec);
236
+ mrb_check_num_exact(mrb, (mrb_float)usec);
237
+
238
+ if (sizeof(time_t) == 4 && (sec > (double)INT32_MAX || (double)INT32_MIN > sec)) {
239
+ goto out_of_range;
240
+ }
241
+ if (sizeof(time_t) == 8 && (sec > (double)INT64_MAX || (double)INT64_MIN > sec)) {
242
+ goto out_of_range;
243
+ }
244
+ tsec = (time_t)sec;
245
+ if ((sec > 0 && tsec < 0) || (sec < 0 && (double)tsec > sec)) {
246
+ out_of_range:
247
+ mrb_raisef(mrb, E_ARGUMENT_ERROR, "%S out of Time range", mrb_float_value(mrb, sec));
248
+ }
249
+ tm = (struct mrb_time *)mrb_malloc(mrb, sizeof(struct mrb_time));
250
+ tm->sec = tsec;
251
+ tm->usec = (time_t)llround((sec - tm->sec) * 1.0e6 + usec);
252
+ if (tm->usec < 0) {
253
+ long sec2 = (long)NDIV(usec,1000000); /* negative div */
254
+ tm->usec -= sec2 * 1000000;
255
+ tm->sec += sec2;
256
+ }
257
+ else if (tm->usec >= 1000000) {
258
+ long sec2 = (long)(usec / 1000000);
259
+ tm->usec -= sec2 * 1000000;
260
+ tm->sec += sec2;
261
+ }
262
+ tm->timezone = timezone;
263
+ time_update_datetime(mrb, tm);
264
+
265
+ return tm;
266
+ }
267
+
268
+ static mrb_value
269
+ mrb_time_make(mrb_state *mrb, struct RClass *c, double sec, double usec, enum mrb_timezone timezone)
270
+ {
271
+ return mrb_time_wrap(mrb, c, time_alloc(mrb, sec, usec, timezone));
272
+ }
273
+
274
+ static struct mrb_time*
275
+ current_mrb_time(mrb_state *mrb)
276
+ {
277
+ struct mrb_time *tm;
278
+
279
+ tm = (struct mrb_time *)mrb_malloc(mrb, sizeof(*tm));
280
+ #if defined(TIME_UTC)
281
+ {
282
+ struct timespec ts;
283
+ if (timespec_get(&ts, TIME_UTC) == 0) {
284
+ mrb_free(mrb, tm);
285
+ mrb_raise(mrb, E_RUNTIME_ERROR, "timespec_get() failed for unknown reasons");
286
+ }
287
+ tm->sec = ts.tv_sec;
288
+ tm->usec = ts.tv_nsec / 1000;
289
+ }
290
+ #elif defined(NO_GETTIMEOFDAY)
291
+ {
292
+ static time_t last_sec = 0, last_usec = 0;
293
+
294
+ tm->sec = time(NULL);
295
+ if (tm->sec != last_sec) {
296
+ last_sec = tm->sec;
297
+ last_usec = 0;
298
+ }
299
+ else {
300
+ /* add 1 usec to differentiate two times */
301
+ last_usec += 1;
302
+ }
303
+ tm->usec = last_usec;
304
+ }
305
+ #else
306
+ {
307
+ struct timeval tv;
308
+
309
+ gettimeofday(&tv, NULL);
310
+ tm->sec = tv.tv_sec;
311
+ tm->usec = tv.tv_usec;
312
+ }
313
+ #endif
314
+ tm->timezone = MRB_TIMEZONE_LOCAL;
315
+ time_update_datetime(mrb, tm);
316
+
317
+ return tm;
318
+ }
319
+
320
+ /* Allocates a new Time object with given millis value. */
321
+ static mrb_value
322
+ mrb_time_now(mrb_state *mrb, mrb_value self)
323
+ {
324
+ return mrb_time_wrap(mrb, mrb_class_ptr(self), current_mrb_time(mrb));
325
+ }
326
+
327
+ /* 15.2.19.6.1 */
328
+ /* Creates an instance of time at the given time in seconds, etc. */
329
+ static mrb_value
330
+ mrb_time_at(mrb_state *mrb, mrb_value self)
331
+ {
332
+ mrb_float f, f2 = 0;
333
+
334
+ mrb_get_args(mrb, "f|f", &f, &f2);
335
+ return mrb_time_make(mrb, mrb_class_ptr(self), f, f2, MRB_TIMEZONE_LOCAL);
336
+ }
337
+
338
+ static struct mrb_time*
339
+ time_mktime(mrb_state *mrb, mrb_int ayear, mrb_int amonth, mrb_int aday,
340
+ mrb_int ahour, mrb_int amin, mrb_int asec, mrb_int ausec,
341
+ enum mrb_timezone timezone)
342
+ {
343
+ time_t nowsecs;
344
+ struct tm nowtime = { 0 };
345
+
346
+ nowtime.tm_year = (int)ayear - 1900;
347
+ nowtime.tm_mon = (int)amonth - 1;
348
+ nowtime.tm_mday = (int)aday;
349
+ nowtime.tm_hour = (int)ahour;
350
+ nowtime.tm_min = (int)amin;
351
+ nowtime.tm_sec = (int)asec;
352
+ nowtime.tm_isdst = -1;
353
+
354
+ if (nowtime.tm_mon < 0 || nowtime.tm_mon > 11
355
+ || nowtime.tm_mday < 1 || nowtime.tm_mday > 31
356
+ || nowtime.tm_hour < 0 || nowtime.tm_hour > 24
357
+ || (nowtime.tm_hour == 24 && (nowtime.tm_min > 0 || nowtime.tm_sec > 0))
358
+ || nowtime.tm_min < 0 || nowtime.tm_min > 59
359
+ || nowtime.tm_sec < 0 || nowtime.tm_sec > 60)
360
+ mrb_raise(mrb, E_RUNTIME_ERROR, "argument out of range");
361
+
362
+ if (timezone == MRB_TIMEZONE_UTC) {
363
+ nowsecs = timegm(&nowtime);
364
+ }
365
+ else {
366
+ nowsecs = mktime(&nowtime);
367
+ }
368
+ if (nowsecs == (time_t)-1) {
369
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "Not a valid time.");
370
+ }
371
+
372
+ return time_alloc(mrb, (double)nowsecs, (double)ausec, timezone);
373
+ }
374
+
375
+ /* 15.2.19.6.2 */
376
+ /* Creates an instance of time at the given time in UTC. */
377
+ static mrb_value
378
+ mrb_time_gm(mrb_state *mrb, mrb_value self)
379
+ {
380
+ mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0, amin = 0, asec = 0, ausec = 0;
381
+
382
+ mrb_get_args(mrb, "i|iiiiii",
383
+ &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
384
+ return mrb_time_wrap(mrb, mrb_class_ptr(self),
385
+ time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_UTC));
386
+ }
387
+
388
+
389
+ /* 15.2.19.6.3 */
390
+ /* Creates an instance of time at the given time in local time zone. */
391
+ static mrb_value
392
+ mrb_time_local(mrb_state *mrb, mrb_value self)
393
+ {
394
+ mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0, amin = 0, asec = 0, ausec = 0;
395
+
396
+ mrb_get_args(mrb, "i|iiiiii",
397
+ &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
398
+ return mrb_time_wrap(mrb, mrb_class_ptr(self),
399
+ time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_LOCAL));
400
+ }
401
+
402
+ static struct mrb_time*
403
+ time_get_ptr(mrb_state *mrb, mrb_value time)
404
+ {
405
+ struct mrb_time *tm;
406
+
407
+ tm = DATA_GET_PTR(mrb, time, &mrb_time_type, struct mrb_time);
408
+ if (!tm) {
409
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "uninitialized time");
410
+ }
411
+ return tm;
412
+ }
413
+
414
+ static mrb_value
415
+ mrb_time_eq(mrb_state *mrb, mrb_value self)
416
+ {
417
+ mrb_value other;
418
+ struct mrb_time *tm1, *tm2;
419
+ mrb_bool eq_p;
420
+
421
+ mrb_get_args(mrb, "o", &other);
422
+ tm1 = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
423
+ tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
424
+ eq_p = tm1 && tm2 && tm1->sec == tm2->sec && tm1->usec == tm2->usec;
425
+
426
+ return mrb_bool_value(eq_p);
427
+ }
428
+
429
+ static mrb_value
430
+ mrb_time_cmp(mrb_state *mrb, mrb_value self)
431
+ {
432
+ mrb_value other;
433
+ struct mrb_time *tm1, *tm2;
434
+
435
+ mrb_get_args(mrb, "o", &other);
436
+ tm1 = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
437
+ tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
438
+ if (!tm1 || !tm2) return mrb_nil_value();
439
+ if (tm1->sec > tm2->sec) {
440
+ return mrb_fixnum_value(1);
441
+ }
442
+ else if (tm1->sec < tm2->sec) {
443
+ return mrb_fixnum_value(-1);
444
+ }
445
+ /* tm1->sec == tm2->sec */
446
+ if (tm1->usec > tm2->usec) {
447
+ return mrb_fixnum_value(1);
448
+ }
449
+ else if (tm1->usec < tm2->usec) {
450
+ return mrb_fixnum_value(-1);
451
+ }
452
+ return mrb_fixnum_value(0);
453
+ }
454
+
455
+ static mrb_value
456
+ mrb_time_plus(mrb_state *mrb, mrb_value self)
457
+ {
458
+ mrb_float f;
459
+ struct mrb_time *tm;
460
+
461
+ mrb_get_args(mrb, "f", &f);
462
+ tm = time_get_ptr(mrb, self);
463
+ return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec+f, (double)tm->usec, tm->timezone);
464
+ }
465
+
466
+ static mrb_value
467
+ mrb_time_minus(mrb_state *mrb, mrb_value self)
468
+ {
469
+ mrb_float f;
470
+ mrb_value other;
471
+ struct mrb_time *tm, *tm2;
472
+
473
+ mrb_get_args(mrb, "o", &other);
474
+ tm = time_get_ptr(mrb, self);
475
+ tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
476
+ if (tm2) {
477
+ f = (mrb_float)(tm->sec - tm2->sec)
478
+ + (mrb_float)(tm->usec - tm2->usec) / 1.0e6;
479
+ return mrb_float_value(mrb, f);
480
+ }
481
+ else {
482
+ mrb_get_args(mrb, "f", &f);
483
+ return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec-f, (double)tm->usec, tm->timezone);
484
+ }
485
+ }
486
+
487
+ /* 15.2.19.7.30 */
488
+ /* Returns week day number of time. */
489
+ static mrb_value
490
+ mrb_time_wday(mrb_state *mrb, mrb_value self)
491
+ {
492
+ struct mrb_time *tm;
493
+
494
+ tm = time_get_ptr(mrb, self);
495
+ return mrb_fixnum_value(tm->datetime.tm_wday);
496
+ }
497
+
498
+ /* 15.2.19.7.31 */
499
+ /* Returns year day number of time. */
500
+ static mrb_value
501
+ mrb_time_yday(mrb_state *mrb, mrb_value self)
502
+ {
503
+ struct mrb_time *tm;
504
+
505
+ tm = time_get_ptr(mrb, self);
506
+ return mrb_fixnum_value(tm->datetime.tm_yday + 1);
507
+ }
508
+
509
+ /* 15.2.19.7.32 */
510
+ /* Returns year of time. */
511
+ static mrb_value
512
+ mrb_time_year(mrb_state *mrb, mrb_value self)
513
+ {
514
+ struct mrb_time *tm;
515
+
516
+ tm = time_get_ptr(mrb, self);
517
+ return mrb_fixnum_value(tm->datetime.tm_year + 1900);
518
+ }
519
+
520
+ /* 15.2.19.7.33 */
521
+ /* Returns name of time's timezone. */
522
+ static mrb_value
523
+ mrb_time_zone(mrb_state *mrb, mrb_value self)
524
+ {
525
+ struct mrb_time *tm;
526
+
527
+ tm = time_get_ptr(mrb, self);
528
+ if (tm->timezone <= MRB_TIMEZONE_NONE) return mrb_nil_value();
529
+ if (tm->timezone >= MRB_TIMEZONE_LAST) return mrb_nil_value();
530
+ return mrb_str_new_static(mrb,
531
+ timezone_names[tm->timezone].name,
532
+ timezone_names[tm->timezone].len);
533
+ }
534
+
535
+ /* 15.2.19.7.4 */
536
+ /* Returns a string that describes the time. */
537
+ static mrb_value
538
+ mrb_time_asctime(mrb_state *mrb, mrb_value self)
539
+ {
540
+ struct mrb_time *tm = time_get_ptr(mrb, self);
541
+ struct tm *d = &tm->datetime;
542
+ int len;
543
+
544
+ #if defined(MRB_DISABLE_STDIO)
545
+ char *s;
546
+ # ifdef NO_ASCTIME_R
547
+ s = asctime(d);
548
+ # else
549
+ char buf[32];
550
+ s = asctime_r(d, buf);
551
+ # endif
552
+ len = strlen(s)-1; /* truncate the last newline */
553
+ #else
554
+ char buf[256];
555
+
556
+ len = snprintf(buf, sizeof(buf), "%s %s %02d %02d:%02d:%02d %s%d",
557
+ wday_names[d->tm_wday], mon_names[d->tm_mon], d->tm_mday,
558
+ d->tm_hour, d->tm_min, d->tm_sec,
559
+ tm->timezone == MRB_TIMEZONE_UTC ? "UTC " : "",
560
+ d->tm_year + 1900);
561
+ #endif
562
+ return mrb_str_new(mrb, buf, len);
563
+ }
564
+
565
+ /* 15.2.19.7.6 */
566
+ /* Returns the day in the month of the time. */
567
+ static mrb_value
568
+ mrb_time_day(mrb_state *mrb, mrb_value self)
569
+ {
570
+ struct mrb_time *tm;
571
+
572
+ tm = time_get_ptr(mrb, self);
573
+ return mrb_fixnum_value(tm->datetime.tm_mday);
574
+ }
575
+
576
+
577
+ /* 15.2.19.7.7 */
578
+ /* Returns true if daylight saving was applied for this time. */
579
+ static mrb_value
580
+ mrb_time_dst_p(mrb_state *mrb, mrb_value self)
581
+ {
582
+ struct mrb_time *tm;
583
+
584
+ tm = time_get_ptr(mrb, self);
585
+ return mrb_bool_value(tm->datetime.tm_isdst);
586
+ }
587
+
588
+ /* 15.2.19.7.8 */
589
+ /* 15.2.19.7.10 */
590
+ /* Returns the Time object of the UTC(GMT) timezone. */
591
+ static mrb_value
592
+ mrb_time_getutc(mrb_state *mrb, mrb_value self)
593
+ {
594
+ struct mrb_time *tm, *tm2;
595
+
596
+ tm = time_get_ptr(mrb, self);
597
+ tm2 = (struct mrb_time *)mrb_malloc(mrb, sizeof(*tm));
598
+ *tm2 = *tm;
599
+ tm2->timezone = MRB_TIMEZONE_UTC;
600
+ time_update_datetime(mrb, tm2);
601
+ return mrb_time_wrap(mrb, mrb_obj_class(mrb, self), tm2);
602
+ }
603
+
604
+ /* 15.2.19.7.9 */
605
+ /* Returns the Time object of the LOCAL timezone. */
606
+ static mrb_value
607
+ mrb_time_getlocal(mrb_state *mrb, mrb_value self)
608
+ {
609
+ struct mrb_time *tm, *tm2;
610
+
611
+ tm = time_get_ptr(mrb, self);
612
+ tm2 = (struct mrb_time *)mrb_malloc(mrb, sizeof(*tm));
613
+ *tm2 = *tm;
614
+ tm2->timezone = MRB_TIMEZONE_LOCAL;
615
+ time_update_datetime(mrb, tm2);
616
+ return mrb_time_wrap(mrb, mrb_obj_class(mrb, self), tm2);
617
+ }
618
+
619
+ /* 15.2.19.7.15 */
620
+ /* Returns hour of time. */
621
+ static mrb_value
622
+ mrb_time_hour(mrb_state *mrb, mrb_value self)
623
+ {
624
+ struct mrb_time *tm;
625
+
626
+ tm = time_get_ptr(mrb, self);
627
+ return mrb_fixnum_value(tm->datetime.tm_hour);
628
+ }
629
+
630
+ /* 15.2.19.7.16 */
631
+ /* Initializes a time by setting the amount of milliseconds since the epoch.*/
632
+ static mrb_value
633
+ mrb_time_initialize(mrb_state *mrb, mrb_value self)
634
+ {
635
+ mrb_int ayear = 0, amonth = 1, aday = 1, ahour = 0,
636
+ amin = 0, asec = 0, ausec = 0;
637
+ mrb_int n;
638
+ struct mrb_time *tm;
639
+
640
+ n = mrb_get_args(mrb, "|iiiiiii",
641
+ &ayear, &amonth, &aday, &ahour, &amin, &asec, &ausec);
642
+ tm = (struct mrb_time*)DATA_PTR(self);
643
+ if (tm) {
644
+ mrb_free(mrb, tm);
645
+ }
646
+ mrb_data_init(self, NULL, &mrb_time_type);
647
+
648
+ if (n == 0) {
649
+ tm = current_mrb_time(mrb);
650
+ }
651
+ else {
652
+ tm = time_mktime(mrb, ayear, amonth, aday, ahour, amin, asec, ausec, MRB_TIMEZONE_LOCAL);
653
+ }
654
+ mrb_data_init(self, tm, &mrb_time_type);
655
+ return self;
656
+ }
657
+
658
+ /* 15.2.19.7.17(x) */
659
+ /* Initializes a copy of this time object. */
660
+ static mrb_value
661
+ mrb_time_initialize_copy(mrb_state *mrb, mrb_value copy)
662
+ {
663
+ mrb_value src;
664
+ struct mrb_time *t1, *t2;
665
+
666
+ mrb_get_args(mrb, "o", &src);
667
+ if (mrb_obj_equal(mrb, copy, src)) return copy;
668
+ if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) {
669
+ mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
670
+ }
671
+ t1 = (struct mrb_time *)DATA_PTR(copy);
672
+ t2 = (struct mrb_time *)DATA_PTR(src);
673
+ if (!t2) {
674
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "uninitialized time");
675
+ }
676
+ if (!t1) {
677
+ t1 = (struct mrb_time *)mrb_malloc(mrb, sizeof(struct mrb_time));
678
+ mrb_data_init(copy, t1, &mrb_time_type);
679
+ }
680
+ *t1 = *t2;
681
+ return copy;
682
+ }
683
+
684
+ /* 15.2.19.7.18 */
685
+ /* Sets the timezone attribute of the Time object to LOCAL. */
686
+ static mrb_value
687
+ mrb_time_localtime(mrb_state *mrb, mrb_value self)
688
+ {
689
+ struct mrb_time *tm;
690
+
691
+ tm = time_get_ptr(mrb, self);
692
+ tm->timezone = MRB_TIMEZONE_LOCAL;
693
+ time_update_datetime(mrb, tm);
694
+ return self;
695
+ }
696
+
697
+ /* 15.2.19.7.19 */
698
+ /* Returns day of month of time. */
699
+ static mrb_value
700
+ mrb_time_mday(mrb_state *mrb, mrb_value self)
701
+ {
702
+ struct mrb_time *tm;
703
+
704
+ tm = time_get_ptr(mrb, self);
705
+ return mrb_fixnum_value(tm->datetime.tm_mday);
706
+ }
707
+
708
+ /* 15.2.19.7.20 */
709
+ /* Returns minutes of time. */
710
+ static mrb_value
711
+ mrb_time_min(mrb_state *mrb, mrb_value self)
712
+ {
713
+ struct mrb_time *tm;
714
+
715
+ tm = time_get_ptr(mrb, self);
716
+ return mrb_fixnum_value(tm->datetime.tm_min);
717
+ }
718
+
719
+ /* 15.2.19.7.21 and 15.2.19.7.22 */
720
+ /* Returns month of time. */
721
+ static mrb_value
722
+ mrb_time_mon(mrb_state *mrb, mrb_value self)
723
+ {
724
+ struct mrb_time *tm;
725
+
726
+ tm = time_get_ptr(mrb, self);
727
+ return mrb_fixnum_value(tm->datetime.tm_mon + 1);
728
+ }
729
+
730
+ /* 15.2.19.7.23 */
731
+ /* Returns seconds in minute of time. */
732
+ static mrb_value
733
+ mrb_time_sec(mrb_state *mrb, mrb_value self)
734
+ {
735
+ struct mrb_time *tm;
736
+
737
+ tm = time_get_ptr(mrb, self);
738
+ return mrb_fixnum_value(tm->datetime.tm_sec);
739
+ }
740
+
741
+
742
+ /* 15.2.19.7.24 */
743
+ /* Returns a Float with the time since the epoch in seconds. */
744
+ static mrb_value
745
+ mrb_time_to_f(mrb_state *mrb, mrb_value self)
746
+ {
747
+ struct mrb_time *tm;
748
+
749
+ tm = time_get_ptr(mrb, self);
750
+ return mrb_float_value(mrb, (mrb_float)tm->sec + (mrb_float)tm->usec/1.0e6);
751
+ }
752
+
753
+ /* 15.2.19.7.25 */
754
+ /* Returns a Fixnum with the time since the epoch in seconds. */
755
+ static mrb_value
756
+ mrb_time_to_i(mrb_state *mrb, mrb_value self)
757
+ {
758
+ struct mrb_time *tm;
759
+
760
+ tm = time_get_ptr(mrb, self);
761
+ if (tm->sec > MRB_INT_MAX || tm->sec < MRB_INT_MIN) {
762
+ return mrb_float_value(mrb, (mrb_float)tm->sec);
763
+ }
764
+ return mrb_fixnum_value((mrb_int)tm->sec);
765
+ }
766
+
767
+ /* 15.2.19.7.26 */
768
+ /* Returns a Float with the time since the epoch in microseconds. */
769
+ static mrb_value
770
+ mrb_time_usec(mrb_state *mrb, mrb_value self)
771
+ {
772
+ struct mrb_time *tm;
773
+
774
+ tm = time_get_ptr(mrb, self);
775
+ if (tm->usec > MRB_INT_MAX || tm->usec < MRB_INT_MIN) {
776
+ return mrb_float_value(mrb, (mrb_float)tm->usec);
777
+ }
778
+ return mrb_fixnum_value((mrb_int)tm->usec);
779
+ }
780
+
781
+ /* 15.2.19.7.27 */
782
+ /* Sets the timezone attribute of the Time object to UTC. */
783
+ static mrb_value
784
+ mrb_time_utc(mrb_state *mrb, mrb_value self)
785
+ {
786
+ struct mrb_time *tm;
787
+
788
+ tm = time_get_ptr(mrb, self);
789
+ tm->timezone = MRB_TIMEZONE_UTC;
790
+ time_update_datetime(mrb, tm);
791
+ return self;
792
+ }
793
+
794
+ /* 15.2.19.7.28 */
795
+ /* Returns true if this time is in the UTC timezone false if not. */
796
+ static mrb_value
797
+ mrb_time_utc_p(mrb_state *mrb, mrb_value self)
798
+ {
799
+ struct mrb_time *tm;
800
+
801
+ tm = time_get_ptr(mrb, self);
802
+ return mrb_bool_value(tm->timezone == MRB_TIMEZONE_UTC);
803
+ }
804
+
805
+
806
+ void
807
+ mrb_mruby_time_gem_init(mrb_state* mrb)
808
+ {
809
+ struct RClass *tc;
810
+ /* ISO 15.2.19.2 */
811
+ tc = mrb_define_class(mrb, "Time", mrb->object_class);
812
+ MRB_SET_INSTANCE_TT(tc, MRB_TT_DATA);
813
+ mrb_include_module(mrb, tc, mrb_module_get(mrb, "Comparable"));
814
+ mrb_define_class_method(mrb, tc, "at", mrb_time_at, MRB_ARGS_ARG(1, 1)); /* 15.2.19.6.1 */
815
+ mrb_define_class_method(mrb, tc, "gm", mrb_time_gm, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.2 */
816
+ mrb_define_class_method(mrb, tc, "local", mrb_time_local, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.3 */
817
+ mrb_define_class_method(mrb, tc, "mktime", mrb_time_local, MRB_ARGS_ARG(1,6));/* 15.2.19.6.4 */
818
+ mrb_define_class_method(mrb, tc, "now", mrb_time_now, MRB_ARGS_NONE()); /* 15.2.19.6.5 */
819
+ mrb_define_class_method(mrb, tc, "utc", mrb_time_gm, MRB_ARGS_ARG(1,6)); /* 15.2.19.6.6 */
820
+
821
+ mrb_define_method(mrb, tc, "==" , mrb_time_eq , MRB_ARGS_REQ(1));
822
+ mrb_define_method(mrb, tc, "<=>" , mrb_time_cmp , MRB_ARGS_REQ(1)); /* 15.2.19.7.1 */
823
+ mrb_define_method(mrb, tc, "+" , mrb_time_plus , MRB_ARGS_REQ(1)); /* 15.2.19.7.2 */
824
+ mrb_define_method(mrb, tc, "-" , mrb_time_minus , MRB_ARGS_REQ(1)); /* 15.2.19.7.3 */
825
+ mrb_define_method(mrb, tc, "to_s" , mrb_time_asctime, MRB_ARGS_NONE());
826
+ mrb_define_method(mrb, tc, "inspect", mrb_time_asctime, MRB_ARGS_NONE());
827
+ mrb_define_method(mrb, tc, "asctime", mrb_time_asctime, MRB_ARGS_NONE()); /* 15.2.19.7.4 */
828
+ mrb_define_method(mrb, tc, "ctime" , mrb_time_asctime, MRB_ARGS_NONE()); /* 15.2.19.7.5 */
829
+ mrb_define_method(mrb, tc, "day" , mrb_time_day , MRB_ARGS_NONE()); /* 15.2.19.7.6 */
830
+ mrb_define_method(mrb, tc, "dst?" , mrb_time_dst_p , MRB_ARGS_NONE()); /* 15.2.19.7.7 */
831
+ mrb_define_method(mrb, tc, "getgm" , mrb_time_getutc , MRB_ARGS_NONE()); /* 15.2.19.7.8 */
832
+ mrb_define_method(mrb, tc, "getlocal",mrb_time_getlocal,MRB_ARGS_NONE()); /* 15.2.19.7.9 */
833
+ mrb_define_method(mrb, tc, "getutc" , mrb_time_getutc , MRB_ARGS_NONE()); /* 15.2.19.7.10 */
834
+ mrb_define_method(mrb, tc, "gmt?" , mrb_time_utc_p , MRB_ARGS_NONE()); /* 15.2.19.7.11 */
835
+ mrb_define_method(mrb, tc, "gmtime" , mrb_time_utc , MRB_ARGS_NONE()); /* 15.2.19.7.13 */
836
+ mrb_define_method(mrb, tc, "hour" , mrb_time_hour, MRB_ARGS_NONE()); /* 15.2.19.7.15 */
837
+ mrb_define_method(mrb, tc, "localtime", mrb_time_localtime, MRB_ARGS_NONE()); /* 15.2.19.7.18 */
838
+ mrb_define_method(mrb, tc, "mday" , mrb_time_mday, MRB_ARGS_NONE()); /* 15.2.19.7.19 */
839
+ mrb_define_method(mrb, tc, "min" , mrb_time_min, MRB_ARGS_NONE()); /* 15.2.19.7.20 */
840
+
841
+ mrb_define_method(mrb, tc, "mon" , mrb_time_mon, MRB_ARGS_NONE()); /* 15.2.19.7.21 */
842
+ mrb_define_method(mrb, tc, "month", mrb_time_mon, MRB_ARGS_NONE()); /* 15.2.19.7.22 */
843
+
844
+ mrb_define_method(mrb, tc, "sec" , mrb_time_sec, MRB_ARGS_NONE()); /* 15.2.19.7.23 */
845
+ mrb_define_method(mrb, tc, "to_i", mrb_time_to_i, MRB_ARGS_NONE()); /* 15.2.19.7.25 */
846
+ mrb_define_method(mrb, tc, "to_f", mrb_time_to_f, MRB_ARGS_NONE()); /* 15.2.19.7.24 */
847
+ mrb_define_method(mrb, tc, "usec", mrb_time_usec, MRB_ARGS_NONE()); /* 15.2.19.7.26 */
848
+ mrb_define_method(mrb, tc, "utc" , mrb_time_utc, MRB_ARGS_NONE()); /* 15.2.19.7.27 */
849
+ mrb_define_method(mrb, tc, "utc?", mrb_time_utc_p,MRB_ARGS_NONE()); /* 15.2.19.7.28 */
850
+ mrb_define_method(mrb, tc, "wday", mrb_time_wday, MRB_ARGS_NONE()); /* 15.2.19.7.30 */
851
+ mrb_define_method(mrb, tc, "yday", mrb_time_yday, MRB_ARGS_NONE()); /* 15.2.19.7.31 */
852
+ mrb_define_method(mrb, tc, "year", mrb_time_year, MRB_ARGS_NONE()); /* 15.2.19.7.32 */
853
+ mrb_define_method(mrb, tc, "zone", mrb_time_zone, MRB_ARGS_NONE()); /* 15.2.19.7.33 */
854
+
855
+ mrb_define_method(mrb, tc, "initialize", mrb_time_initialize, MRB_ARGS_REQ(1)); /* 15.2.19.7.16 */
856
+ mrb_define_method(mrb, tc, "initialize_copy", mrb_time_initialize_copy, MRB_ARGS_REQ(1)); /* 15.2.19.7.17 */
857
+
858
+ /*
859
+ methods not available:
860
+ gmt_offset(15.2.19.7.12)
861
+ gmtoff(15.2.19.7.14)
862
+ utc_offset(15.2.19.7.29)
863
+ */
864
+ }
865
+
866
+ void
867
+ mrb_mruby_time_gem_final(mrb_state* mrb)
868
+ {
869
+ }