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,71 @@
1
+ /*************************************************
2
+ * Perl-Compatible Regular Expressions *
3
+ *************************************************/
4
+
5
+ /*
6
+ Copyright (c) 2005, Google Inc.
7
+ All rights reserved.
8
+
9
+ -----------------------------------------------------------------------------
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions are met:
12
+
13
+ * Redistributions of source code must retain the above copyright notice,
14
+ this list of conditions and the following disclaimer.
15
+
16
+ * Redistributions in binary form must reproduce the above copyright
17
+ notice, this list of conditions and the following disclaimer in the
18
+ documentation and/or other materials provided with the distribution.
19
+
20
+ * Neither the name of the University of Cambridge nor the names of its
21
+ contributors may be used to endorse or promote products derived from
22
+ this software without specific prior written permission.
23
+
24
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
+ POSSIBILITY OF SUCH DAMAGE.
35
+ -----------------------------------------------------------------------------
36
+ */
37
+
38
+
39
+ #ifndef PCRECPP_INTERNAL_H
40
+ #define PCRECPP_INTERNAL_H
41
+
42
+ /* When compiling a DLL for Windows, the exported symbols have to be declared
43
+ using some MS magic. I found some useful information on this web page:
44
+ http://msdn2.microsoft.com/en-us/library/y4h7bcy6(VS.80).aspx. According to the
45
+ information there, using __declspec(dllexport) without "extern" we have a
46
+ definition; with "extern" we have a declaration. The settings here override the
47
+ setting in pcre.h. We use:
48
+
49
+ PCRECPP_EXP_DECL for declarations
50
+ PCRECPP_EXP_DEFN for definitions of exported functions
51
+
52
+ */
53
+
54
+ #ifndef PCRECPP_EXP_DECL
55
+ # ifdef _WIN32
56
+ # ifndef PCRE_STATIC
57
+ # define PCRECPP_EXP_DECL extern __declspec(dllexport)
58
+ # define PCRECPP_EXP_DEFN __declspec(dllexport)
59
+ # else
60
+ # define PCRECPP_EXP_DECL extern
61
+ # define PCRECPP_EXP_DEFN
62
+ # endif
63
+ # else
64
+ # define PCRECPP_EXP_DECL extern
65
+ # define PCRECPP_EXP_DEFN
66
+ # endif
67
+ #endif
68
+
69
+ #endif /* PCRECPP_INTERNAL_H */
70
+
71
+ /* End of pcrecpp_internal.h */
@@ -0,0 +1,1291 @@
1
+ // -*- coding: utf-8 -*-
2
+ //
3
+ // Copyright (c) 2005 - 2010, Google Inc.
4
+ // All rights reserved.
5
+ //
6
+ // Redistribution and use in source and binary forms, with or without
7
+ // modification, are permitted provided that the following conditions are
8
+ // met:
9
+ //
10
+ // * Redistributions of source code must retain the above copyright
11
+ // notice, this list of conditions and the following disclaimer.
12
+ // * Redistributions in binary form must reproduce the above
13
+ // copyright notice, this list of conditions and the following disclaimer
14
+ // in the documentation and/or other materials provided with the
15
+ // distribution.
16
+ // * Neither the name of Google Inc. nor the names of its
17
+ // contributors may be used to endorse or promote products derived from
18
+ // this software without specific prior written permission.
19
+ //
20
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ //
32
+ // Author: Sanjay Ghemawat
33
+ //
34
+ // TODO: Test extractions for PartialMatch/Consume
35
+
36
+ #ifdef HAVE_CONFIG_H
37
+ #include "config.h"
38
+ #endif
39
+
40
+ #include <stdio.h>
41
+ #include <string.h> /* for memset and strcmp */
42
+ #include <cassert>
43
+ #include <vector>
44
+ #include "pcrecpp.h"
45
+
46
+ using pcrecpp::StringPiece;
47
+ using pcrecpp::RE;
48
+ using pcrecpp::RE_Options;
49
+ using pcrecpp::Hex;
50
+ using pcrecpp::Octal;
51
+ using pcrecpp::CRadix;
52
+
53
+ static bool VERBOSE_TEST = false;
54
+
55
+ // CHECK dies with a fatal error if condition is not true. It is *not*
56
+ // controlled by NDEBUG, so the check will be executed regardless of
57
+ // compilation mode. Therefore, it is safe to do things like:
58
+ // CHECK_EQ(fp->Write(x), 4)
59
+ #define CHECK(condition) do { \
60
+ if (!(condition)) { \
61
+ fprintf(stderr, "%s:%d: Check failed: %s\n", \
62
+ __FILE__, __LINE__, #condition); \
63
+ exit(1); \
64
+ } \
65
+ } while (0)
66
+
67
+ #define CHECK_EQ(a, b) CHECK(a == b)
68
+
69
+ static void Timing1(int num_iters) {
70
+ // Same pattern lots of times
71
+ RE pattern("ruby:\\d+");
72
+ StringPiece p("ruby:1234");
73
+ for (int j = num_iters; j > 0; j--) {
74
+ CHECK(pattern.FullMatch(p));
75
+ }
76
+ }
77
+
78
+ static void Timing2(int num_iters) {
79
+ // Same pattern lots of times
80
+ RE pattern("ruby:(\\d+)");
81
+ int i;
82
+ for (int j = num_iters; j > 0; j--) {
83
+ CHECK(pattern.FullMatch("ruby:1234", &i));
84
+ CHECK_EQ(i, 1234);
85
+ }
86
+ }
87
+
88
+ static void Timing3(int num_iters) {
89
+ string text_string;
90
+ for (int j = num_iters; j > 0; j--) {
91
+ text_string += "this is another line\n";
92
+ }
93
+
94
+ RE line_matcher(".*\n");
95
+ string line;
96
+ StringPiece text(text_string);
97
+ int counter = 0;
98
+ while (line_matcher.Consume(&text)) {
99
+ counter++;
100
+ }
101
+ printf("Matched %d lines\n", counter);
102
+ }
103
+
104
+ #if 0 // uncomment this if you have a way of defining VirtualProcessSize()
105
+
106
+ static void LeakTest() {
107
+ // Check for memory leaks
108
+ unsigned long long initial_size = 0;
109
+ for (int i = 0; i < 100000; i++) {
110
+ if (i == 50000) {
111
+ initial_size = VirtualProcessSize();
112
+ printf("Size after 50000: %llu\n", initial_size);
113
+ }
114
+ char buf[100]; // definitely big enough
115
+ sprintf(buf, "pat%09d", i);
116
+ RE newre(buf);
117
+ }
118
+ uint64 final_size = VirtualProcessSize();
119
+ printf("Size after 100000: %llu\n", final_size);
120
+ const double growth = double(final_size - initial_size) / final_size;
121
+ printf("Growth: %0.2f%%", growth * 100);
122
+ CHECK(growth < 0.02); // Allow < 2% growth
123
+ }
124
+
125
+ #endif
126
+
127
+ static void RadixTests() {
128
+ printf("Testing hex\n");
129
+
130
+ #define CHECK_HEX(type, value) \
131
+ do { \
132
+ type v; \
133
+ CHECK(RE("([0-9a-fA-F]+)[uUlL]*").FullMatch(#value, Hex(&v))); \
134
+ CHECK_EQ(v, 0x ## value); \
135
+ CHECK(RE("([0-9a-fA-FxX]+)[uUlL]*").FullMatch("0x" #value, CRadix(&v))); \
136
+ CHECK_EQ(v, 0x ## value); \
137
+ } while(0)
138
+
139
+ CHECK_HEX(short, 2bad);
140
+ CHECK_HEX(unsigned short, 2badU);
141
+ CHECK_HEX(int, dead);
142
+ CHECK_HEX(unsigned int, deadU);
143
+ CHECK_HEX(long, 7eadbeefL);
144
+ CHECK_HEX(unsigned long, deadbeefUL);
145
+ #ifdef HAVE_LONG_LONG
146
+ CHECK_HEX(long long, 12345678deadbeefLL);
147
+ #endif
148
+ #ifdef HAVE_UNSIGNED_LONG_LONG
149
+ CHECK_HEX(unsigned long long, cafebabedeadbeefULL);
150
+ #endif
151
+
152
+ #undef CHECK_HEX
153
+
154
+ printf("Testing octal\n");
155
+
156
+ #define CHECK_OCTAL(type, value) \
157
+ do { \
158
+ type v; \
159
+ CHECK(RE("([0-7]+)[uUlL]*").FullMatch(#value, Octal(&v))); \
160
+ CHECK_EQ(v, 0 ## value); \
161
+ CHECK(RE("([0-9a-fA-FxX]+)[uUlL]*").FullMatch("0" #value, CRadix(&v))); \
162
+ CHECK_EQ(v, 0 ## value); \
163
+ } while(0)
164
+
165
+ CHECK_OCTAL(short, 77777);
166
+ CHECK_OCTAL(unsigned short, 177777U);
167
+ CHECK_OCTAL(int, 17777777777);
168
+ CHECK_OCTAL(unsigned int, 37777777777U);
169
+ CHECK_OCTAL(long, 17777777777L);
170
+ CHECK_OCTAL(unsigned long, 37777777777UL);
171
+ #ifdef HAVE_LONG_LONG
172
+ CHECK_OCTAL(long long, 777777777777777777777LL);
173
+ #endif
174
+ #ifdef HAVE_UNSIGNED_LONG_LONG
175
+ CHECK_OCTAL(unsigned long long, 1777777777777777777777ULL);
176
+ #endif
177
+
178
+ #undef CHECK_OCTAL
179
+
180
+ printf("Testing decimal\n");
181
+
182
+ #define CHECK_DECIMAL(type, value) \
183
+ do { \
184
+ type v; \
185
+ CHECK(RE("(-?[0-9]+)[uUlL]*").FullMatch(#value, &v)); \
186
+ CHECK_EQ(v, value); \
187
+ CHECK(RE("(-?[0-9a-fA-FxX]+)[uUlL]*").FullMatch(#value, CRadix(&v))); \
188
+ CHECK_EQ(v, value); \
189
+ } while(0)
190
+
191
+ CHECK_DECIMAL(short, -1);
192
+ CHECK_DECIMAL(unsigned short, 9999);
193
+ CHECK_DECIMAL(int, -1000);
194
+ CHECK_DECIMAL(unsigned int, 12345U);
195
+ CHECK_DECIMAL(long, -10000000L);
196
+ CHECK_DECIMAL(unsigned long, 3083324652U);
197
+ #ifdef HAVE_LONG_LONG
198
+ CHECK_DECIMAL(long long, -100000000000000LL);
199
+ #endif
200
+ #ifdef HAVE_UNSIGNED_LONG_LONG
201
+ CHECK_DECIMAL(unsigned long long, 1234567890987654321ULL);
202
+ #endif
203
+
204
+ #undef CHECK_DECIMAL
205
+
206
+ }
207
+
208
+ static void TestReplace() {
209
+ printf("Testing Replace\n");
210
+
211
+ struct ReplaceTest {
212
+ const char *regexp;
213
+ const char *rewrite;
214
+ const char *original;
215
+ const char *single;
216
+ const char *global;
217
+ int global_count; // the expected return value from ReplaceAll
218
+ };
219
+ static const ReplaceTest tests[] = {
220
+ { "(qu|[b-df-hj-np-tv-z]*)([a-z]+)",
221
+ "\\2\\1ay",
222
+ "the quick brown fox jumps over the lazy dogs.",
223
+ "ethay quick brown fox jumps over the lazy dogs.",
224
+ "ethay ickquay ownbray oxfay umpsjay overay ethay azylay ogsday.",
225
+ 9 },
226
+ { "\\w+",
227
+ "\\0-NOSPAM",
228
+ "paul.haahr@google.com",
229
+ "paul-NOSPAM.haahr@google.com",
230
+ "paul-NOSPAM.haahr-NOSPAM@google-NOSPAM.com-NOSPAM",
231
+ 4 },
232
+ { "^",
233
+ "(START)",
234
+ "foo",
235
+ "(START)foo",
236
+ "(START)foo",
237
+ 1 },
238
+ { "^",
239
+ "(START)",
240
+ "",
241
+ "(START)",
242
+ "(START)",
243
+ 1 },
244
+ { "$",
245
+ "(END)",
246
+ "",
247
+ "(END)",
248
+ "(END)",
249
+ 1 },
250
+ { "b",
251
+ "bb",
252
+ "ababababab",
253
+ "abbabababab",
254
+ "abbabbabbabbabb",
255
+ 5 },
256
+ { "b",
257
+ "bb",
258
+ "bbbbbb",
259
+ "bbbbbbb",
260
+ "bbbbbbbbbbbb",
261
+ 6 },
262
+ { "b+",
263
+ "bb",
264
+ "bbbbbb",
265
+ "bb",
266
+ "bb",
267
+ 1 },
268
+ { "b*",
269
+ "bb",
270
+ "bbbbbb",
271
+ "bb",
272
+ "bbbb",
273
+ 2 },
274
+ { "b*",
275
+ "bb",
276
+ "aaaaa",
277
+ "bbaaaaa",
278
+ "bbabbabbabbabbabb",
279
+ 6 },
280
+ { "b*",
281
+ "bb",
282
+ "aa\naa\n",
283
+ "bbaa\naa\n",
284
+ "bbabbabb\nbbabbabb\nbb",
285
+ 7 },
286
+ { "b*",
287
+ "bb",
288
+ "aa\raa\r",
289
+ "bbaa\raa\r",
290
+ "bbabbabb\rbbabbabb\rbb",
291
+ 7 },
292
+ { "b*",
293
+ "bb",
294
+ "aa\r\naa\r\n",
295
+ "bbaa\r\naa\r\n",
296
+ "bbabbabb\r\nbbabbabb\r\nbb",
297
+ 7 },
298
+ // Check empty-string matching (it's tricky!)
299
+ { "aa|b*",
300
+ "@",
301
+ "aa",
302
+ "@",
303
+ "@@",
304
+ 2 },
305
+ { "b*|aa",
306
+ "@",
307
+ "aa",
308
+ "@aa",
309
+ "@@@",
310
+ 3 },
311
+ #ifdef SUPPORT_UTF8
312
+ { "b*",
313
+ "bb",
314
+ "\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xA0\xE3\x81\xB8", // utf8
315
+ "bb\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xA0\xE3\x81\xB8",
316
+ "bb\xE3\x83\x9B""bb""\xE3\x83\xBC""bb""\xE3\x83\xA0""bb""\xE3\x81\xB8""bb",
317
+ 5 },
318
+ { "b*",
319
+ "bb",
320
+ "\xE3\x83\x9B\r\n\xE3\x83\xBC\r\xE3\x83\xA0\n\xE3\x81\xB8\r\n", // utf8
321
+ "bb\xE3\x83\x9B\r\n\xE3\x83\xBC\r\xE3\x83\xA0\n\xE3\x81\xB8\r\n",
322
+ ("bb\xE3\x83\x9B""bb\r\nbb""\xE3\x83\xBC""bb\rbb""\xE3\x83\xA0"
323
+ "bb\nbb""\xE3\x81\xB8""bb\r\nbb"),
324
+ 9 },
325
+ #endif
326
+ { "", NULL, NULL, NULL, NULL, 0 }
327
+ };
328
+
329
+ #ifdef SUPPORT_UTF8
330
+ const bool support_utf8 = true;
331
+ #else
332
+ const bool support_utf8 = false;
333
+ #endif
334
+
335
+ for (const ReplaceTest *t = tests; t->original != NULL; ++t) {
336
+ RE re(t->regexp, RE_Options(PCRE_NEWLINE_CRLF).set_utf8(support_utf8));
337
+ assert(re.error().empty());
338
+ string one(t->original);
339
+ CHECK(re.Replace(t->rewrite, &one));
340
+ CHECK_EQ(one, t->single);
341
+ string all(t->original);
342
+ const int replace_count = re.GlobalReplace(t->rewrite, &all);
343
+ CHECK_EQ(all, t->global);
344
+ CHECK_EQ(replace_count, t->global_count);
345
+ }
346
+
347
+ // One final test: test \r\n replacement when we're not in CRLF mode
348
+ {
349
+ RE re("b*", RE_Options(PCRE_NEWLINE_CR).set_utf8(support_utf8));
350
+ assert(re.error().empty());
351
+ string all("aa\r\naa\r\n");
352
+ CHECK_EQ(re.GlobalReplace("bb", &all), 9);
353
+ CHECK_EQ(all, string("bbabbabb\rbb\nbbabbabb\rbb\nbb"));
354
+ }
355
+ {
356
+ RE re("b*", RE_Options(PCRE_NEWLINE_LF).set_utf8(support_utf8));
357
+ assert(re.error().empty());
358
+ string all("aa\r\naa\r\n");
359
+ CHECK_EQ(re.GlobalReplace("bb", &all), 9);
360
+ CHECK_EQ(all, string("bbabbabb\rbb\nbbabbabb\rbb\nbb"));
361
+ }
362
+ // TODO: test what happens when no PCRE_NEWLINE_* flag is set.
363
+ // Alas, the answer depends on how pcre was compiled.
364
+ }
365
+
366
+ static void TestExtract() {
367
+ printf("Testing Extract\n");
368
+
369
+ string s;
370
+
371
+ CHECK(RE("(.*)@([^.]*)").Extract("\\2!\\1", "boris@kremvax.ru", &s));
372
+ CHECK_EQ(s, "kremvax!boris");
373
+
374
+ // check the RE interface as well
375
+ CHECK(RE(".*").Extract("'\\0'", "foo", &s));
376
+ CHECK_EQ(s, "'foo'");
377
+ CHECK(!RE("bar").Extract("'\\0'", "baz", &s));
378
+ CHECK_EQ(s, "'foo'");
379
+ }
380
+
381
+ static void TestConsume() {
382
+ printf("Testing Consume\n");
383
+
384
+ string word;
385
+
386
+ string s(" aaa b!@#$@#$cccc");
387
+ StringPiece input(s);
388
+
389
+ RE r("\\s*(\\w+)"); // matches a word, possibly proceeded by whitespace
390
+ CHECK(r.Consume(&input, &word));
391
+ CHECK_EQ(word, "aaa");
392
+ CHECK(r.Consume(&input, &word));
393
+ CHECK_EQ(word, "b");
394
+ CHECK(! r.Consume(&input, &word));
395
+ }
396
+
397
+ static void TestFindAndConsume() {
398
+ printf("Testing FindAndConsume\n");
399
+
400
+ string word;
401
+
402
+ string s(" aaa b!@#$@#$cccc");
403
+ StringPiece input(s);
404
+
405
+ RE r("(\\w+)"); // matches a word
406
+ CHECK(r.FindAndConsume(&input, &word));
407
+ CHECK_EQ(word, "aaa");
408
+ CHECK(r.FindAndConsume(&input, &word));
409
+ CHECK_EQ(word, "b");
410
+ CHECK(r.FindAndConsume(&input, &word));
411
+ CHECK_EQ(word, "cccc");
412
+ CHECK(! r.FindAndConsume(&input, &word));
413
+ }
414
+
415
+ static void TestMatchNumberPeculiarity() {
416
+ printf("Testing match-number peculiarity\n");
417
+
418
+ string word1;
419
+ string word2;
420
+ string word3;
421
+
422
+ RE r("(foo)|(bar)|(baz)");
423
+ CHECK(r.PartialMatch("foo", &word1, &word2, &word3));
424
+ CHECK_EQ(word1, "foo");
425
+ CHECK_EQ(word2, "");
426
+ CHECK_EQ(word3, "");
427
+ CHECK(r.PartialMatch("bar", &word1, &word2, &word3));
428
+ CHECK_EQ(word1, "");
429
+ CHECK_EQ(word2, "bar");
430
+ CHECK_EQ(word3, "");
431
+ CHECK(r.PartialMatch("baz", &word1, &word2, &word3));
432
+ CHECK_EQ(word1, "");
433
+ CHECK_EQ(word2, "");
434
+ CHECK_EQ(word3, "baz");
435
+ CHECK(!r.PartialMatch("f", &word1, &word2, &word3));
436
+
437
+ string a;
438
+ CHECK(RE("(foo)|hello").FullMatch("hello", &a));
439
+ CHECK_EQ(a, "");
440
+ }
441
+
442
+ static void TestRecursion() {
443
+ printf("Testing recursion\n");
444
+
445
+ // Get one string that passes (sometimes), one that never does.
446
+ string text_good("abcdefghijk");
447
+ string text_bad("acdefghijkl");
448
+
449
+ // According to pcretest, matching text_good against (\w+)*b
450
+ // requires match_limit of at least 8192, and match_recursion_limit
451
+ // of at least 37.
452
+
453
+ RE_Options options_ml;
454
+ options_ml.set_match_limit(8192);
455
+ RE re("(\\w+)*b", options_ml);
456
+ CHECK(re.PartialMatch(text_good) == true);
457
+ CHECK(re.PartialMatch(text_bad) == false);
458
+ CHECK(re.FullMatch(text_good) == false);
459
+ CHECK(re.FullMatch(text_bad) == false);
460
+
461
+ options_ml.set_match_limit(1024);
462
+ RE re2("(\\w+)*b", options_ml);
463
+ CHECK(re2.PartialMatch(text_good) == false); // because of match_limit
464
+ CHECK(re2.PartialMatch(text_bad) == false);
465
+ CHECK(re2.FullMatch(text_good) == false);
466
+ CHECK(re2.FullMatch(text_bad) == false);
467
+
468
+ RE_Options options_mlr;
469
+ options_mlr.set_match_limit_recursion(50);
470
+ RE re3("(\\w+)*b", options_mlr);
471
+ CHECK(re3.PartialMatch(text_good) == true);
472
+ CHECK(re3.PartialMatch(text_bad) == false);
473
+ CHECK(re3.FullMatch(text_good) == false);
474
+ CHECK(re3.FullMatch(text_bad) == false);
475
+
476
+ options_mlr.set_match_limit_recursion(10);
477
+ RE re4("(\\w+)*b", options_mlr);
478
+ CHECK(re4.PartialMatch(text_good) == false);
479
+ CHECK(re4.PartialMatch(text_bad) == false);
480
+ CHECK(re4.FullMatch(text_good) == false);
481
+ CHECK(re4.FullMatch(text_bad) == false);
482
+ }
483
+
484
+ // A meta-quoted string, interpreted as a pattern, should always match
485
+ // the original unquoted string.
486
+ static void TestQuoteMeta(string unquoted, RE_Options options = RE_Options()) {
487
+ string quoted = RE::QuoteMeta(unquoted);
488
+ RE re(quoted, options);
489
+ CHECK(re.FullMatch(unquoted));
490
+ }
491
+
492
+ // A string containing meaningful regexp characters, which is then meta-
493
+ // quoted, should not generally match a string the unquoted string does.
494
+ static void NegativeTestQuoteMeta(string unquoted, string should_not_match,
495
+ RE_Options options = RE_Options()) {
496
+ string quoted = RE::QuoteMeta(unquoted);
497
+ RE re(quoted, options);
498
+ CHECK(!re.FullMatch(should_not_match));
499
+ }
500
+
501
+ // Tests that quoted meta characters match their original strings,
502
+ // and that a few things that shouldn't match indeed do not.
503
+ static void TestQuotaMetaSimple() {
504
+ TestQuoteMeta("foo");
505
+ TestQuoteMeta("foo.bar");
506
+ TestQuoteMeta("foo\\.bar");
507
+ TestQuoteMeta("[1-9]");
508
+ TestQuoteMeta("1.5-2.0?");
509
+ TestQuoteMeta("\\d");
510
+ TestQuoteMeta("Who doesn't like ice cream?");
511
+ TestQuoteMeta("((a|b)c?d*e+[f-h]i)");
512
+ TestQuoteMeta("((?!)xxx).*yyy");
513
+ TestQuoteMeta("([");
514
+ TestQuoteMeta(string("foo\0bar", 7));
515
+ }
516
+
517
+ static void TestQuoteMetaSimpleNegative() {
518
+ NegativeTestQuoteMeta("foo", "bar");
519
+ NegativeTestQuoteMeta("...", "bar");
520
+ NegativeTestQuoteMeta("\\.", ".");
521
+ NegativeTestQuoteMeta("\\.", "..");
522
+ NegativeTestQuoteMeta("(a)", "a");
523
+ NegativeTestQuoteMeta("(a|b)", "a");
524
+ NegativeTestQuoteMeta("(a|b)", "(a)");
525
+ NegativeTestQuoteMeta("(a|b)", "a|b");
526
+ NegativeTestQuoteMeta("[0-9]", "0");
527
+ NegativeTestQuoteMeta("[0-9]", "0-9");
528
+ NegativeTestQuoteMeta("[0-9]", "[9]");
529
+ NegativeTestQuoteMeta("((?!)xxx)", "xxx");
530
+ }
531
+
532
+ static void TestQuoteMetaLatin1() {
533
+ TestQuoteMeta("3\xb2 = 9");
534
+ }
535
+
536
+ static void TestQuoteMetaUtf8() {
537
+ #ifdef SUPPORT_UTF8
538
+ TestQuoteMeta("Pl\xc3\xa1\x63ido Domingo", pcrecpp::UTF8());
539
+ TestQuoteMeta("xyz", pcrecpp::UTF8()); // No fancy utf8
540
+ TestQuoteMeta("\xc2\xb0", pcrecpp::UTF8()); // 2-byte utf8 (degree symbol)
541
+ TestQuoteMeta("27\xc2\xb0 degrees", pcrecpp::UTF8()); // As a middle character
542
+ TestQuoteMeta("\xe2\x80\xb3", pcrecpp::UTF8()); // 3-byte utf8 (double prime)
543
+ TestQuoteMeta("\xf0\x9d\x85\x9f", pcrecpp::UTF8()); // 4-byte utf8 (music note)
544
+ TestQuoteMeta("27\xc2\xb0"); // Interpreted as Latin-1, but should still work
545
+ NegativeTestQuoteMeta("27\xc2\xb0", // 2-byte utf (degree symbol)
546
+ "27\\\xc2\\\xb0",
547
+ pcrecpp::UTF8());
548
+ #endif
549
+ }
550
+
551
+ static void TestQuoteMetaAll() {
552
+ printf("Testing QuoteMeta\n");
553
+ TestQuotaMetaSimple();
554
+ TestQuoteMetaSimpleNegative();
555
+ TestQuoteMetaLatin1();
556
+ TestQuoteMetaUtf8();
557
+ }
558
+
559
+ //
560
+ // Options tests contributed by
561
+ // Giuseppe Maxia, CTO, Stardata s.r.l.
562
+ // July 2005
563
+ //
564
+ static void GetOneOptionResult(
565
+ const char *option_name,
566
+ const char *regex,
567
+ const char *str,
568
+ RE_Options options,
569
+ bool full,
570
+ string expected) {
571
+
572
+ printf("Testing Option <%s>\n", option_name);
573
+ if(VERBOSE_TEST)
574
+ printf("/%s/ finds \"%s\" within \"%s\" \n",
575
+ regex,
576
+ expected.c_str(),
577
+ str);
578
+ string captured("");
579
+ if (full)
580
+ RE(regex,options).FullMatch(str, &captured);
581
+ else
582
+ RE(regex,options).PartialMatch(str, &captured);
583
+ CHECK_EQ(captured, expected);
584
+ }
585
+
586
+ static void TestOneOption(
587
+ const char *option_name,
588
+ const char *regex,
589
+ const char *str,
590
+ RE_Options options,
591
+ bool full,
592
+ bool assertive = true) {
593
+
594
+ printf("Testing Option <%s>\n", option_name);
595
+ if (VERBOSE_TEST)
596
+ printf("'%s' %s /%s/ \n",
597
+ str,
598
+ (assertive? "matches" : "doesn't match"),
599
+ regex);
600
+ if (assertive) {
601
+ if (full)
602
+ CHECK(RE(regex,options).FullMatch(str));
603
+ else
604
+ CHECK(RE(regex,options).PartialMatch(str));
605
+ } else {
606
+ if (full)
607
+ CHECK(!RE(regex,options).FullMatch(str));
608
+ else
609
+ CHECK(!RE(regex,options).PartialMatch(str));
610
+ }
611
+ }
612
+
613
+ static void Test_CASELESS() {
614
+ RE_Options options;
615
+ RE_Options options2;
616
+
617
+ options.set_caseless(true);
618
+ TestOneOption("CASELESS (class)", "HELLO", "hello", options, false);
619
+ TestOneOption("CASELESS (class2)", "HELLO", "hello", options2.set_caseless(true), false);
620
+ TestOneOption("CASELESS (class)", "^[A-Z]+$", "Hello", options, false);
621
+
622
+ TestOneOption("CASELESS (function)", "HELLO", "hello", pcrecpp::CASELESS(), false);
623
+ TestOneOption("CASELESS (function)", "^[A-Z]+$", "Hello", pcrecpp::CASELESS(), false);
624
+ options.set_caseless(false);
625
+ TestOneOption("no CASELESS", "HELLO", "hello", options, false, false);
626
+ }
627
+
628
+ static void Test_MULTILINE() {
629
+ RE_Options options;
630
+ RE_Options options2;
631
+ const char *str = "HELLO\n" "cruel\n" "world\n";
632
+
633
+ options.set_multiline(true);
634
+ TestOneOption("MULTILINE (class)", "^cruel$", str, options, false);
635
+ TestOneOption("MULTILINE (class2)", "^cruel$", str, options2.set_multiline(true), false);
636
+ TestOneOption("MULTILINE (function)", "^cruel$", str, pcrecpp::MULTILINE(), false);
637
+ options.set_multiline(false);
638
+ TestOneOption("no MULTILINE", "^cruel$", str, options, false, false);
639
+ }
640
+
641
+ static void Test_DOTALL() {
642
+ RE_Options options;
643
+ RE_Options options2;
644
+ const char *str = "HELLO\n" "cruel\n" "world";
645
+
646
+ options.set_dotall(true);
647
+ TestOneOption("DOTALL (class)", "HELLO.*world", str, options, true);
648
+ TestOneOption("DOTALL (class2)", "HELLO.*world", str, options2.set_dotall(true), true);
649
+ TestOneOption("DOTALL (function)", "HELLO.*world", str, pcrecpp::DOTALL(), true);
650
+ options.set_dotall(false);
651
+ TestOneOption("no DOTALL", "HELLO.*world", str, options, true, false);
652
+ }
653
+
654
+ static void Test_DOLLAR_ENDONLY() {
655
+ RE_Options options;
656
+ RE_Options options2;
657
+ const char *str = "HELLO world\n";
658
+
659
+ TestOneOption("no DOLLAR_ENDONLY", "world$", str, options, false);
660
+ options.set_dollar_endonly(true);
661
+ TestOneOption("DOLLAR_ENDONLY 1", "world$", str, options, false, false);
662
+ TestOneOption("DOLLAR_ENDONLY 2", "world$", str, options2.set_dollar_endonly(true), false, false);
663
+ }
664
+
665
+ static void Test_EXTRA() {
666
+ RE_Options options;
667
+ const char *str = "HELLO";
668
+
669
+ options.set_extra(true);
670
+ TestOneOption("EXTRA 1", "\\HELL\\O", str, options, true, false );
671
+ TestOneOption("EXTRA 2", "\\HELL\\O", str, RE_Options().set_extra(true), true, false );
672
+ options.set_extra(false);
673
+ TestOneOption("no EXTRA", "\\HELL\\O", str, options, true );
674
+ }
675
+
676
+ static void Test_EXTENDED() {
677
+ RE_Options options;
678
+ RE_Options options2;
679
+ const char *str = "HELLO world";
680
+
681
+ options.set_extended(true);
682
+ TestOneOption("EXTENDED (class)", "HELLO world", str, options, false, false);
683
+ TestOneOption("EXTENDED (class2)", "HELLO world", str, options2.set_extended(true), false, false);
684
+ TestOneOption("EXTENDED (class)",
685
+ "^ HE L{2} O "
686
+ "\\s+ "
687
+ "\\w+ $ ",
688
+ str,
689
+ options,
690
+ false);
691
+
692
+ TestOneOption("EXTENDED (function)", "HELLO world", str, pcrecpp::EXTENDED(), false, false);
693
+ TestOneOption("EXTENDED (function)",
694
+ "^ HE L{2} O "
695
+ "\\s+ "
696
+ "\\w+ $ ",
697
+ str,
698
+ pcrecpp::EXTENDED(),
699
+ false);
700
+
701
+ options.set_extended(false);
702
+ TestOneOption("no EXTENDED", "HELLO world", str, options, false);
703
+ }
704
+
705
+ static void Test_NO_AUTO_CAPTURE() {
706
+ RE_Options options;
707
+ const char *str = "HELLO world";
708
+ string captured;
709
+
710
+ printf("Testing Option <no NO_AUTO_CAPTURE>\n");
711
+ if (VERBOSE_TEST)
712
+ printf("parentheses capture text\n");
713
+ RE re("(world|universe)$", options);
714
+ CHECK(re.Extract("\\1", str , &captured));
715
+ CHECK_EQ(captured, "world");
716
+ options.set_no_auto_capture(true);
717
+ printf("testing Option <NO_AUTO_CAPTURE>\n");
718
+ if (VERBOSE_TEST)
719
+ printf("parentheses do not capture text\n");
720
+ re.Extract("\\1",str, &captured );
721
+ CHECK_EQ(captured, "world");
722
+ }
723
+
724
+ static void Test_UNGREEDY() {
725
+ RE_Options options;
726
+ const char *str = "HELLO, 'this' is the 'world'";
727
+
728
+ options.set_ungreedy(true);
729
+ GetOneOptionResult("UNGREEDY 1", "('.*')", str, options, false, "'this'" );
730
+ GetOneOptionResult("UNGREEDY 2", "('.*')", str, RE_Options().set_ungreedy(true), false, "'this'" );
731
+ GetOneOptionResult("UNGREEDY", "('.*?')", str, options, false, "'this' is the 'world'" );
732
+
733
+ options.set_ungreedy(false);
734
+ GetOneOptionResult("no UNGREEDY", "('.*')", str, options, false, "'this' is the 'world'" );
735
+ GetOneOptionResult("no UNGREEDY", "('.*?')", str, options, false, "'this'" );
736
+ }
737
+
738
+ static void Test_all_options() {
739
+ const char *str = "HELLO\n" "cruel\n" "world";
740
+ RE_Options options;
741
+ options.set_all_options(PCRE_CASELESS | PCRE_DOTALL);
742
+
743
+ TestOneOption("all_options (CASELESS|DOTALL)", "^hello.*WORLD", str , options, false);
744
+ options.set_all_options(0);
745
+ TestOneOption("all_options (0)", "^hello.*WORLD", str , options, false, false);
746
+ options.set_all_options(PCRE_MULTILINE | PCRE_EXTENDED);
747
+
748
+ TestOneOption("all_options (MULTILINE|EXTENDED)", " ^ c r u e l $ ", str, options, false);
749
+ TestOneOption("all_options (MULTILINE|EXTENDED) with constructor",
750
+ " ^ c r u e l $ ",
751
+ str,
752
+ RE_Options(PCRE_MULTILINE | PCRE_EXTENDED),
753
+ false);
754
+
755
+ TestOneOption("all_options (MULTILINE|EXTENDED) with concatenation",
756
+ " ^ c r u e l $ ",
757
+ str,
758
+ RE_Options()
759
+ .set_multiline(true)
760
+ .set_extended(true),
761
+ false);
762
+
763
+ options.set_all_options(0);
764
+ TestOneOption("all_options (0)", "^ c r u e l $", str, options, false, false);
765
+
766
+ }
767
+
768
+ static void TestOptions() {
769
+ printf("Testing Options\n");
770
+ Test_CASELESS();
771
+ Test_MULTILINE();
772
+ Test_DOTALL();
773
+ Test_DOLLAR_ENDONLY();
774
+ Test_EXTENDED();
775
+ Test_NO_AUTO_CAPTURE();
776
+ Test_UNGREEDY();
777
+ Test_EXTRA();
778
+ Test_all_options();
779
+ }
780
+
781
+ static void TestConstructors() {
782
+ printf("Testing constructors\n");
783
+
784
+ RE_Options options;
785
+ options.set_dotall(true);
786
+ const char *str = "HELLO\n" "cruel\n" "world";
787
+
788
+ RE orig("HELLO.*world", options);
789
+ CHECK(orig.FullMatch(str));
790
+
791
+ RE copy1(orig);
792
+ CHECK(copy1.FullMatch(str));
793
+
794
+ RE copy2("not a match");
795
+ CHECK(!copy2.FullMatch(str));
796
+ copy2 = copy1;
797
+ CHECK(copy2.FullMatch(str));
798
+ copy2 = orig;
799
+ CHECK(copy2.FullMatch(str));
800
+
801
+ // Make sure when we assign to ourselves, nothing bad happens
802
+ orig = orig;
803
+ copy1 = copy1;
804
+ copy2 = copy2;
805
+ CHECK(orig.FullMatch(str));
806
+ CHECK(copy1.FullMatch(str));
807
+ CHECK(copy2.FullMatch(str));
808
+ }
809
+
810
+ int main(int argc, char** argv) {
811
+ // Treat any flag as --help
812
+ if (argc > 1 && argv[1][0] == '-') {
813
+ printf("Usage: %s [timing1|timing2|timing3 num-iters]\n"
814
+ " If 'timingX ###' is specified, run the given timing test\n"
815
+ " with the given number of iterations, rather than running\n"
816
+ " the default corectness test.\n", argv[0]);
817
+ return 0;
818
+ }
819
+
820
+ if (argc > 1) {
821
+ if ( argc == 2 || atoi(argv[2]) == 0) {
822
+ printf("timing mode needs a num-iters argument\n");
823
+ return 1;
824
+ }
825
+ if (!strcmp(argv[1], "timing1"))
826
+ Timing1(atoi(argv[2]));
827
+ else if (!strcmp(argv[1], "timing2"))
828
+ Timing2(atoi(argv[2]));
829
+ else if (!strcmp(argv[1], "timing3"))
830
+ Timing3(atoi(argv[2]));
831
+ else
832
+ printf("Unknown argument '%s'\n", argv[1]);
833
+ return 0;
834
+ }
835
+
836
+ printf("PCRE C++ wrapper tests\n");
837
+ printf("Testing FullMatch\n");
838
+
839
+ int i;
840
+ string s;
841
+
842
+ /***** FullMatch with no args *****/
843
+
844
+ CHECK(RE("h.*o").FullMatch("hello"));
845
+ CHECK(!RE("h.*o").FullMatch("othello")); // Must be anchored at front
846
+ CHECK(!RE("h.*o").FullMatch("hello!")); // Must be anchored at end
847
+ CHECK(RE("a*").FullMatch("aaaa")); // Fullmatch with normal op
848
+ CHECK(RE("a*?").FullMatch("aaaa")); // Fullmatch with nongreedy op
849
+ CHECK(RE("a*?\\z").FullMatch("aaaa")); // Two unusual ops
850
+
851
+ /***** FullMatch with args *****/
852
+
853
+ // Zero-arg
854
+ CHECK(RE("\\d+").FullMatch("1001"));
855
+
856
+ // Single-arg
857
+ CHECK(RE("(\\d+)").FullMatch("1001", &i));
858
+ CHECK_EQ(i, 1001);
859
+ CHECK(RE("(-?\\d+)").FullMatch("-123", &i));
860
+ CHECK_EQ(i, -123);
861
+ CHECK(!RE("()\\d+").FullMatch("10", &i));
862
+ CHECK(!RE("(\\d+)").FullMatch("1234567890123456789012345678901234567890",
863
+ &i));
864
+
865
+ // Digits surrounding integer-arg
866
+ CHECK(RE("1(\\d*)4").FullMatch("1234", &i));
867
+ CHECK_EQ(i, 23);
868
+ CHECK(RE("(\\d)\\d+").FullMatch("1234", &i));
869
+ CHECK_EQ(i, 1);
870
+ CHECK(RE("(-\\d)\\d+").FullMatch("-1234", &i));
871
+ CHECK_EQ(i, -1);
872
+ CHECK(RE("(\\d)").PartialMatch("1234", &i));
873
+ CHECK_EQ(i, 1);
874
+ CHECK(RE("(-\\d)").PartialMatch("-1234", &i));
875
+ CHECK_EQ(i, -1);
876
+
877
+ // String-arg
878
+ CHECK(RE("h(.*)o").FullMatch("hello", &s));
879
+ CHECK_EQ(s, string("ell"));
880
+
881
+ // StringPiece-arg
882
+ StringPiece sp;
883
+ CHECK(RE("(\\w+):(\\d+)").FullMatch("ruby:1234", &sp, &i));
884
+ CHECK_EQ(sp.size(), 4);
885
+ CHECK(memcmp(sp.data(), "ruby", 4) == 0);
886
+ CHECK_EQ(i, 1234);
887
+
888
+ // Multi-arg
889
+ CHECK(RE("(\\w+):(\\d+)").FullMatch("ruby:1234", &s, &i));
890
+ CHECK_EQ(s, string("ruby"));
891
+ CHECK_EQ(i, 1234);
892
+
893
+ // Ignore non-void* NULL arg
894
+ CHECK(RE("he(.*)lo").FullMatch("hello", (char*)NULL));
895
+ CHECK(RE("h(.*)o").FullMatch("hello", (string*)NULL));
896
+ CHECK(RE("h(.*)o").FullMatch("hello", (StringPiece*)NULL));
897
+ CHECK(RE("(.*)").FullMatch("1234", (int*)NULL));
898
+ #ifdef HAVE_LONG_LONG
899
+ CHECK(RE("(.*)").FullMatch("1234567890123456", (long long*)NULL));
900
+ #endif
901
+ CHECK(RE("(.*)").FullMatch("123.4567890123456", (double*)NULL));
902
+ CHECK(RE("(.*)").FullMatch("123.4567890123456", (float*)NULL));
903
+
904
+ // Fail on non-void* NULL arg if the match doesn't parse for the given type.
905
+ CHECK(!RE("h(.*)lo").FullMatch("hello", &s, (char*)NULL));
906
+ CHECK(!RE("(.*)").FullMatch("hello", (int*)NULL));
907
+ CHECK(!RE("(.*)").FullMatch("1234567890123456", (int*)NULL));
908
+ CHECK(!RE("(.*)").FullMatch("hello", (double*)NULL));
909
+ CHECK(!RE("(.*)").FullMatch("hello", (float*)NULL));
910
+
911
+ // Ignored arg
912
+ CHECK(RE("(\\w+)(:)(\\d+)").FullMatch("ruby:1234", &s, (void*)NULL, &i));
913
+ CHECK_EQ(s, string("ruby"));
914
+ CHECK_EQ(i, 1234);
915
+
916
+ // Type tests
917
+ {
918
+ char c;
919
+ CHECK(RE("(H)ello").FullMatch("Hello", &c));
920
+ CHECK_EQ(c, 'H');
921
+ }
922
+ {
923
+ unsigned char c;
924
+ CHECK(RE("(H)ello").FullMatch("Hello", &c));
925
+ CHECK_EQ(c, static_cast<unsigned char>('H'));
926
+ }
927
+ {
928
+ short v;
929
+ CHECK(RE("(-?\\d+)").FullMatch("100", &v)); CHECK_EQ(v, 100);
930
+ CHECK(RE("(-?\\d+)").FullMatch("-100", &v)); CHECK_EQ(v, -100);
931
+ CHECK(RE("(-?\\d+)").FullMatch("32767", &v)); CHECK_EQ(v, 32767);
932
+ CHECK(RE("(-?\\d+)").FullMatch("-32768", &v)); CHECK_EQ(v, -32768);
933
+ CHECK(!RE("(-?\\d+)").FullMatch("-32769", &v));
934
+ CHECK(!RE("(-?\\d+)").FullMatch("32768", &v));
935
+ }
936
+ {
937
+ unsigned short v;
938
+ CHECK(RE("(\\d+)").FullMatch("100", &v)); CHECK_EQ(v, 100);
939
+ CHECK(RE("(\\d+)").FullMatch("32767", &v)); CHECK_EQ(v, 32767);
940
+ CHECK(RE("(\\d+)").FullMatch("65535", &v)); CHECK_EQ(v, 65535);
941
+ CHECK(!RE("(\\d+)").FullMatch("65536", &v));
942
+ }
943
+ {
944
+ int v;
945
+ static const int max_value = 0x7fffffff;
946
+ static const int min_value = -max_value - 1;
947
+ CHECK(RE("(-?\\d+)").FullMatch("100", &v)); CHECK_EQ(v, 100);
948
+ CHECK(RE("(-?\\d+)").FullMatch("-100", &v)); CHECK_EQ(v, -100);
949
+ CHECK(RE("(-?\\d+)").FullMatch("2147483647", &v)); CHECK_EQ(v, max_value);
950
+ CHECK(RE("(-?\\d+)").FullMatch("-2147483648", &v)); CHECK_EQ(v, min_value);
951
+ CHECK(!RE("(-?\\d+)").FullMatch("-2147483649", &v));
952
+ CHECK(!RE("(-?\\d+)").FullMatch("2147483648", &v));
953
+ }
954
+ {
955
+ unsigned int v;
956
+ static const unsigned int max_value = 0xfffffffful;
957
+ CHECK(RE("(\\d+)").FullMatch("100", &v)); CHECK_EQ(v, 100);
958
+ CHECK(RE("(\\d+)").FullMatch("4294967295", &v)); CHECK_EQ(v, max_value);
959
+ CHECK(!RE("(\\d+)").FullMatch("4294967296", &v));
960
+ }
961
+ #ifdef HAVE_LONG_LONG
962
+ # if defined(__MINGW__) || defined(__MINGW32__)
963
+ # define LLD "%I64d"
964
+ # define LLU "%I64u"
965
+ # else
966
+ # define LLD "%lld"
967
+ # define LLU "%llu"
968
+ # endif
969
+ {
970
+ long long v;
971
+ static const long long max_value = 0x7fffffffffffffffLL;
972
+ static const long long min_value = -max_value - 1;
973
+ char buf[32]; // definitely big enough for a long long
974
+
975
+ CHECK(RE("(-?\\d+)").FullMatch("100", &v)); CHECK_EQ(v, 100);
976
+ CHECK(RE("(-?\\d+)").FullMatch("-100",&v)); CHECK_EQ(v, -100);
977
+
978
+ sprintf(buf, LLD, max_value);
979
+ CHECK(RE("(-?\\d+)").FullMatch(buf,&v)); CHECK_EQ(v, max_value);
980
+
981
+ sprintf(buf, LLD, min_value);
982
+ CHECK(RE("(-?\\d+)").FullMatch(buf,&v)); CHECK_EQ(v, min_value);
983
+
984
+ sprintf(buf, LLD, max_value);
985
+ assert(buf[strlen(buf)-1] != '9');
986
+ buf[strlen(buf)-1]++;
987
+ CHECK(!RE("(-?\\d+)").FullMatch(buf, &v));
988
+
989
+ sprintf(buf, LLD, min_value);
990
+ assert(buf[strlen(buf)-1] != '9');
991
+ buf[strlen(buf)-1]++;
992
+ CHECK(!RE("(-?\\d+)").FullMatch(buf, &v));
993
+ }
994
+ #endif
995
+ #if defined HAVE_UNSIGNED_LONG_LONG && defined HAVE_LONG_LONG
996
+ {
997
+ unsigned long long v;
998
+ long long v2;
999
+ static const unsigned long long max_value = 0xffffffffffffffffULL;
1000
+ char buf[32]; // definitely big enough for a unsigned long long
1001
+
1002
+ CHECK(RE("(-?\\d+)").FullMatch("100",&v)); CHECK_EQ(v, 100);
1003
+ CHECK(RE("(-?\\d+)").FullMatch("-100",&v2)); CHECK_EQ(v2, -100);
1004
+
1005
+ sprintf(buf, LLU, max_value);
1006
+ CHECK(RE("(-?\\d+)").FullMatch(buf,&v)); CHECK_EQ(v, max_value);
1007
+
1008
+ assert(buf[strlen(buf)-1] != '9');
1009
+ buf[strlen(buf)-1]++;
1010
+ CHECK(!RE("(-?\\d+)").FullMatch(buf, &v));
1011
+ }
1012
+ #endif
1013
+ {
1014
+ float v;
1015
+ CHECK(RE("(.*)").FullMatch("100", &v));
1016
+ CHECK(RE("(.*)").FullMatch("-100.", &v));
1017
+ CHECK(RE("(.*)").FullMatch("1e23", &v));
1018
+ }
1019
+ {
1020
+ double v;
1021
+ CHECK(RE("(.*)").FullMatch("100", &v));
1022
+ CHECK(RE("(.*)").FullMatch("-100.", &v));
1023
+ CHECK(RE("(.*)").FullMatch("1e23", &v));
1024
+ }
1025
+
1026
+ // Check that matching is fully anchored
1027
+ CHECK(!RE("(\\d+)").FullMatch("x1001", &i));
1028
+ CHECK(!RE("(\\d+)").FullMatch("1001x", &i));
1029
+ CHECK(RE("x(\\d+)").FullMatch("x1001", &i)); CHECK_EQ(i, 1001);
1030
+ CHECK(RE("(\\d+)x").FullMatch("1001x", &i)); CHECK_EQ(i, 1001);
1031
+
1032
+ // Braces
1033
+ CHECK(RE("[0-9a-f+.-]{5,}").FullMatch("0abcd"));
1034
+ CHECK(RE("[0-9a-f+.-]{5,}").FullMatch("0abcde"));
1035
+ CHECK(!RE("[0-9a-f+.-]{5,}").FullMatch("0abc"));
1036
+
1037
+ // Complicated RE
1038
+ CHECK(RE("foo|bar|[A-Z]").FullMatch("foo"));
1039
+ CHECK(RE("foo|bar|[A-Z]").FullMatch("bar"));
1040
+ CHECK(RE("foo|bar|[A-Z]").FullMatch("X"));
1041
+ CHECK(!RE("foo|bar|[A-Z]").FullMatch("XY"));
1042
+
1043
+ // Check full-match handling (needs '$' tacked on internally)
1044
+ CHECK(RE("fo|foo").FullMatch("fo"));
1045
+ CHECK(RE("fo|foo").FullMatch("foo"));
1046
+ CHECK(RE("fo|foo$").FullMatch("fo"));
1047
+ CHECK(RE("fo|foo$").FullMatch("foo"));
1048
+ CHECK(RE("foo$").FullMatch("foo"));
1049
+ CHECK(!RE("foo\\$").FullMatch("foo$bar"));
1050
+ CHECK(!RE("fo|bar").FullMatch("fox"));
1051
+
1052
+ // Uncomment the following if we change the handling of '$' to
1053
+ // prevent it from matching a trailing newline
1054
+ if (false) {
1055
+ // Check that we don't get bitten by pcre's special handling of a
1056
+ // '\n' at the end of the string matching '$'
1057
+ CHECK(!RE("foo$").PartialMatch("foo\n"));
1058
+ }
1059
+
1060
+ // Number of args
1061
+ int a[16];
1062
+ CHECK(RE("").FullMatch(""));
1063
+
1064
+ memset(a, 0, sizeof(0));
1065
+ CHECK(RE("(\\d){1}").FullMatch("1",
1066
+ &a[0]));
1067
+ CHECK_EQ(a[0], 1);
1068
+
1069
+ memset(a, 0, sizeof(0));
1070
+ CHECK(RE("(\\d)(\\d)").FullMatch("12",
1071
+ &a[0], &a[1]));
1072
+ CHECK_EQ(a[0], 1);
1073
+ CHECK_EQ(a[1], 2);
1074
+
1075
+ memset(a, 0, sizeof(0));
1076
+ CHECK(RE("(\\d)(\\d)(\\d)").FullMatch("123",
1077
+ &a[0], &a[1], &a[2]));
1078
+ CHECK_EQ(a[0], 1);
1079
+ CHECK_EQ(a[1], 2);
1080
+ CHECK_EQ(a[2], 3);
1081
+
1082
+ memset(a, 0, sizeof(0));
1083
+ CHECK(RE("(\\d)(\\d)(\\d)(\\d)").FullMatch("1234",
1084
+ &a[0], &a[1], &a[2], &a[3]));
1085
+ CHECK_EQ(a[0], 1);
1086
+ CHECK_EQ(a[1], 2);
1087
+ CHECK_EQ(a[2], 3);
1088
+ CHECK_EQ(a[3], 4);
1089
+
1090
+ memset(a, 0, sizeof(0));
1091
+ CHECK(RE("(\\d)(\\d)(\\d)(\\d)(\\d)").FullMatch("12345",
1092
+ &a[0], &a[1], &a[2],
1093
+ &a[3], &a[4]));
1094
+ CHECK_EQ(a[0], 1);
1095
+ CHECK_EQ(a[1], 2);
1096
+ CHECK_EQ(a[2], 3);
1097
+ CHECK_EQ(a[3], 4);
1098
+ CHECK_EQ(a[4], 5);
1099
+
1100
+ memset(a, 0, sizeof(0));
1101
+ CHECK(RE("(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)").FullMatch("123456",
1102
+ &a[0], &a[1], &a[2],
1103
+ &a[3], &a[4], &a[5]));
1104
+ CHECK_EQ(a[0], 1);
1105
+ CHECK_EQ(a[1], 2);
1106
+ CHECK_EQ(a[2], 3);
1107
+ CHECK_EQ(a[3], 4);
1108
+ CHECK_EQ(a[4], 5);
1109
+ CHECK_EQ(a[5], 6);
1110
+
1111
+ memset(a, 0, sizeof(0));
1112
+ CHECK(RE("(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)").FullMatch("1234567",
1113
+ &a[0], &a[1], &a[2], &a[3],
1114
+ &a[4], &a[5], &a[6]));
1115
+ CHECK_EQ(a[0], 1);
1116
+ CHECK_EQ(a[1], 2);
1117
+ CHECK_EQ(a[2], 3);
1118
+ CHECK_EQ(a[3], 4);
1119
+ CHECK_EQ(a[4], 5);
1120
+ CHECK_EQ(a[5], 6);
1121
+ CHECK_EQ(a[6], 7);
1122
+
1123
+ memset(a, 0, sizeof(0));
1124
+ CHECK(RE("(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)"
1125
+ "(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)").FullMatch(
1126
+ "1234567890123456",
1127
+ &a[0], &a[1], &a[2], &a[3],
1128
+ &a[4], &a[5], &a[6], &a[7],
1129
+ &a[8], &a[9], &a[10], &a[11],
1130
+ &a[12], &a[13], &a[14], &a[15]));
1131
+ CHECK_EQ(a[0], 1);
1132
+ CHECK_EQ(a[1], 2);
1133
+ CHECK_EQ(a[2], 3);
1134
+ CHECK_EQ(a[3], 4);
1135
+ CHECK_EQ(a[4], 5);
1136
+ CHECK_EQ(a[5], 6);
1137
+ CHECK_EQ(a[6], 7);
1138
+ CHECK_EQ(a[7], 8);
1139
+ CHECK_EQ(a[8], 9);
1140
+ CHECK_EQ(a[9], 0);
1141
+ CHECK_EQ(a[10], 1);
1142
+ CHECK_EQ(a[11], 2);
1143
+ CHECK_EQ(a[12], 3);
1144
+ CHECK_EQ(a[13], 4);
1145
+ CHECK_EQ(a[14], 5);
1146
+ CHECK_EQ(a[15], 6);
1147
+
1148
+ /***** PartialMatch *****/
1149
+
1150
+ printf("Testing PartialMatch\n");
1151
+
1152
+ CHECK(RE("h.*o").PartialMatch("hello"));
1153
+ CHECK(RE("h.*o").PartialMatch("othello"));
1154
+ CHECK(RE("h.*o").PartialMatch("hello!"));
1155
+ CHECK(RE("((((((((((((((((((((x))))))))))))))))))))").PartialMatch("x"));
1156
+
1157
+ /***** other tests *****/
1158
+
1159
+ RadixTests();
1160
+ TestReplace();
1161
+ TestExtract();
1162
+ TestConsume();
1163
+ TestFindAndConsume();
1164
+ TestQuoteMetaAll();
1165
+ TestMatchNumberPeculiarity();
1166
+
1167
+ // Check the pattern() accessor
1168
+ {
1169
+ const string kPattern = "http://([^/]+)/.*";
1170
+ const RE re(kPattern);
1171
+ CHECK_EQ(kPattern, re.pattern());
1172
+ }
1173
+
1174
+ // Check RE error field.
1175
+ {
1176
+ RE re("foo");
1177
+ CHECK(re.error().empty()); // Must have no error
1178
+ }
1179
+
1180
+ #ifdef SUPPORT_UTF8
1181
+ // Check UTF-8 handling
1182
+ {
1183
+ printf("Testing UTF-8 handling\n");
1184
+
1185
+ // Three Japanese characters (nihongo)
1186
+ const unsigned char utf8_string[] = {
1187
+ 0xe6, 0x97, 0xa5, // 65e5
1188
+ 0xe6, 0x9c, 0xac, // 627c
1189
+ 0xe8, 0xaa, 0x9e, // 8a9e
1190
+ 0
1191
+ };
1192
+ const unsigned char utf8_pattern[] = {
1193
+ '.',
1194
+ 0xe6, 0x9c, 0xac, // 627c
1195
+ '.',
1196
+ 0
1197
+ };
1198
+
1199
+ // Both should match in either mode, bytes or UTF-8
1200
+ RE re_test1(".........");
1201
+ CHECK(re_test1.FullMatch(utf8_string));
1202
+ RE re_test2("...", pcrecpp::UTF8());
1203
+ CHECK(re_test2.FullMatch(utf8_string));
1204
+
1205
+ // Check that '.' matches one byte or UTF-8 character
1206
+ // according to the mode.
1207
+ string ss;
1208
+ RE re_test3("(.)");
1209
+ CHECK(re_test3.PartialMatch(utf8_string, &ss));
1210
+ CHECK_EQ(ss, string("\xe6"));
1211
+ RE re_test4("(.)", pcrecpp::UTF8());
1212
+ CHECK(re_test4.PartialMatch(utf8_string, &ss));
1213
+ CHECK_EQ(ss, string("\xe6\x97\xa5"));
1214
+
1215
+ // Check that string matches itself in either mode
1216
+ RE re_test5(utf8_string);
1217
+ CHECK(re_test5.FullMatch(utf8_string));
1218
+ RE re_test6(utf8_string, pcrecpp::UTF8());
1219
+ CHECK(re_test6.FullMatch(utf8_string));
1220
+
1221
+ // Check that pattern matches string only in UTF8 mode
1222
+ RE re_test7(utf8_pattern);
1223
+ CHECK(!re_test7.FullMatch(utf8_string));
1224
+ RE re_test8(utf8_pattern, pcrecpp::UTF8());
1225
+ CHECK(re_test8.FullMatch(utf8_string));
1226
+ }
1227
+
1228
+ // Check that ungreedy, UTF8 regular expressions don't match when they
1229
+ // oughtn't -- see bug 82246.
1230
+ {
1231
+ // This code always worked.
1232
+ const char* pattern = "\\w+X";
1233
+ const string target = "a aX";
1234
+ RE match_sentence(pattern);
1235
+ RE match_sentence_re(pattern, pcrecpp::UTF8());
1236
+
1237
+ CHECK(!match_sentence.FullMatch(target));
1238
+ CHECK(!match_sentence_re.FullMatch(target));
1239
+ }
1240
+
1241
+ {
1242
+ const char* pattern = "(?U)\\w+X";
1243
+ const string target = "a aX";
1244
+ RE match_sentence(pattern);
1245
+ RE match_sentence_re(pattern, pcrecpp::UTF8());
1246
+
1247
+ CHECK(!match_sentence.FullMatch(target));
1248
+ CHECK(!match_sentence_re.FullMatch(target));
1249
+ }
1250
+ #endif /* def SUPPORT_UTF8 */
1251
+
1252
+ printf("Testing error reporting\n");
1253
+
1254
+ { RE re("a\\1"); CHECK(!re.error().empty()); }
1255
+ {
1256
+ RE re("a[x");
1257
+ CHECK(!re.error().empty());
1258
+ }
1259
+ {
1260
+ RE re("a[z-a]");
1261
+ CHECK(!re.error().empty());
1262
+ }
1263
+ {
1264
+ RE re("a[[:foobar:]]");
1265
+ CHECK(!re.error().empty());
1266
+ }
1267
+ {
1268
+ RE re("a(b");
1269
+ CHECK(!re.error().empty());
1270
+ }
1271
+ {
1272
+ RE re("a\\");
1273
+ CHECK(!re.error().empty());
1274
+ }
1275
+
1276
+ // Test that recursion is stopped
1277
+ TestRecursion();
1278
+
1279
+ // Test Options
1280
+ if (getenv("VERBOSE_TEST") != NULL)
1281
+ VERBOSE_TEST = true;
1282
+ TestOptions();
1283
+
1284
+ // Test the constructors
1285
+ TestConstructors();
1286
+
1287
+ // Done
1288
+ printf("OK\n");
1289
+
1290
+ return 0;
1291
+ }