esruby 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +6 -6
  3. data/bin/esruby +9 -0
  4. data/lib/esruby.rb +8 -0
  5. data/resources/mruby/build_config.rb +0 -1
  6. data/resources/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -1
  7. data/resources/project_template/app/app.rb +2 -0
  8. data/resources/project_template/config.rb +35 -0
  9. data/resources/project_template/www/index.html +17 -0
  10. metadata +6 -377
  11. data/resources/mruby/bin/mirb +0 -0
  12. data/resources/mruby/bin/mrbc +0 -0
  13. data/resources/mruby/bin/mruby +0 -0
  14. data/resources/mruby/bin/mruby-strip +0 -0
  15. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/README.md +0 -82
  16. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrbgem.rake +0 -63
  17. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/regexp_pcre.rb +0 -232
  18. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/string_pcre.rb +0 -333
  19. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/132html +0 -313
  20. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/AUTHORS +0 -45
  21. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CMakeLists.txt +0 -959
  22. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/COPYING +0 -5
  23. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ChangeLog +0 -4981
  24. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CheckMan +0 -67
  25. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CleanTxt +0 -113
  26. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Detrail +0 -35
  27. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/HACKING +0 -473
  28. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/INSTALL +0 -370
  29. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/LICENCE +0 -92
  30. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.am +0 -877
  31. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.in +0 -2917
  32. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NEWS +0 -611
  33. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-AUTOTOOLS-BUILD +0 -639
  34. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-UNIX-USE +0 -7
  35. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/PrepareRelease +0 -253
  36. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/README +0 -935
  37. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunGrepTest +0 -551
  38. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest +0 -1015
  39. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest.bat +0 -616
  40. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/aclocal.m4 +0 -1230
  41. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.0 +0 -21280
  42. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.1 +0 -21280
  43. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/requests +0 -273
  44. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.0 +0 -2421
  45. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.1 +0 -1144
  46. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  47. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindEditline.cmake +0 -17
  48. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  49. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindReadline.cmake +0 -29
  50. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/compile +0 -343
  51. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config-cmake.h.in +0 -54
  52. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.guess +0 -1552
  53. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h +0 -392
  54. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.generic +0 -392
  55. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.in +0 -343
  56. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.sub +0 -1804
  57. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure +0 -21280
  58. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure.ac +0 -1082
  59. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/depcomp +0 -708
  60. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/dftables.c +0 -212
  61. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/index.html +0 -180
  62. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre-config.html +0 -109
  63. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre.html +0 -204
  64. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre16.html +0 -383
  65. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_assign_jit_stack.html +0 -76
  66. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile.html +0 -108
  67. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile2.html +0 -112
  68. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_config.html +0 -91
  69. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_named_substring.html +0 -65
  70. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_substring.html +0 -61
  71. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_dfa_exec.html +0 -128
  72. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_exec.html +0 -110
  73. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_study.html +0 -46
  74. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring.html +0 -46
  75. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring_list.html +0 -46
  76. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_fullinfo.html +0 -108
  77. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_named_substring.html +0 -68
  78. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringnumber.html +0 -57
  79. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringtable_entries.html +0 -60
  80. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring.html +0 -64
  81. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring_list.html +0 -61
  82. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_exec.html +0 -108
  83. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_alloc.html +0 -55
  84. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_free.html +0 -48
  85. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_maketables.html +0 -48
  86. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_pattern_to_host_byte_order.html +0 -58
  87. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_refcount.html +0 -51
  88. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_study.html +0 -68
  89. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_utf16_to_host_byte_order.html +0 -57
  90. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_version.html +0 -46
  91. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreapi.html +0 -2786
  92. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrebuild.html +0 -517
  93. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecallout.html +0 -243
  94. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecompat.html +0 -216
  95. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecpp.html +0 -368
  96. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcredemo.html +0 -426
  97. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcregrep.html +0 -757
  98. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrejit.html +0 -458
  99. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrelimits.html +0 -86
  100. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrematching.html +0 -233
  101. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepartial.html +0 -474
  102. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepattern.html +0 -2953
  103. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreperform.html +0 -195
  104. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreposix.html +0 -292
  105. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreprecompile.html +0 -158
  106. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresample.html +0 -110
  107. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrestack.html +0 -225
  108. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresyntax.html +0 -521
  109. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcretest.html +0 -1082
  110. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreunicode.html +0 -270
  111. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/index.html.src +0 -180
  112. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.1 +0 -92
  113. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.txt +0 -86
  114. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.3 +0 -202
  115. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.txt +0 -9909
  116. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre16.3 +0 -390
  117. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre32.3 +0 -389
  118. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_assign_jit_stack.3 +0 -61
  119. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile.3 +0 -98
  120. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile2.3 +0 -106
  121. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_config.3 +0 -76
  122. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_named_substring.3 +0 -59
  123. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_substring.3 +0 -52
  124. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_dfa_exec.3 +0 -125
  125. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_exec.3 +0 -103
  126. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_study.3 +0 -31
  127. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring.3 +0 -31
  128. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring_list.3 +0 -31
  129. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_fullinfo.3 +0 -95
  130. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_named_substring.3 +0 -62
  131. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringnumber.3 +0 -45
  132. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringtable_entries.3 +0 -48
  133. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring.3 +0 -55
  134. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring_list.3 +0 -49
  135. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_exec.3 +0 -104
  136. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_alloc.3 +0 -45
  137. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_free.3 +0 -35
  138. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_maketables.3 +0 -33
  139. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_pattern_to_host_byte_order.3 +0 -46
  140. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_refcount.3 +0 -36
  141. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_study.3 +0 -56
  142. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf16_to_host_byte_order.3 +0 -46
  143. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf32_to_host_byte_order.3 +0 -46
  144. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_version.3 +0 -31
  145. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreapi.3 +0 -2823
  146. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrebuild.3 +0 -520
  147. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecallout.3 +0 -214
  148. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecompat.3 +0 -185
  149. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecpp.3 +0 -348
  150. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.1 +0 -679
  151. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.txt +0 -740
  152. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrejit.3 +0 -437
  153. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrelimits.3 +0 -67
  154. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrematching.3 +0 -206
  155. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepartial.3 +0 -445
  156. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepattern.3 +0 -2983
  157. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreperform.3 +0 -177
  158. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreposix.3 +0 -270
  159. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreprecompile.3 +0 -151
  160. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresample.3 +0 -99
  161. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrestack.3 +0 -215
  162. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresyntax.3 +0 -496
  163. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.1 +0 -1079
  164. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.txt +0 -1012
  165. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreunicode.3 +0 -255
  166. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/perltest.txt +0 -42
  167. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/install-sh +0 -527
  168. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre.pc.in +0 -12
  169. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre16.pc.in +0 -12
  170. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre32.pc.in +0 -12
  171. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcrecpp.pc.in +0 -12
  172. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcreposix.pc.in +0 -13
  173. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ltmain.sh +0 -9636
  174. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ax_pthread.m4 +0 -309
  175. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/libtool.m4 +0 -7844
  176. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltoptions.m4 +0 -369
  177. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltsugar.m4 +0 -123
  178. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltversion.m4 +0 -23
  179. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/lt~obsolete.m4 +0 -98
  180. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/pcre_visibility.m4 +0 -89
  181. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp.bat +0 -66
  182. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_c.txt +0 -20
  183. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_l.txt +0 -20
  184. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/missing +0 -331
  185. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre-config.in +0 -133
  186. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h +0 -653
  187. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.generic +0 -653
  188. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.in +0 -653
  189. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_byte_order.c +0 -45
  190. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_chartables.c +0 -45
  191. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_compile.c +0 -45
  192. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_config.c +0 -45
  193. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_dfa_exec.c +0 -45
  194. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_exec.c +0 -45
  195. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_fullinfo.c +0 -45
  196. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_get.c +0 -45
  197. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_globals.c +0 -45
  198. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_jit_compile.c +0 -45
  199. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_maketables.c +0 -45
  200. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_newline.c +0 -45
  201. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ord2utf16.c +0 -90
  202. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_printint.c +0 -45
  203. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_refcount.c +0 -45
  204. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_string_utils.c +0 -45
  205. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_study.c +0 -45
  206. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_tables.c +0 -45
  207. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ucd.c +0 -45
  208. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_utf16_utils.c +0 -130
  209. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_valid_utf16.c +0 -156
  210. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_version.c +0 -45
  211. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_xclass.c +0 -45
  212. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_byte_order.c +0 -45
  213. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_chartables.c +0 -45
  214. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_compile.c +0 -45
  215. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_config.c +0 -45
  216. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_dfa_exec.c +0 -45
  217. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_exec.c +0 -45
  218. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_fullinfo.c +0 -45
  219. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_get.c +0 -45
  220. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_globals.c +0 -45
  221. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_jit_compile.c +0 -45
  222. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_maketables.c +0 -45
  223. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_newline.c +0 -45
  224. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ord2utf32.c +0 -82
  225. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_printint.c +0 -45
  226. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_refcount.c +0 -45
  227. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_string_utils.c +0 -45
  228. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_study.c +0 -45
  229. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_tables.c +0 -45
  230. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ucd.c +0 -45
  231. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_utf32_utils.c +0 -141
  232. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_valid_utf32.c +0 -131
  233. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_version.c +0 -45
  234. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_xclass.c +0 -45
  235. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_byte_order.c +0 -318
  236. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c +0 -198
  237. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c.dist +0 -198
  238. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_compile.c +0 -8386
  239. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_config.c +0 -186
  240. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_dfa_exec.c +0 -3582
  241. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_exec.c +0 -7049
  242. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_fullinfo.c +0 -231
  243. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_get.c +0 -662
  244. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_globals.c +0 -84
  245. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_internal.h +0 -2744
  246. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_compile.c +0 -8560
  247. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_test.c +0 -1614
  248. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_maketables.c +0 -151
  249. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_newline.c +0 -210
  250. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ord2utf8.c +0 -94
  251. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_printint.c +0 -766
  252. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_refcount.c +0 -92
  253. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.cc +0 -199
  254. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.h +0 -172
  255. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner_unittest.cc +0 -159
  256. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_string_utils.c +0 -211
  257. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.cc +0 -43
  258. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.h.in +0 -179
  259. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece_unittest.cc +0 -150
  260. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_study.c +0 -1562
  261. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_tables.c +0 -655
  262. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ucd.c +0 -3298
  263. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_valid_utf8.c +0 -312
  264. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_version.c +0 -98
  265. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_xclass.c +0 -198
  266. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.cc +0 -922
  267. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.h +0 -710
  268. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_internal.h +0 -71
  269. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_unittest.cc +0 -1291
  270. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpparg.h.in +0 -174
  271. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcredemo.c +0 -406
  272. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregexp.pas +0 -845
  273. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregrep.c +0 -3180
  274. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.c +0 -419
  275. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.h +0 -146
  276. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcretest.c +0 -5488
  277. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/perltest.pl +0 -237
  278. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfig.h +0 -110
  279. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfigInternal.h +0 -484
  280. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitExecAllocator.c +0 -289
  281. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.c +0 -1766
  282. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.h +0 -985
  283. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_Thumb2.c +0 -2008
  284. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_v5.c +0 -2515
  285. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_32.c +0 -404
  286. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_common.c +0 -1881
  287. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_32.c +0 -269
  288. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_64.c +0 -421
  289. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_common.c +0 -2014
  290. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_32.c +0 -164
  291. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_common.c +0 -1348
  292. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_32.c +0 -547
  293. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_64.c +0 -810
  294. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_common.c +0 -2836
  295. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitUtils.c +0 -332
  296. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepbinary +0 -0
  297. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepfilelist +0 -3
  298. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput +0 -611
  299. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput3 +0 -15
  300. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput8 +0 -11
  301. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputv +0 -4
  302. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputx +0 -43
  303. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greplist +0 -7
  304. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput +0 -707
  305. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput8 +0 -12
  306. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutputN +0 -17
  307. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greppatN4 +0 -2
  308. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16 +0 -0
  309. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-1 +0 -0
  310. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-2 +0 -0
  311. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-1 +0 -0
  312. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-2 +0 -0
  313. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32 +0 -0
  314. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-1 +0 -0
  315. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-2 +0 -0
  316. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-1 +0 -0
  317. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-2 +0 -0
  318. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved8 +0 -0
  319. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput1 +0 -5306
  320. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput10 +0 -1337
  321. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput11 +0 -135
  322. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput12 +0 -89
  323. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput13 +0 -9
  324. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput14 +0 -329
  325. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput15 +0 -430
  326. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput16 +0 -35
  327. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput17 +0 -296
  328. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput18 +0 -296
  329. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput19 +0 -22
  330. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput2 +0 -3813
  331. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput20 +0 -19
  332. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput21 +0 -16
  333. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput22 +0 -13
  334. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput23 +0 -16
  335. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput24 +0 -77
  336. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput25 +0 -32
  337. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput26 +0 -80
  338. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput3 +0 -95
  339. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput4 +0 -624
  340. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput5 +0 -772
  341. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput6 +0 -1319
  342. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput7 +0 -672
  343. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput8 +0 -4801
  344. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput9 +0 -717
  345. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinputEBC +0 -121
  346. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput1 +0 -8798
  347. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput10 +0 -2726
  348. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-16 +0 -713
  349. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-32 +0 -713
  350. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-8 +0 -713
  351. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput12 +0 -181
  352. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput13 +0 -21
  353. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput14 +0 -476
  354. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput15 +0 -1269
  355. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput16 +0 -121
  356. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput17 +0 -505
  357. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-16 +0 -1022
  358. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-32 +0 -1019
  359. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput19 +0 -88
  360. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput2 +0 -12484
  361. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput20 +0 -27
  362. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-16 +0 -90
  363. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-32 +0 -90
  364. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-16 +0 -71
  365. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-32 +0 -71
  366. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput23 +0 -42
  367. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput24 +0 -145
  368. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput25 +0 -79
  369. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput26 +0 -148
  370. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput3 +0 -169
  371. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput4 +0 -1094
  372. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput5 +0 -1849
  373. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput6 +0 -2137
  374. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput7 +0 -1473
  375. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput8 +0 -8019
  376. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput9 +0 -1371
  377. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutputEBC +0 -182
  378. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestinput3 +0 -91
  379. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestoutput3 +0 -166
  380. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ucp.h +0 -197
  381. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/run_test.rb +0 -23
  382. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/src/mruby_regexp_pcre.c +0 -364
  383. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/matchdata.rb +0 -94
  384. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/regexp.rb +0 -264
  385. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/string.rb +0 -201
@@ -1,922 +0,0 @@
1
- // Copyright (c) 2010, Google Inc.
2
- // All rights reserved.
3
- //
4
- // Redistribution and use in source and binary forms, with or without
5
- // modification, are permitted provided that the following conditions are
6
- // met:
7
- //
8
- // * Redistributions of source code must retain the above copyright
9
- // notice, this list of conditions and the following disclaimer.
10
- // * Redistributions in binary form must reproduce the above
11
- // copyright notice, this list of conditions and the following disclaimer
12
- // in the documentation and/or other materials provided with the
13
- // distribution.
14
- // * Neither the name of Google Inc. nor the names of its
15
- // contributors may be used to endorse or promote products derived from
16
- // this software without specific prior written permission.
17
- //
18
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- //
30
- // Author: Sanjay Ghemawat
31
-
32
- #ifdef HAVE_CONFIG_H
33
- #include "config.h"
34
- #endif
35
-
36
- #include <stdlib.h>
37
- #include <stdio.h>
38
- #include <ctype.h>
39
- #include <limits.h> /* for SHRT_MIN, USHRT_MAX, etc */
40
- #include <string.h> /* for memcpy */
41
- #include <assert.h>
42
- #include <errno.h>
43
- #include <string>
44
- #include <algorithm>
45
-
46
- #include "pcrecpp_internal.h"
47
- #include "pcre.h"
48
- #include "pcrecpp.h"
49
- #include "pcre_stringpiece.h"
50
-
51
-
52
- namespace pcrecpp {
53
-
54
- // Maximum number of args we can set
55
- static const int kMaxArgs = 16;
56
- static const int kVecSize = (1 + kMaxArgs) * 3; // results + PCRE workspace
57
-
58
- // Special object that stands-in for no argument
59
- Arg RE::no_arg((void*)NULL);
60
-
61
- // This is for ABI compatibility with old versions of pcre (pre-7.6),
62
- // which defined a global no_arg variable instead of putting it in the
63
- // RE class. This works on GCC >= 3, at least. It definitely works
64
- // for ELF, but may not for other object formats (Mach-O, for
65
- // instance, does not support aliases.) We could probably have a more
66
- // inclusive test if we ever needed it. (Note that not only the
67
- // __attribute__ syntax, but also __USER_LABEL_PREFIX__, are
68
- // gnu-specific.)
69
- #if defined(__GNUC__) && __GNUC__ >= 3 && defined(__ELF__)
70
- # define ULP_AS_STRING(x) ULP_AS_STRING_INTERNAL(x)
71
- # define ULP_AS_STRING_INTERNAL(x) #x
72
- # define USER_LABEL_PREFIX_STR ULP_AS_STRING(__USER_LABEL_PREFIX__)
73
- extern Arg no_arg
74
- __attribute__((alias(USER_LABEL_PREFIX_STR "_ZN7pcrecpp2RE6no_argE")));
75
- #endif
76
-
77
- // If a regular expression has no error, its error_ field points here
78
- static const string empty_string;
79
-
80
- // If the user doesn't ask for any options, we just use this one
81
- static RE_Options default_options;
82
-
83
- void RE::Init(const string& pat, const RE_Options* options) {
84
- pattern_ = pat;
85
- if (options == NULL) {
86
- options_ = default_options;
87
- } else {
88
- options_ = *options;
89
- }
90
- error_ = &empty_string;
91
- re_full_ = NULL;
92
- re_partial_ = NULL;
93
-
94
- re_partial_ = Compile(UNANCHORED);
95
- if (re_partial_ != NULL) {
96
- re_full_ = Compile(ANCHOR_BOTH);
97
- }
98
- }
99
-
100
- void RE::Cleanup() {
101
- if (re_full_ != NULL) (*pcre_free)(re_full_);
102
- if (re_partial_ != NULL) (*pcre_free)(re_partial_);
103
- if (error_ != &empty_string) delete error_;
104
- }
105
-
106
-
107
- RE::~RE() {
108
- Cleanup();
109
- }
110
-
111
-
112
- pcre* RE::Compile(Anchor anchor) {
113
- // First, convert RE_Options into pcre options
114
- int pcre_options = 0;
115
- pcre_options = options_.all_options();
116
-
117
- // Special treatment for anchoring. This is needed because at
118
- // runtime pcre only provides an option for anchoring at the
119
- // beginning of a string (unless you use offset).
120
- //
121
- // There are three types of anchoring we want:
122
- // UNANCHORED Compile the original pattern, and use
123
- // a pcre unanchored match.
124
- // ANCHOR_START Compile the original pattern, and use
125
- // a pcre anchored match.
126
- // ANCHOR_BOTH Tack a "\z" to the end of the original pattern
127
- // and use a pcre anchored match.
128
-
129
- const char* compile_error;
130
- int eoffset;
131
- pcre* re;
132
- if (anchor != ANCHOR_BOTH) {
133
- re = pcre_compile(pattern_.c_str(), pcre_options,
134
- &compile_error, &eoffset, NULL);
135
- } else {
136
- // Tack a '\z' at the end of RE. Parenthesize it first so that
137
- // the '\z' applies to all top-level alternatives in the regexp.
138
- string wrapped = "(?:"; // A non-counting grouping operator
139
- wrapped += pattern_;
140
- wrapped += ")\\z";
141
- re = pcre_compile(wrapped.c_str(), pcre_options,
142
- &compile_error, &eoffset, NULL);
143
- }
144
- if (re == NULL) {
145
- if (error_ == &empty_string) error_ = new string(compile_error);
146
- }
147
- return re;
148
- }
149
-
150
- /***** Matching interfaces *****/
151
-
152
- bool RE::FullMatch(const StringPiece& text,
153
- const Arg& ptr1,
154
- const Arg& ptr2,
155
- const Arg& ptr3,
156
- const Arg& ptr4,
157
- const Arg& ptr5,
158
- const Arg& ptr6,
159
- const Arg& ptr7,
160
- const Arg& ptr8,
161
- const Arg& ptr9,
162
- const Arg& ptr10,
163
- const Arg& ptr11,
164
- const Arg& ptr12,
165
- const Arg& ptr13,
166
- const Arg& ptr14,
167
- const Arg& ptr15,
168
- const Arg& ptr16) const {
169
- const Arg* args[kMaxArgs];
170
- int n = 0;
171
- if (&ptr1 == &no_arg) goto done; args[n++] = &ptr1;
172
- if (&ptr2 == &no_arg) goto done; args[n++] = &ptr2;
173
- if (&ptr3 == &no_arg) goto done; args[n++] = &ptr3;
174
- if (&ptr4 == &no_arg) goto done; args[n++] = &ptr4;
175
- if (&ptr5 == &no_arg) goto done; args[n++] = &ptr5;
176
- if (&ptr6 == &no_arg) goto done; args[n++] = &ptr6;
177
- if (&ptr7 == &no_arg) goto done; args[n++] = &ptr7;
178
- if (&ptr8 == &no_arg) goto done; args[n++] = &ptr8;
179
- if (&ptr9 == &no_arg) goto done; args[n++] = &ptr9;
180
- if (&ptr10 == &no_arg) goto done; args[n++] = &ptr10;
181
- if (&ptr11 == &no_arg) goto done; args[n++] = &ptr11;
182
- if (&ptr12 == &no_arg) goto done; args[n++] = &ptr12;
183
- if (&ptr13 == &no_arg) goto done; args[n++] = &ptr13;
184
- if (&ptr14 == &no_arg) goto done; args[n++] = &ptr14;
185
- if (&ptr15 == &no_arg) goto done; args[n++] = &ptr15;
186
- if (&ptr16 == &no_arg) goto done; args[n++] = &ptr16;
187
- done:
188
-
189
- int consumed;
190
- int vec[kVecSize];
191
- return DoMatchImpl(text, ANCHOR_BOTH, &consumed, args, n, vec, kVecSize);
192
- }
193
-
194
- bool RE::PartialMatch(const StringPiece& text,
195
- const Arg& ptr1,
196
- const Arg& ptr2,
197
- const Arg& ptr3,
198
- const Arg& ptr4,
199
- const Arg& ptr5,
200
- const Arg& ptr6,
201
- const Arg& ptr7,
202
- const Arg& ptr8,
203
- const Arg& ptr9,
204
- const Arg& ptr10,
205
- const Arg& ptr11,
206
- const Arg& ptr12,
207
- const Arg& ptr13,
208
- const Arg& ptr14,
209
- const Arg& ptr15,
210
- const Arg& ptr16) const {
211
- const Arg* args[kMaxArgs];
212
- int n = 0;
213
- if (&ptr1 == &no_arg) goto done; args[n++] = &ptr1;
214
- if (&ptr2 == &no_arg) goto done; args[n++] = &ptr2;
215
- if (&ptr3 == &no_arg) goto done; args[n++] = &ptr3;
216
- if (&ptr4 == &no_arg) goto done; args[n++] = &ptr4;
217
- if (&ptr5 == &no_arg) goto done; args[n++] = &ptr5;
218
- if (&ptr6 == &no_arg) goto done; args[n++] = &ptr6;
219
- if (&ptr7 == &no_arg) goto done; args[n++] = &ptr7;
220
- if (&ptr8 == &no_arg) goto done; args[n++] = &ptr8;
221
- if (&ptr9 == &no_arg) goto done; args[n++] = &ptr9;
222
- if (&ptr10 == &no_arg) goto done; args[n++] = &ptr10;
223
- if (&ptr11 == &no_arg) goto done; args[n++] = &ptr11;
224
- if (&ptr12 == &no_arg) goto done; args[n++] = &ptr12;
225
- if (&ptr13 == &no_arg) goto done; args[n++] = &ptr13;
226
- if (&ptr14 == &no_arg) goto done; args[n++] = &ptr14;
227
- if (&ptr15 == &no_arg) goto done; args[n++] = &ptr15;
228
- if (&ptr16 == &no_arg) goto done; args[n++] = &ptr16;
229
- done:
230
-
231
- int consumed;
232
- int vec[kVecSize];
233
- return DoMatchImpl(text, UNANCHORED, &consumed, args, n, vec, kVecSize);
234
- }
235
-
236
- bool RE::Consume(StringPiece* input,
237
- const Arg& ptr1,
238
- const Arg& ptr2,
239
- const Arg& ptr3,
240
- const Arg& ptr4,
241
- const Arg& ptr5,
242
- const Arg& ptr6,
243
- const Arg& ptr7,
244
- const Arg& ptr8,
245
- const Arg& ptr9,
246
- const Arg& ptr10,
247
- const Arg& ptr11,
248
- const Arg& ptr12,
249
- const Arg& ptr13,
250
- const Arg& ptr14,
251
- const Arg& ptr15,
252
- const Arg& ptr16) const {
253
- const Arg* args[kMaxArgs];
254
- int n = 0;
255
- if (&ptr1 == &no_arg) goto done; args[n++] = &ptr1;
256
- if (&ptr2 == &no_arg) goto done; args[n++] = &ptr2;
257
- if (&ptr3 == &no_arg) goto done; args[n++] = &ptr3;
258
- if (&ptr4 == &no_arg) goto done; args[n++] = &ptr4;
259
- if (&ptr5 == &no_arg) goto done; args[n++] = &ptr5;
260
- if (&ptr6 == &no_arg) goto done; args[n++] = &ptr6;
261
- if (&ptr7 == &no_arg) goto done; args[n++] = &ptr7;
262
- if (&ptr8 == &no_arg) goto done; args[n++] = &ptr8;
263
- if (&ptr9 == &no_arg) goto done; args[n++] = &ptr9;
264
- if (&ptr10 == &no_arg) goto done; args[n++] = &ptr10;
265
- if (&ptr11 == &no_arg) goto done; args[n++] = &ptr11;
266
- if (&ptr12 == &no_arg) goto done; args[n++] = &ptr12;
267
- if (&ptr13 == &no_arg) goto done; args[n++] = &ptr13;
268
- if (&ptr14 == &no_arg) goto done; args[n++] = &ptr14;
269
- if (&ptr15 == &no_arg) goto done; args[n++] = &ptr15;
270
- if (&ptr16 == &no_arg) goto done; args[n++] = &ptr16;
271
- done:
272
-
273
- int consumed;
274
- int vec[kVecSize];
275
- if (DoMatchImpl(*input, ANCHOR_START, &consumed,
276
- args, n, vec, kVecSize)) {
277
- input->remove_prefix(consumed);
278
- return true;
279
- } else {
280
- return false;
281
- }
282
- }
283
-
284
- bool RE::FindAndConsume(StringPiece* input,
285
- const Arg& ptr1,
286
- const Arg& ptr2,
287
- const Arg& ptr3,
288
- const Arg& ptr4,
289
- const Arg& ptr5,
290
- const Arg& ptr6,
291
- const Arg& ptr7,
292
- const Arg& ptr8,
293
- const Arg& ptr9,
294
- const Arg& ptr10,
295
- const Arg& ptr11,
296
- const Arg& ptr12,
297
- const Arg& ptr13,
298
- const Arg& ptr14,
299
- const Arg& ptr15,
300
- const Arg& ptr16) const {
301
- const Arg* args[kMaxArgs];
302
- int n = 0;
303
- if (&ptr1 == &no_arg) goto done; args[n++] = &ptr1;
304
- if (&ptr2 == &no_arg) goto done; args[n++] = &ptr2;
305
- if (&ptr3 == &no_arg) goto done; args[n++] = &ptr3;
306
- if (&ptr4 == &no_arg) goto done; args[n++] = &ptr4;
307
- if (&ptr5 == &no_arg) goto done; args[n++] = &ptr5;
308
- if (&ptr6 == &no_arg) goto done; args[n++] = &ptr6;
309
- if (&ptr7 == &no_arg) goto done; args[n++] = &ptr7;
310
- if (&ptr8 == &no_arg) goto done; args[n++] = &ptr8;
311
- if (&ptr9 == &no_arg) goto done; args[n++] = &ptr9;
312
- if (&ptr10 == &no_arg) goto done; args[n++] = &ptr10;
313
- if (&ptr11 == &no_arg) goto done; args[n++] = &ptr11;
314
- if (&ptr12 == &no_arg) goto done; args[n++] = &ptr12;
315
- if (&ptr13 == &no_arg) goto done; args[n++] = &ptr13;
316
- if (&ptr14 == &no_arg) goto done; args[n++] = &ptr14;
317
- if (&ptr15 == &no_arg) goto done; args[n++] = &ptr15;
318
- if (&ptr16 == &no_arg) goto done; args[n++] = &ptr16;
319
- done:
320
-
321
- int consumed;
322
- int vec[kVecSize];
323
- if (DoMatchImpl(*input, UNANCHORED, &consumed,
324
- args, n, vec, kVecSize)) {
325
- input->remove_prefix(consumed);
326
- return true;
327
- } else {
328
- return false;
329
- }
330
- }
331
-
332
- bool RE::Replace(const StringPiece& rewrite,
333
- string *str) const {
334
- int vec[kVecSize];
335
- int matches = TryMatch(*str, 0, UNANCHORED, true, vec, kVecSize);
336
- if (matches == 0)
337
- return false;
338
-
339
- string s;
340
- if (!Rewrite(&s, rewrite, *str, vec, matches))
341
- return false;
342
-
343
- assert(vec[0] >= 0);
344
- assert(vec[1] >= 0);
345
- str->replace(vec[0], vec[1] - vec[0], s);
346
- return true;
347
- }
348
-
349
- // Returns PCRE_NEWLINE_CRLF, PCRE_NEWLINE_CR, or PCRE_NEWLINE_LF.
350
- // Note that PCRE_NEWLINE_CRLF is defined to be P_N_CR | P_N_LF.
351
- // Modified by PH to add PCRE_NEWLINE_ANY and PCRE_NEWLINE_ANYCRLF.
352
-
353
- static int NewlineMode(int pcre_options) {
354
- // TODO: if we can make it threadsafe, cache this var
355
- int newline_mode = 0;
356
- /* if (newline_mode) return newline_mode; */ // do this once it's cached
357
- if (pcre_options & (PCRE_NEWLINE_CRLF|PCRE_NEWLINE_CR|PCRE_NEWLINE_LF|
358
- PCRE_NEWLINE_ANY|PCRE_NEWLINE_ANYCRLF)) {
359
- newline_mode = (pcre_options &
360
- (PCRE_NEWLINE_CRLF|PCRE_NEWLINE_CR|PCRE_NEWLINE_LF|
361
- PCRE_NEWLINE_ANY|PCRE_NEWLINE_ANYCRLF));
362
- } else {
363
- int newline;
364
- pcre_config(PCRE_CONFIG_NEWLINE, &newline);
365
- if (newline == 10)
366
- newline_mode = PCRE_NEWLINE_LF;
367
- else if (newline == 13)
368
- newline_mode = PCRE_NEWLINE_CR;
369
- else if (newline == 3338)
370
- newline_mode = PCRE_NEWLINE_CRLF;
371
- else if (newline == -1)
372
- newline_mode = PCRE_NEWLINE_ANY;
373
- else if (newline == -2)
374
- newline_mode = PCRE_NEWLINE_ANYCRLF;
375
- else
376
- assert(NULL == "Unexpected return value from pcre_config(NEWLINE)");
377
- }
378
- return newline_mode;
379
- }
380
-
381
- int RE::GlobalReplace(const StringPiece& rewrite,
382
- string *str) const {
383
- int count = 0;
384
- int vec[kVecSize];
385
- string out;
386
- int start = 0;
387
- bool last_match_was_empty_string = false;
388
-
389
- while (start <= static_cast<int>(str->length())) {
390
- // If the previous match was for the empty string, we shouldn't
391
- // just match again: we'll match in the same way and get an
392
- // infinite loop. Instead, we do the match in a special way:
393
- // anchored -- to force another try at the same position --
394
- // and with a flag saying that this time, ignore empty matches.
395
- // If this special match returns, that means there's a non-empty
396
- // match at this position as well, and we can continue. If not,
397
- // we do what perl does, and just advance by one.
398
- // Notice that perl prints '@@@' for this;
399
- // perl -le '$_ = "aa"; s/b*|aa/@/g; print'
400
- int matches;
401
- if (last_match_was_empty_string) {
402
- matches = TryMatch(*str, start, ANCHOR_START, false, vec, kVecSize);
403
- if (matches <= 0) {
404
- int matchend = start + 1; // advance one character.
405
- // If the current char is CR and we're in CRLF mode, skip LF too.
406
- // Note it's better to call pcre_fullinfo() than to examine
407
- // all_options(), since options_ could have changed bewteen
408
- // compile-time and now, but this is simpler and safe enough.
409
- // Modified by PH to add ANY and ANYCRLF.
410
- if (matchend < static_cast<int>(str->length()) &&
411
- (*str)[start] == '\r' && (*str)[matchend] == '\n' &&
412
- (NewlineMode(options_.all_options()) == PCRE_NEWLINE_CRLF ||
413
- NewlineMode(options_.all_options()) == PCRE_NEWLINE_ANY ||
414
- NewlineMode(options_.all_options()) == PCRE_NEWLINE_ANYCRLF)) {
415
- matchend++;
416
- }
417
- // We also need to advance more than one char if we're in utf8 mode.
418
- #ifdef SUPPORT_UTF8
419
- if (options_.utf8()) {
420
- while (matchend < static_cast<int>(str->length()) &&
421
- ((*str)[matchend] & 0xc0) == 0x80)
422
- matchend++;
423
- }
424
- #endif
425
- if (start < static_cast<int>(str->length()))
426
- out.append(*str, start, matchend - start);
427
- start = matchend;
428
- last_match_was_empty_string = false;
429
- continue;
430
- }
431
- } else {
432
- matches = TryMatch(*str, start, UNANCHORED, true, vec, kVecSize);
433
- if (matches <= 0)
434
- break;
435
- }
436
- int matchstart = vec[0], matchend = vec[1];
437
- assert(matchstart >= start);
438
- assert(matchend >= matchstart);
439
- out.append(*str, start, matchstart - start);
440
- Rewrite(&out, rewrite, *str, vec, matches);
441
- start = matchend;
442
- count++;
443
- last_match_was_empty_string = (matchstart == matchend);
444
- }
445
-
446
- if (count == 0)
447
- return 0;
448
-
449
- if (start < static_cast<int>(str->length()))
450
- out.append(*str, start, str->length() - start);
451
- swap(out, *str);
452
- return count;
453
- }
454
-
455
- bool RE::Extract(const StringPiece& rewrite,
456
- const StringPiece& text,
457
- string *out) const {
458
- int vec[kVecSize];
459
- int matches = TryMatch(text, 0, UNANCHORED, true, vec, kVecSize);
460
- if (matches == 0)
461
- return false;
462
- out->erase();
463
- return Rewrite(out, rewrite, text, vec, matches);
464
- }
465
-
466
- /*static*/ string RE::QuoteMeta(const StringPiece& unquoted) {
467
- string result;
468
-
469
- // Escape any ascii character not in [A-Za-z_0-9].
470
- //
471
- // Note that it's legal to escape a character even if it has no
472
- // special meaning in a regular expression -- so this function does
473
- // that. (This also makes it identical to the perl function of the
474
- // same name; see `perldoc -f quotemeta`.) The one exception is
475
- // escaping NUL: rather than doing backslash + NUL, like perl does,
476
- // we do '\0', because pcre itself doesn't take embedded NUL chars.
477
- for (int ii = 0; ii < unquoted.size(); ++ii) {
478
- // Note that using 'isalnum' here raises the benchmark time from
479
- // 32ns to 58ns:
480
- if (unquoted[ii] == '\0') {
481
- result += "\\0";
482
- } else if ((unquoted[ii] < 'a' || unquoted[ii] > 'z') &&
483
- (unquoted[ii] < 'A' || unquoted[ii] > 'Z') &&
484
- (unquoted[ii] < '0' || unquoted[ii] > '9') &&
485
- unquoted[ii] != '_' &&
486
- // If this is the part of a UTF8 or Latin1 character, we need
487
- // to copy this byte without escaping. Experimentally this is
488
- // what works correctly with the regexp library.
489
- !(unquoted[ii] & 128)) {
490
- result += '\\';
491
- result += unquoted[ii];
492
- } else {
493
- result += unquoted[ii];
494
- }
495
- }
496
-
497
- return result;
498
- }
499
-
500
- /***** Actual matching and rewriting code *****/
501
-
502
- int RE::TryMatch(const StringPiece& text,
503
- int startpos,
504
- Anchor anchor,
505
- bool empty_ok,
506
- int *vec,
507
- int vecsize) const {
508
- pcre* re = (anchor == ANCHOR_BOTH) ? re_full_ : re_partial_;
509
- if (re == NULL) {
510
- //fprintf(stderr, "Matching against invalid re: %s\n", error_->c_str());
511
- return 0;
512
- }
513
-
514
- pcre_extra extra = { 0, 0, 0, 0, 0, 0 };
515
- if (options_.match_limit() > 0) {
516
- extra.flags |= PCRE_EXTRA_MATCH_LIMIT;
517
- extra.match_limit = options_.match_limit();
518
- }
519
- if (options_.match_limit_recursion() > 0) {
520
- extra.flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
521
- extra.match_limit_recursion = options_.match_limit_recursion();
522
- }
523
-
524
- // int options = 0;
525
- // Changed by PH as a result of bugzilla #1288
526
- int options = (options_.all_options() & PCRE_NO_UTF8_CHECK);
527
-
528
- if (anchor != UNANCHORED)
529
- options |= PCRE_ANCHORED;
530
- if (!empty_ok)
531
- options |= PCRE_NOTEMPTY;
532
-
533
- int rc = pcre_exec(re, // The regular expression object
534
- &extra,
535
- (text.data() == NULL) ? "" : text.data(),
536
- text.size(),
537
- startpos,
538
- options,
539
- vec,
540
- vecsize);
541
-
542
- // Handle errors
543
- if (rc == PCRE_ERROR_NOMATCH) {
544
- return 0;
545
- } else if (rc < 0) {
546
- //fprintf(stderr, "Unexpected return code: %d when matching '%s'\n",
547
- // re, pattern_.c_str());
548
- return 0;
549
- } else if (rc == 0) {
550
- // pcre_exec() returns 0 as a special case when the number of
551
- // capturing subpatterns exceeds the size of the vector.
552
- // When this happens, there is a match and the output vector
553
- // is filled, but we miss out on the positions of the extra subpatterns.
554
- rc = vecsize / 2;
555
- }
556
-
557
- return rc;
558
- }
559
-
560
- bool RE::DoMatchImpl(const StringPiece& text,
561
- Anchor anchor,
562
- int* consumed,
563
- const Arg* const* args,
564
- int n,
565
- int* vec,
566
- int vecsize) const {
567
- assert((1 + n) * 3 <= vecsize); // results + PCRE workspace
568
- int matches = TryMatch(text, 0, anchor, true, vec, vecsize);
569
- assert(matches >= 0); // TryMatch never returns negatives
570
- if (matches == 0)
571
- return false;
572
-
573
- *consumed = vec[1];
574
-
575
- if (n == 0 || args == NULL) {
576
- // We are not interested in results
577
- return true;
578
- }
579
-
580
- if (NumberOfCapturingGroups() < n) {
581
- // RE has fewer capturing groups than number of arg pointers passed in
582
- return false;
583
- }
584
-
585
- // If we got here, we must have matched the whole pattern.
586
- // We do not need (can not do) any more checks on the value of 'matches' here
587
- // -- see the comment for TryMatch.
588
- for (int i = 0; i < n; i++) {
589
- const int start = vec[2*(i+1)];
590
- const int limit = vec[2*(i+1)+1];
591
- if (!args[i]->Parse(text.data() + start, limit-start)) {
592
- // TODO: Should we indicate what the error was?
593
- return false;
594
- }
595
- }
596
-
597
- return true;
598
- }
599
-
600
- bool RE::DoMatch(const StringPiece& text,
601
- Anchor anchor,
602
- int* consumed,
603
- const Arg* const args[],
604
- int n) const {
605
- assert(n >= 0);
606
- size_t const vecsize = (1 + n) * 3; // results + PCRE workspace
607
- // (as for kVecSize)
608
- int space[21]; // use stack allocation for small vecsize (common case)
609
- int* vec = vecsize <= 21 ? space : new int[vecsize];
610
- bool retval = DoMatchImpl(text, anchor, consumed, args, n, vec, (int)vecsize);
611
- if (vec != space) delete [] vec;
612
- return retval;
613
- }
614
-
615
- bool RE::Rewrite(string *out, const StringPiece &rewrite,
616
- const StringPiece &text, int *vec, int veclen) const {
617
- for (const char *s = rewrite.data(), *end = s + rewrite.size();
618
- s < end; s++) {
619
- int c = *s;
620
- if (c == '\\') {
621
- c = *++s;
622
- if (isdigit(c)) {
623
- int n = (c - '0');
624
- if (n >= veclen) {
625
- //fprintf(stderr, requested group %d in regexp %.*s\n",
626
- // n, rewrite.size(), rewrite.data());
627
- return false;
628
- }
629
- int start = vec[2 * n];
630
- if (start >= 0)
631
- out->append(text.data() + start, vec[2 * n + 1] - start);
632
- } else if (c == '\\') {
633
- *out += '\\';
634
- } else {
635
- //fprintf(stderr, "invalid rewrite pattern: %.*s\n",
636
- // rewrite.size(), rewrite.data());
637
- return false;
638
- }
639
- } else {
640
- *out += c;
641
- }
642
- }
643
- return true;
644
- }
645
-
646
- // Return the number of capturing subpatterns, or -1 if the
647
- // regexp wasn't valid on construction.
648
- int RE::NumberOfCapturingGroups() const {
649
- if (re_partial_ == NULL) return -1;
650
-
651
- int result;
652
- int pcre_retval = pcre_fullinfo(re_partial_, // The regular expression object
653
- NULL, // We did not study the pattern
654
- PCRE_INFO_CAPTURECOUNT,
655
- &result);
656
- assert(pcre_retval == 0);
657
- return result;
658
- }
659
-
660
- /***** Parsers for various types *****/
661
-
662
- bool Arg::parse_null(const char* str, int n, void* dest) {
663
- // We fail if somebody asked us to store into a non-NULL void* pointer
664
- return (dest == NULL);
665
- }
666
-
667
- bool Arg::parse_string(const char* str, int n, void* dest) {
668
- if (dest == NULL) return true;
669
- reinterpret_cast<string*>(dest)->assign(str, n);
670
- return true;
671
- }
672
-
673
- bool Arg::parse_stringpiece(const char* str, int n, void* dest) {
674
- if (dest == NULL) return true;
675
- reinterpret_cast<StringPiece*>(dest)->set(str, n);
676
- return true;
677
- }
678
-
679
- bool Arg::parse_char(const char* str, int n, void* dest) {
680
- if (n != 1) return false;
681
- if (dest == NULL) return true;
682
- *(reinterpret_cast<char*>(dest)) = str[0];
683
- return true;
684
- }
685
-
686
- bool Arg::parse_uchar(const char* str, int n, void* dest) {
687
- if (n != 1) return false;
688
- if (dest == NULL) return true;
689
- *(reinterpret_cast<unsigned char*>(dest)) = str[0];
690
- return true;
691
- }
692
-
693
- // Largest number spec that we are willing to parse
694
- static const int kMaxNumberLength = 32;
695
-
696
- // REQUIRES "buf" must have length at least kMaxNumberLength+1
697
- // REQUIRES "n > 0"
698
- // Copies "str" into "buf" and null-terminates if necessary.
699
- // Returns one of:
700
- // a. "str" if no termination is needed
701
- // b. "buf" if the string was copied and null-terminated
702
- // c. "" if the input was invalid and has no hope of being parsed
703
- static const char* TerminateNumber(char* buf, const char* str, int n) {
704
- if ((n > 0) && isspace(*str)) {
705
- // We are less forgiving than the strtoxxx() routines and do not
706
- // allow leading spaces.
707
- return "";
708
- }
709
-
710
- // See if the character right after the input text may potentially
711
- // look like a digit.
712
- if (isdigit(str[n]) ||
713
- ((str[n] >= 'a') && (str[n] <= 'f')) ||
714
- ((str[n] >= 'A') && (str[n] <= 'F'))) {
715
- if (n > kMaxNumberLength) return ""; // Input too big to be a valid number
716
- memcpy(buf, str, n);
717
- buf[n] = '\0';
718
- return buf;
719
- } else {
720
- // We can parse right out of the supplied string, so return it.
721
- return str;
722
- }
723
- }
724
-
725
- bool Arg::parse_long_radix(const char* str,
726
- int n,
727
- void* dest,
728
- int radix) {
729
- if (n == 0) return false;
730
- char buf[kMaxNumberLength+1];
731
- str = TerminateNumber(buf, str, n);
732
- char* end;
733
- errno = 0;
734
- long r = strtol(str, &end, radix);
735
- if (end != str + n) return false; // Leftover junk
736
- if (errno) return false;
737
- if (dest == NULL) return true;
738
- *(reinterpret_cast<long*>(dest)) = r;
739
- return true;
740
- }
741
-
742
- bool Arg::parse_ulong_radix(const char* str,
743
- int n,
744
- void* dest,
745
- int radix) {
746
- if (n == 0) return false;
747
- char buf[kMaxNumberLength+1];
748
- str = TerminateNumber(buf, str, n);
749
- if (str[0] == '-') return false; // strtoul() on a negative number?!
750
- char* end;
751
- errno = 0;
752
- unsigned long r = strtoul(str, &end, radix);
753
- if (end != str + n) return false; // Leftover junk
754
- if (errno) return false;
755
- if (dest == NULL) return true;
756
- *(reinterpret_cast<unsigned long*>(dest)) = r;
757
- return true;
758
- }
759
-
760
- bool Arg::parse_short_radix(const char* str,
761
- int n,
762
- void* dest,
763
- int radix) {
764
- long r;
765
- if (!parse_long_radix(str, n, &r, radix)) return false; // Could not parse
766
- if (r < SHRT_MIN || r > SHRT_MAX) return false; // Out of range
767
- if (dest == NULL) return true;
768
- *(reinterpret_cast<short*>(dest)) = static_cast<short>(r);
769
- return true;
770
- }
771
-
772
- bool Arg::parse_ushort_radix(const char* str,
773
- int n,
774
- void* dest,
775
- int radix) {
776
- unsigned long r;
777
- if (!parse_ulong_radix(str, n, &r, radix)) return false; // Could not parse
778
- if (r > USHRT_MAX) return false; // Out of range
779
- if (dest == NULL) return true;
780
- *(reinterpret_cast<unsigned short*>(dest)) = static_cast<unsigned short>(r);
781
- return true;
782
- }
783
-
784
- bool Arg::parse_int_radix(const char* str,
785
- int n,
786
- void* dest,
787
- int radix) {
788
- long r;
789
- if (!parse_long_radix(str, n, &r, radix)) return false; // Could not parse
790
- if (r < INT_MIN || r > INT_MAX) return false; // Out of range
791
- if (dest == NULL) return true;
792
- *(reinterpret_cast<int*>(dest)) = r;
793
- return true;
794
- }
795
-
796
- bool Arg::parse_uint_radix(const char* str,
797
- int n,
798
- void* dest,
799
- int radix) {
800
- unsigned long r;
801
- if (!parse_ulong_radix(str, n, &r, radix)) return false; // Could not parse
802
- if (r > UINT_MAX) return false; // Out of range
803
- if (dest == NULL) return true;
804
- *(reinterpret_cast<unsigned int*>(dest)) = r;
805
- return true;
806
- }
807
-
808
- bool Arg::parse_longlong_radix(const char* str,
809
- int n,
810
- void* dest,
811
- int radix) {
812
- #ifndef HAVE_LONG_LONG
813
- return false;
814
- #else
815
- if (n == 0) return false;
816
- char buf[kMaxNumberLength+1];
817
- str = TerminateNumber(buf, str, n);
818
- char* end;
819
- errno = 0;
820
- #if defined HAVE_STRTOQ
821
- long long r = strtoq(str, &end, radix);
822
- #elif defined HAVE_STRTOLL
823
- long long r = strtoll(str, &end, radix);
824
- #elif defined HAVE__STRTOI64
825
- long long r = _strtoi64(str, &end, radix);
826
- #elif defined HAVE_STRTOIMAX
827
- long long r = strtoimax(str, &end, radix);
828
- #else
829
- #error parse_longlong_radix: cannot convert input to a long-long
830
- #endif
831
- if (end != str + n) return false; // Leftover junk
832
- if (errno) return false;
833
- if (dest == NULL) return true;
834
- *(reinterpret_cast<long long*>(dest)) = r;
835
- return true;
836
- #endif /* HAVE_LONG_LONG */
837
- }
838
-
839
- bool Arg::parse_ulonglong_radix(const char* str,
840
- int n,
841
- void* dest,
842
- int radix) {
843
- #ifndef HAVE_UNSIGNED_LONG_LONG
844
- return false;
845
- #else
846
- if (n == 0) return false;
847
- char buf[kMaxNumberLength+1];
848
- str = TerminateNumber(buf, str, n);
849
- if (str[0] == '-') return false; // strtoull() on a negative number?!
850
- char* end;
851
- errno = 0;
852
- #if defined HAVE_STRTOQ
853
- unsigned long long r = strtouq(str, &end, radix);
854
- #elif defined HAVE_STRTOLL
855
- unsigned long long r = strtoull(str, &end, radix);
856
- #elif defined HAVE__STRTOI64
857
- unsigned long long r = _strtoui64(str, &end, radix);
858
- #elif defined HAVE_STRTOIMAX
859
- unsigned long long r = strtoumax(str, &end, radix);
860
- #else
861
- #error parse_ulonglong_radix: cannot convert input to a long-long
862
- #endif
863
- if (end != str + n) return false; // Leftover junk
864
- if (errno) return false;
865
- if (dest == NULL) return true;
866
- *(reinterpret_cast<unsigned long long*>(dest)) = r;
867
- return true;
868
- #endif /* HAVE_UNSIGNED_LONG_LONG */
869
- }
870
-
871
- bool Arg::parse_double(const char* str, int n, void* dest) {
872
- if (n == 0) return false;
873
- static const int kMaxLength = 200;
874
- char buf[kMaxLength];
875
- if (n >= kMaxLength) return false;
876
- memcpy(buf, str, n);
877
- buf[n] = '\0';
878
- errno = 0;
879
- char* end;
880
- double r = strtod(buf, &end);
881
- if (end != buf + n) return false; // Leftover junk
882
- if (errno) return false;
883
- if (dest == NULL) return true;
884
- *(reinterpret_cast<double*>(dest)) = r;
885
- return true;
886
- }
887
-
888
- bool Arg::parse_float(const char* str, int n, void* dest) {
889
- double r;
890
- if (!parse_double(str, n, &r)) return false;
891
- if (dest == NULL) return true;
892
- *(reinterpret_cast<float*>(dest)) = static_cast<float>(r);
893
- return true;
894
- }
895
-
896
-
897
- #define DEFINE_INTEGER_PARSERS(name) \
898
- bool Arg::parse_##name(const char* str, int n, void* dest) { \
899
- return parse_##name##_radix(str, n, dest, 10); \
900
- } \
901
- bool Arg::parse_##name##_hex(const char* str, int n, void* dest) { \
902
- return parse_##name##_radix(str, n, dest, 16); \
903
- } \
904
- bool Arg::parse_##name##_octal(const char* str, int n, void* dest) { \
905
- return parse_##name##_radix(str, n, dest, 8); \
906
- } \
907
- bool Arg::parse_##name##_cradix(const char* str, int n, void* dest) { \
908
- return parse_##name##_radix(str, n, dest, 0); \
909
- }
910
-
911
- DEFINE_INTEGER_PARSERS(short) /* */
912
- DEFINE_INTEGER_PARSERS(ushort) /* */
913
- DEFINE_INTEGER_PARSERS(int) /* Don't use semicolons after these */
914
- DEFINE_INTEGER_PARSERS(uint) /* statements because they can cause */
915
- DEFINE_INTEGER_PARSERS(long) /* compiler warnings if the checking */
916
- DEFINE_INTEGER_PARSERS(ulong) /* level is turned up high enough. */
917
- DEFINE_INTEGER_PARSERS(longlong) /* */
918
- DEFINE_INTEGER_PARSERS(ulonglong) /* */
919
-
920
- #undef DEFINE_INTEGER_PARSERS
921
-
922
- } // namespace pcrecpp