ires 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1024) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -45
  3. data/ext/Gopkg.lock +31 -1
  4. data/ext/ires/image.go +227 -0
  5. data/ext/ires/ires.go +47 -59
  6. data/ext/ires/uri.go +143 -0
  7. data/ext/main.go +18 -9
  8. data/ext/vendor/github.com/PuerkitoBio/purell/LICENSE +12 -0
  9. data/ext/vendor/github.com/PuerkitoBio/purell/README.md +187 -0
  10. data/ext/vendor/github.com/PuerkitoBio/purell/bench_test.go +57 -0
  11. data/ext/vendor/github.com/PuerkitoBio/purell/benchmarks/v0.1.0 +9 -0
  12. data/ext/vendor/github.com/PuerkitoBio/purell/example_test.go +35 -0
  13. data/ext/vendor/github.com/PuerkitoBio/purell/purell.go +379 -0
  14. data/ext/vendor/github.com/PuerkitoBio/purell/purell_test.go +768 -0
  15. data/ext/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go +53 -0
  16. data/ext/vendor/github.com/PuerkitoBio/urlesc/LICENSE +27 -0
  17. data/ext/vendor/github.com/PuerkitoBio/urlesc/README.md +16 -0
  18. data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc.go +180 -0
  19. data/ext/vendor/github.com/PuerkitoBio/urlesc/urlesc_test.go +641 -0
  20. data/ext/vendor/github.com/{satori/go.uuid → goware/urlx}/LICENSE +3 -1
  21. data/ext/vendor/github.com/goware/urlx/README.md +172 -0
  22. data/ext/vendor/github.com/goware/urlx/urlx.go +196 -0
  23. data/ext/vendor/github.com/goware/urlx/urlx_test.go +232 -0
  24. data/ext/vendor/golang.org/x/net/AUTHORS +3 -0
  25. data/ext/vendor/golang.org/x/net/CONTRIBUTING.md +31 -0
  26. data/ext/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
  27. data/ext/vendor/golang.org/x/net/LICENSE +27 -0
  28. data/ext/vendor/golang.org/x/net/PATENTS +22 -0
  29. data/ext/vendor/golang.org/x/net/README.md +16 -0
  30. data/ext/vendor/golang.org/x/net/bpf/asm.go +41 -0
  31. data/ext/vendor/golang.org/x/net/bpf/constants.go +218 -0
  32. data/ext/vendor/golang.org/x/net/bpf/doc.go +82 -0
  33. data/ext/vendor/golang.org/x/net/bpf/instructions.go +704 -0
  34. data/ext/vendor/golang.org/x/net/bpf/instructions_test.go +525 -0
  35. data/ext/vendor/golang.org/x/net/bpf/setter.go +10 -0
  36. data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf +1 -0
  37. data/ext/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt +79 -0
  38. data/ext/vendor/golang.org/x/net/bpf/vm.go +140 -0
  39. data/ext/vendor/golang.org/x/net/bpf/vm_aluop_test.go +512 -0
  40. data/ext/vendor/golang.org/x/net/bpf/vm_bpf_test.go +192 -0
  41. data/ext/vendor/golang.org/x/net/bpf/vm_extension_test.go +49 -0
  42. data/ext/vendor/golang.org/x/net/bpf/vm_instructions.go +174 -0
  43. data/ext/vendor/golang.org/x/net/bpf/vm_jump_test.go +380 -0
  44. data/ext/vendor/golang.org/x/net/bpf/vm_load_test.go +246 -0
  45. data/ext/vendor/golang.org/x/net/bpf/vm_ret_test.go +115 -0
  46. data/ext/vendor/golang.org/x/net/bpf/vm_scratch_test.go +247 -0
  47. data/ext/vendor/golang.org/x/net/bpf/vm_test.go +144 -0
  48. data/ext/vendor/golang.org/x/net/codereview.cfg +1 -0
  49. data/ext/vendor/golang.org/x/net/context/context.go +54 -0
  50. data/ext/vendor/golang.org/x/net/context/context_test.go +583 -0
  51. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +74 -0
  52. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go +29 -0
  53. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go +147 -0
  54. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go +79 -0
  55. data/ext/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go +105 -0
  56. data/ext/vendor/golang.org/x/net/context/go17.go +72 -0
  57. data/ext/vendor/golang.org/x/net/context/go19.go +20 -0
  58. data/ext/vendor/golang.org/x/net/context/pre_go17.go +300 -0
  59. data/ext/vendor/golang.org/x/net/context/pre_go19.go +109 -0
  60. data/ext/vendor/golang.org/x/net/context/withtimeout_test.go +31 -0
  61. data/ext/vendor/golang.org/x/net/dict/dict.go +210 -0
  62. data/ext/vendor/golang.org/x/net/dns/dnsmessage/example_test.go +132 -0
  63. data/ext/vendor/golang.org/x/net/dns/dnsmessage/message.go +1997 -0
  64. data/ext/vendor/golang.org/x/net/dns/dnsmessage/message_test.go +1116 -0
  65. data/ext/vendor/golang.org/x/net/html/atom/atom.go +78 -0
  66. data/ext/vendor/golang.org/x/net/html/atom/atom_test.go +109 -0
  67. data/ext/vendor/golang.org/x/net/html/atom/gen.go +709 -0
  68. data/ext/vendor/golang.org/x/net/html/atom/table.go +777 -0
  69. data/ext/vendor/golang.org/x/net/html/atom/table_test.go +373 -0
  70. data/ext/vendor/golang.org/x/net/html/charset/charset.go +257 -0
  71. data/ext/vendor/golang.org/x/net/html/charset/charset_test.go +237 -0
  72. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html +48 -0
  73. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html +48 -0
  74. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html +49 -0
  75. data/ext/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html +49 -0
  76. data/ext/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html +47 -0
  77. data/ext/vendor/golang.org/x/net/html/charset/testdata/README +9 -0
  78. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html +0 -0
  79. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html +0 -0
  80. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html +49 -0
  81. data/ext/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html +48 -0
  82. data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html +48 -0
  83. data/ext/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html +48 -0
  84. data/ext/vendor/golang.org/x/net/html/const.go +104 -0
  85. data/ext/vendor/golang.org/x/net/html/doc.go +106 -0
  86. data/ext/vendor/golang.org/x/net/html/doctype.go +156 -0
  87. data/ext/vendor/golang.org/x/net/html/entity.go +2253 -0
  88. data/ext/vendor/golang.org/x/net/html/entity_test.go +29 -0
  89. data/ext/vendor/golang.org/x/net/html/escape.go +258 -0
  90. data/ext/vendor/golang.org/x/net/html/escape_test.go +97 -0
  91. data/ext/vendor/golang.org/x/net/html/example_test.go +40 -0
  92. data/ext/vendor/golang.org/x/net/html/foreign.go +226 -0
  93. data/ext/vendor/golang.org/x/net/html/node.go +193 -0
  94. data/ext/vendor/golang.org/x/net/html/node_test.go +146 -0
  95. data/ext/vendor/golang.org/x/net/html/parse.go +2094 -0
  96. data/ext/vendor/golang.org/x/net/html/parse_test.go +388 -0
  97. data/ext/vendor/golang.org/x/net/html/render.go +271 -0
  98. data/ext/vendor/golang.org/x/net/html/render_test.go +156 -0
  99. data/ext/vendor/golang.org/x/net/html/testdata/go1.html +2237 -0
  100. data/ext/vendor/golang.org/x/net/html/testdata/webkit/README +28 -0
  101. data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat +194 -0
  102. data/ext/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat +31 -0
  103. data/ext/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat +135 -0
  104. data/ext/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat +370 -0
  105. data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat +603 -0
  106. data/ext/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat +249 -0
  107. data/ext/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat +246 -0
  108. data/ext/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat +43 -0
  109. data/ext/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat +40 -0
  110. data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat +0 -0
  111. data/ext/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat +52 -0
  112. data/ext/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat +0 -0
  113. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat +308 -0
  114. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat +15 -0
  115. data/ext/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat +28 -0
  116. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat +212 -0
  117. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat +1952 -0
  118. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat +799 -0
  119. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat +482 -0
  120. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat +62 -0
  121. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat +74 -0
  122. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat +208 -0
  123. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat +2299 -0
  124. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat +153 -0
  125. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat +269 -0
  126. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat +1237 -0
  127. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat +763 -0
  128. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat +455 -0
  129. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat +221 -0
  130. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat +157 -0
  131. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat +155 -0
  132. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat +79 -0
  133. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat +219 -0
  134. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat +313 -0
  135. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat +305 -0
  136. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat +59 -0
  137. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat +191 -0
  138. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat +663 -0
  139. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat +390 -0
  140. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat +148 -0
  141. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat +457 -0
  142. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat +741 -0
  143. data/ext/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat +261 -0
  144. data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat +610 -0
  145. data/ext/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat +159 -0
  146. data/ext/vendor/golang.org/x/net/html/token.go +1219 -0
  147. data/ext/vendor/golang.org/x/net/html/token_test.go +748 -0
  148. data/ext/vendor/golang.org/x/net/http2/Dockerfile +51 -0
  149. data/ext/vendor/golang.org/x/net/http2/Makefile +3 -0
  150. data/ext/vendor/golang.org/x/net/http2/README +20 -0
  151. data/ext/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  152. data/ext/vendor/golang.org/x/net/http2/ciphers_test.go +309 -0
  153. data/ext/vendor/golang.org/x/net/http2/client_conn_pool.go +256 -0
  154. data/ext/vendor/golang.org/x/net/http2/configure_transport.go +80 -0
  155. data/ext/vendor/golang.org/x/net/http2/databuffer.go +146 -0
  156. data/ext/vendor/golang.org/x/net/http2/databuffer_test.go +157 -0
  157. data/ext/vendor/golang.org/x/net/http2/errors.go +133 -0
  158. data/ext/vendor/golang.org/x/net/http2/errors_test.go +24 -0
  159. data/ext/vendor/golang.org/x/net/http2/flow.go +50 -0
  160. data/ext/vendor/golang.org/x/net/http2/flow_test.go +53 -0
  161. data/ext/vendor/golang.org/x/net/http2/frame.go +1579 -0
  162. data/ext/vendor/golang.org/x/net/http2/frame_test.go +1191 -0
  163. data/ext/vendor/golang.org/x/net/http2/go16.go +16 -0
  164. data/ext/vendor/golang.org/x/net/http2/go17.go +106 -0
  165. data/ext/vendor/golang.org/x/net/http2/go17_not18.go +36 -0
  166. data/ext/vendor/golang.org/x/net/http2/go18.go +56 -0
  167. data/ext/vendor/golang.org/x/net/http2/go18_test.go +79 -0
  168. data/ext/vendor/golang.org/x/net/http2/go19.go +16 -0
  169. data/ext/vendor/golang.org/x/net/http2/go19_test.go +60 -0
  170. data/ext/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  171. data/ext/vendor/golang.org/x/net/http2/gotrack_test.go +33 -0
  172. data/ext/vendor/golang.org/x/net/http2/h2demo/Makefile +8 -0
  173. data/ext/vendor/golang.org/x/net/http2/h2demo/README +16 -0
  174. data/ext/vendor/golang.org/x/net/http2/h2demo/h2demo.go +538 -0
  175. data/ext/vendor/golang.org/x/net/http2/h2demo/launch.go +302 -0
  176. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.key +27 -0
  177. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.pem +26 -0
  178. data/ext/vendor/golang.org/x/net/http2/h2demo/rootCA.srl +1 -0
  179. data/ext/vendor/golang.org/x/net/http2/h2demo/server.crt +20 -0
  180. data/ext/vendor/golang.org/x/net/http2/h2demo/server.key +27 -0
  181. data/ext/vendor/golang.org/x/net/http2/h2demo/tmpl.go +1991 -0
  182. data/ext/vendor/golang.org/x/net/http2/h2i/README.md +97 -0
  183. data/ext/vendor/golang.org/x/net/http2/h2i/h2i.go +522 -0
  184. data/ext/vendor/golang.org/x/net/http2/headermap.go +78 -0
  185. data/ext/vendor/golang.org/x/net/http2/hpack/encode.go +240 -0
  186. data/ext/vendor/golang.org/x/net/http2/hpack/encode_test.go +386 -0
  187. data/ext/vendor/golang.org/x/net/http2/hpack/hpack.go +490 -0
  188. data/ext/vendor/golang.org/x/net/http2/hpack/hpack_test.go +722 -0
  189. data/ext/vendor/golang.org/x/net/http2/hpack/huffman.go +212 -0
  190. data/ext/vendor/golang.org/x/net/http2/hpack/tables.go +479 -0
  191. data/ext/vendor/golang.org/x/net/http2/hpack/tables_test.go +214 -0
  192. data/ext/vendor/golang.org/x/net/http2/http2.go +391 -0
  193. data/ext/vendor/golang.org/x/net/http2/http2_test.go +199 -0
  194. data/ext/vendor/golang.org/x/net/http2/not_go16.go +21 -0
  195. data/ext/vendor/golang.org/x/net/http2/not_go17.go +87 -0
  196. data/ext/vendor/golang.org/x/net/http2/not_go18.go +29 -0
  197. data/ext/vendor/golang.org/x/net/http2/not_go19.go +16 -0
  198. data/ext/vendor/golang.org/x/net/http2/pipe.go +163 -0
  199. data/ext/vendor/golang.org/x/net/http2/pipe_test.go +130 -0
  200. data/ext/vendor/golang.org/x/net/http2/server.go +2857 -0
  201. data/ext/vendor/golang.org/x/net/http2/server_push_test.go +521 -0
  202. data/ext/vendor/golang.org/x/net/http2/server_test.go +3721 -0
  203. data/ext/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml +5021 -0
  204. data/ext/vendor/golang.org/x/net/http2/transport.go +2285 -0
  205. data/ext/vendor/golang.org/x/net/http2/transport_test.go +3714 -0
  206. data/ext/vendor/golang.org/x/net/http2/write.go +370 -0
  207. data/ext/vendor/golang.org/x/net/http2/writesched.go +242 -0
  208. data/ext/vendor/golang.org/x/net/http2/writesched_priority.go +452 -0
  209. data/ext/vendor/golang.org/x/net/http2/writesched_priority_test.go +541 -0
  210. data/ext/vendor/golang.org/x/net/http2/writesched_random.go +72 -0
  211. data/ext/vendor/golang.org/x/net/http2/writesched_random_test.go +44 -0
  212. data/ext/vendor/golang.org/x/net/http2/writesched_test.go +125 -0
  213. data/ext/vendor/golang.org/x/net/http2/z_spec_test.go +356 -0
  214. data/ext/vendor/golang.org/x/net/icmp/dstunreach.go +41 -0
  215. data/ext/vendor/golang.org/x/net/icmp/echo.go +45 -0
  216. data/ext/vendor/golang.org/x/net/icmp/endpoint.go +113 -0
  217. data/ext/vendor/golang.org/x/net/icmp/example_test.go +63 -0
  218. data/ext/vendor/golang.org/x/net/icmp/extension.go +89 -0
  219. data/ext/vendor/golang.org/x/net/icmp/extension_test.go +259 -0
  220. data/ext/vendor/golang.org/x/net/icmp/helper_posix.go +75 -0
  221. data/ext/vendor/golang.org/x/net/icmp/interface.go +236 -0
  222. data/ext/vendor/golang.org/x/net/icmp/ipv4.go +61 -0
  223. data/ext/vendor/golang.org/x/net/icmp/ipv4_test.go +83 -0
  224. data/ext/vendor/golang.org/x/net/icmp/ipv6.go +23 -0
  225. data/ext/vendor/golang.org/x/net/icmp/listen_posix.go +100 -0
  226. data/ext/vendor/golang.org/x/net/icmp/listen_stub.go +33 -0
  227. data/ext/vendor/golang.org/x/net/icmp/message.go +152 -0
  228. data/ext/vendor/golang.org/x/net/icmp/message_test.go +134 -0
  229. data/ext/vendor/golang.org/x/net/icmp/messagebody.go +41 -0
  230. data/ext/vendor/golang.org/x/net/icmp/mpls.go +77 -0
  231. data/ext/vendor/golang.org/x/net/icmp/multipart.go +109 -0
  232. data/ext/vendor/golang.org/x/net/icmp/multipart_test.go +442 -0
  233. data/ext/vendor/golang.org/x/net/icmp/packettoobig.go +43 -0
  234. data/ext/vendor/golang.org/x/net/icmp/paramprob.go +63 -0
  235. data/ext/vendor/golang.org/x/net/icmp/ping_test.go +200 -0
  236. data/ext/vendor/golang.org/x/net/icmp/sys_freebsd.go +11 -0
  237. data/ext/vendor/golang.org/x/net/icmp/timeexceeded.go +39 -0
  238. data/ext/vendor/golang.org/x/net/idna/example_test.go +70 -0
  239. data/ext/vendor/golang.org/x/net/idna/idna.go +680 -0
  240. data/ext/vendor/golang.org/x/net/idna/idna_test.go +108 -0
  241. data/ext/vendor/golang.org/x/net/idna/punycode.go +203 -0
  242. data/ext/vendor/golang.org/x/net/idna/punycode_test.go +198 -0
  243. data/ext/vendor/golang.org/x/net/idna/tables.go +4477 -0
  244. data/ext/vendor/golang.org/x/net/idna/trie.go +72 -0
  245. data/ext/vendor/golang.org/x/net/idna/trieval.go +114 -0
  246. data/ext/vendor/golang.org/x/net/internal/iana/const.go +180 -0
  247. data/ext/vendor/golang.org/x/net/internal/iana/gen.go +293 -0
  248. data/ext/vendor/golang.org/x/net/internal/nettest/helper_bsd.go +53 -0
  249. data/ext/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go +15 -0
  250. data/ext/vendor/golang.org/x/net/internal/nettest/helper_posix.go +31 -0
  251. data/ext/vendor/golang.org/x/net/internal/nettest/helper_stub.go +32 -0
  252. data/ext/vendor/golang.org/x/net/internal/nettest/helper_unix.go +29 -0
  253. data/ext/vendor/golang.org/x/net/internal/nettest/helper_windows.go +42 -0
  254. data/ext/vendor/golang.org/x/net/internal/nettest/interface.go +94 -0
  255. data/ext/vendor/golang.org/x/net/internal/nettest/rlimit.go +11 -0
  256. data/ext/vendor/golang.org/x/net/internal/nettest/stack.go +147 -0
  257. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr.go +11 -0
  258. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +13 -0
  259. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +14 -0
  260. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +14 -0
  261. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +14 -0
  262. data/ext/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +17 -0
  263. data/ext/vendor/golang.org/x/net/internal/socket/defs_darwin.go +44 -0
  264. data/ext/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go +44 -0
  265. data/ext/vendor/golang.org/x/net/internal/socket/defs_freebsd.go +44 -0
  266. data/ext/vendor/golang.org/x/net/internal/socket/defs_linux.go +49 -0
  267. data/ext/vendor/golang.org/x/net/internal/socket/defs_netbsd.go +47 -0
  268. data/ext/vendor/golang.org/x/net/internal/socket/defs_openbsd.go +44 -0
  269. data/ext/vendor/golang.org/x/net/internal/socket/defs_solaris.go +44 -0
  270. data/ext/vendor/golang.org/x/net/internal/socket/error_unix.go +31 -0
  271. data/ext/vendor/golang.org/x/net/internal/socket/error_windows.go +26 -0
  272. data/ext/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +19 -0
  273. data/ext/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +19 -0
  274. data/ext/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +19 -0
  275. data/ext/vendor/golang.org/x/net/internal/socket/iovec_stub.go +11 -0
  276. data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +21 -0
  277. data/ext/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +42 -0
  278. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +39 -0
  279. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +16 -0
  280. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +36 -0
  281. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +24 -0
  282. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +24 -0
  283. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +14 -0
  284. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +36 -0
  285. data/ext/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +14 -0
  286. data/ext/vendor/golang.org/x/net/internal/socket/rawconn.go +66 -0
  287. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +74 -0
  288. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +77 -0
  289. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +18 -0
  290. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +18 -0
  291. data/ext/vendor/golang.org/x/net/internal/socket/rawconn_stub.go +25 -0
  292. data/ext/vendor/golang.org/x/net/internal/socket/reflect.go +62 -0
  293. data/ext/vendor/golang.org/x/net/internal/socket/socket.go +285 -0
  294. data/ext/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go +259 -0
  295. data/ext/vendor/golang.org/x/net/internal/socket/socket_test.go +46 -0
  296. data/ext/vendor/golang.org/x/net/internal/socket/sys.go +33 -0
  297. data/ext/vendor/golang.org/x/net/internal/socket/sys_bsd.go +17 -0
  298. data/ext/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go +14 -0
  299. data/ext/vendor/golang.org/x/net/internal/socket/sys_darwin.go +7 -0
  300. data/ext/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go +7 -0
  301. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux.go +27 -0
  302. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +55 -0
  303. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +11 -0
  304. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +10 -0
  305. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +10 -0
  306. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +10 -0
  307. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +10 -0
  308. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +10 -0
  309. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +10 -0
  310. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +10 -0
  311. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +10 -0
  312. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +10 -0
  313. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +55 -0
  314. data/ext/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +11 -0
  315. data/ext/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +25 -0
  316. data/ext/vendor/golang.org/x/net/internal/socket/sys_posix.go +168 -0
  317. data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris.go +71 -0
  318. data/ext/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s +11 -0
  319. data/ext/vendor/golang.org/x/net/internal/socket/sys_stub.go +64 -0
  320. data/ext/vendor/golang.org/x/net/internal/socket/sys_unix.go +33 -0
  321. data/ext/vendor/golang.org/x/net/internal/socket/sys_windows.go +70 -0
  322. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go +59 -0
  323. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +61 -0
  324. data/ext/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go +59 -0
  325. data/ext/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +61 -0
  326. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +59 -0
  327. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +61 -0
  328. data/ext/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +59 -0
  329. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +63 -0
  330. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +66 -0
  331. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +63 -0
  332. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +66 -0
  333. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +63 -0
  334. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +66 -0
  335. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +66 -0
  336. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +63 -0
  337. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +66 -0
  338. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +66 -0
  339. data/ext/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +66 -0
  340. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +65 -0
  341. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +68 -0
  342. data/ext/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +59 -0
  343. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +59 -0
  344. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +61 -0
  345. data/ext/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +59 -0
  346. data/ext/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +60 -0
  347. data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries.go +525 -0
  348. data/ext/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go +170 -0
  349. data/ext/vendor/golang.org/x/net/ipv4/batch.go +191 -0
  350. data/ext/vendor/golang.org/x/net/ipv4/bpf_test.go +93 -0
  351. data/ext/vendor/golang.org/x/net/ipv4/control.go +144 -0
  352. data/ext/vendor/golang.org/x/net/ipv4/control_bsd.go +40 -0
  353. data/ext/vendor/golang.org/x/net/ipv4/control_pktinfo.go +39 -0
  354. data/ext/vendor/golang.org/x/net/ipv4/control_stub.go +13 -0
  355. data/ext/vendor/golang.org/x/net/ipv4/control_test.go +21 -0
  356. data/ext/vendor/golang.org/x/net/ipv4/control_unix.go +73 -0
  357. data/ext/vendor/golang.org/x/net/ipv4/control_windows.go +16 -0
  358. data/ext/vendor/golang.org/x/net/ipv4/defs_darwin.go +77 -0
  359. data/ext/vendor/golang.org/x/net/ipv4/defs_dragonfly.go +38 -0
  360. data/ext/vendor/golang.org/x/net/ipv4/defs_freebsd.go +75 -0
  361. data/ext/vendor/golang.org/x/net/ipv4/defs_linux.go +122 -0
  362. data/ext/vendor/golang.org/x/net/ipv4/defs_netbsd.go +37 -0
  363. data/ext/vendor/golang.org/x/net/ipv4/defs_openbsd.go +37 -0
  364. data/ext/vendor/golang.org/x/net/ipv4/defs_solaris.go +84 -0
  365. data/ext/vendor/golang.org/x/net/ipv4/dgramopt.go +265 -0
  366. data/ext/vendor/golang.org/x/net/ipv4/doc.go +244 -0
  367. data/ext/vendor/golang.org/x/net/ipv4/endpoint.go +187 -0
  368. data/ext/vendor/golang.org/x/net/ipv4/example_test.go +224 -0
  369. data/ext/vendor/golang.org/x/net/ipv4/gen.go +199 -0
  370. data/ext/vendor/golang.org/x/net/ipv4/genericopt.go +57 -0
  371. data/ext/vendor/golang.org/x/net/ipv4/header.go +159 -0
  372. data/ext/vendor/golang.org/x/net/ipv4/header_test.go +228 -0
  373. data/ext/vendor/golang.org/x/net/ipv4/helper.go +63 -0
  374. data/ext/vendor/golang.org/x/net/ipv4/iana.go +34 -0
  375. data/ext/vendor/golang.org/x/net/ipv4/icmp.go +57 -0
  376. data/ext/vendor/golang.org/x/net/ipv4/icmp_linux.go +25 -0
  377. data/ext/vendor/golang.org/x/net/ipv4/icmp_stub.go +25 -0
  378. data/ext/vendor/golang.org/x/net/ipv4/icmp_test.go +95 -0
  379. data/ext/vendor/golang.org/x/net/ipv4/multicast_test.go +334 -0
  380. data/ext/vendor/golang.org/x/net/ipv4/multicastlistener_test.go +265 -0
  381. data/ext/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go +195 -0
  382. data/ext/vendor/golang.org/x/net/ipv4/packet.go +69 -0
  383. data/ext/vendor/golang.org/x/net/ipv4/packet_go1_8.go +56 -0
  384. data/ext/vendor/golang.org/x/net/ipv4/packet_go1_9.go +67 -0
  385. data/ext/vendor/golang.org/x/net/ipv4/payload.go +23 -0
  386. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg.go +36 -0
  387. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go +59 -0
  388. data/ext/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go +67 -0
  389. data/ext/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +42 -0
  390. data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go +248 -0
  391. data/ext/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go +388 -0
  392. data/ext/vendor/golang.org/x/net/ipv4/readwrite_test.go +140 -0
  393. data/ext/vendor/golang.org/x/net/ipv4/sockopt.go +44 -0
  394. data/ext/vendor/golang.org/x/net/ipv4/sockopt_posix.go +71 -0
  395. data/ext/vendor/golang.org/x/net/ipv4/sockopt_stub.go +42 -0
  396. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq.go +119 -0
  397. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +25 -0
  398. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +42 -0
  399. data/ext/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +21 -0
  400. data/ext/vendor/golang.org/x/net/ipv4/sys_bpf.go +23 -0
  401. data/ext/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +16 -0
  402. data/ext/vendor/golang.org/x/net/ipv4/sys_bsd.go +37 -0
  403. data/ext/vendor/golang.org/x/net/ipv4/sys_darwin.go +93 -0
  404. data/ext/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +35 -0
  405. data/ext/vendor/golang.org/x/net/ipv4/sys_freebsd.go +76 -0
  406. data/ext/vendor/golang.org/x/net/ipv4/sys_linux.go +59 -0
  407. data/ext/vendor/golang.org/x/net/ipv4/sys_solaris.go +57 -0
  408. data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +54 -0
  409. data/ext/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +21 -0
  410. data/ext/vendor/golang.org/x/net/ipv4/sys_stub.go +13 -0
  411. data/ext/vendor/golang.org/x/net/ipv4/sys_windows.go +67 -0
  412. data/ext/vendor/golang.org/x/net/ipv4/unicast_test.go +247 -0
  413. data/ext/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go +148 -0
  414. data/ext/vendor/golang.org/x/net/ipv4/zsys_darwin.go +99 -0
  415. data/ext/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +31 -0
  416. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +93 -0
  417. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +95 -0
  418. data/ext/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +95 -0
  419. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +148 -0
  420. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +150 -0
  421. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +148 -0
  422. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +150 -0
  423. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +148 -0
  424. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +150 -0
  425. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +150 -0
  426. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +148 -0
  427. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +148 -0
  428. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +150 -0
  429. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +150 -0
  430. data/ext/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +150 -0
  431. data/ext/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +30 -0
  432. data/ext/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +30 -0
  433. data/ext/vendor/golang.org/x/net/ipv4/zsys_solaris.go +100 -0
  434. data/ext/vendor/golang.org/x/net/ipv6/batch.go +119 -0
  435. data/ext/vendor/golang.org/x/net/ipv6/bpf_test.go +96 -0
  436. data/ext/vendor/golang.org/x/net/ipv6/control.go +187 -0
  437. data/ext/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +48 -0
  438. data/ext/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +94 -0
  439. data/ext/vendor/golang.org/x/net/ipv6/control_stub.go +13 -0
  440. data/ext/vendor/golang.org/x/net/ipv6/control_test.go +21 -0
  441. data/ext/vendor/golang.org/x/net/ipv6/control_unix.go +55 -0
  442. data/ext/vendor/golang.org/x/net/ipv6/control_windows.go +16 -0
  443. data/ext/vendor/golang.org/x/net/ipv6/defs_darwin.go +112 -0
  444. data/ext/vendor/golang.org/x/net/ipv6/defs_dragonfly.go +84 -0
  445. data/ext/vendor/golang.org/x/net/ipv6/defs_freebsd.go +105 -0
  446. data/ext/vendor/golang.org/x/net/ipv6/defs_linux.go +147 -0
  447. data/ext/vendor/golang.org/x/net/ipv6/defs_netbsd.go +80 -0
  448. data/ext/vendor/golang.org/x/net/ipv6/defs_openbsd.go +89 -0
  449. data/ext/vendor/golang.org/x/net/ipv6/defs_solaris.go +114 -0
  450. data/ext/vendor/golang.org/x/net/ipv6/dgramopt.go +302 -0
  451. data/ext/vendor/golang.org/x/net/ipv6/doc.go +243 -0
  452. data/ext/vendor/golang.org/x/net/ipv6/endpoint.go +128 -0
  453. data/ext/vendor/golang.org/x/net/ipv6/example_test.go +216 -0
  454. data/ext/vendor/golang.org/x/net/ipv6/gen.go +199 -0
  455. data/ext/vendor/golang.org/x/net/ipv6/genericopt.go +58 -0
  456. data/ext/vendor/golang.org/x/net/ipv6/header.go +55 -0
  457. data/ext/vendor/golang.org/x/net/ipv6/header_test.go +55 -0
  458. data/ext/vendor/golang.org/x/net/ipv6/helper.go +57 -0
  459. data/ext/vendor/golang.org/x/net/ipv6/iana.go +82 -0
  460. data/ext/vendor/golang.org/x/net/ipv6/icmp.go +60 -0
  461. data/ext/vendor/golang.org/x/net/ipv6/icmp_bsd.go +29 -0
  462. data/ext/vendor/golang.org/x/net/ipv6/icmp_linux.go +27 -0
  463. data/ext/vendor/golang.org/x/net/ipv6/icmp_solaris.go +27 -0
  464. data/ext/vendor/golang.org/x/net/ipv6/icmp_stub.go +23 -0
  465. data/ext/vendor/golang.org/x/net/ipv6/icmp_test.go +96 -0
  466. data/ext/vendor/golang.org/x/net/ipv6/icmp_windows.go +22 -0
  467. data/ext/vendor/golang.org/x/net/ipv6/mocktransponder_test.go +32 -0
  468. data/ext/vendor/golang.org/x/net/ipv6/multicast_test.go +264 -0
  469. data/ext/vendor/golang.org/x/net/ipv6/multicastlistener_test.go +261 -0
  470. data/ext/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go +157 -0
  471. data/ext/vendor/golang.org/x/net/ipv6/payload.go +23 -0
  472. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg.go +35 -0
  473. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go +55 -0
  474. data/ext/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go +57 -0
  475. data/ext/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +41 -0
  476. data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go +242 -0
  477. data/ext/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go +373 -0
  478. data/ext/vendor/golang.org/x/net/ipv6/readwrite_test.go +148 -0
  479. data/ext/vendor/golang.org/x/net/ipv6/sockopt.go +43 -0
  480. data/ext/vendor/golang.org/x/net/ipv6/sockopt_posix.go +87 -0
  481. data/ext/vendor/golang.org/x/net/ipv6/sockopt_stub.go +46 -0
  482. data/ext/vendor/golang.org/x/net/ipv6/sockopt_test.go +133 -0
  483. data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq.go +24 -0
  484. data/ext/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +17 -0
  485. data/ext/vendor/golang.org/x/net/ipv6/sys_bpf.go +23 -0
  486. data/ext/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +16 -0
  487. data/ext/vendor/golang.org/x/net/ipv6/sys_bsd.go +57 -0
  488. data/ext/vendor/golang.org/x/net/ipv6/sys_darwin.go +106 -0
  489. data/ext/vendor/golang.org/x/net/ipv6/sys_freebsd.go +92 -0
  490. data/ext/vendor/golang.org/x/net/ipv6/sys_linux.go +74 -0
  491. data/ext/vendor/golang.org/x/net/ipv6/sys_solaris.go +74 -0
  492. data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +54 -0
  493. data/ext/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +21 -0
  494. data/ext/vendor/golang.org/x/net/ipv6/sys_stub.go +13 -0
  495. data/ext/vendor/golang.org/x/net/ipv6/sys_windows.go +75 -0
  496. data/ext/vendor/golang.org/x/net/ipv6/unicast_test.go +184 -0
  497. data/ext/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go +120 -0
  498. data/ext/vendor/golang.org/x/net/ipv6/zsys_darwin.go +131 -0
  499. data/ext/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +88 -0
  500. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +122 -0
  501. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +124 -0
  502. data/ext/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +124 -0
  503. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +170 -0
  504. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +172 -0
  505. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +170 -0
  506. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +172 -0
  507. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +170 -0
  508. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +172 -0
  509. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +172 -0
  510. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +170 -0
  511. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +170 -0
  512. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +172 -0
  513. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +172 -0
  514. data/ext/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +172 -0
  515. data/ext/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +84 -0
  516. data/ext/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +93 -0
  517. data/ext/vendor/golang.org/x/net/ipv6/zsys_solaris.go +131 -0
  518. data/ext/vendor/golang.org/x/net/lex/httplex/httplex.go +351 -0
  519. data/ext/vendor/golang.org/x/net/lex/httplex/httplex_test.go +119 -0
  520. data/ext/vendor/golang.org/x/net/lif/address.go +105 -0
  521. data/ext/vendor/golang.org/x/net/lif/address_test.go +123 -0
  522. data/ext/vendor/golang.org/x/net/lif/binary.go +115 -0
  523. data/ext/vendor/golang.org/x/net/lif/defs_solaris.go +90 -0
  524. data/ext/vendor/golang.org/x/net/lif/lif.go +43 -0
  525. data/ext/vendor/golang.org/x/net/lif/link.go +126 -0
  526. data/ext/vendor/golang.org/x/net/lif/link_test.go +63 -0
  527. data/ext/vendor/golang.org/x/net/lif/sys.go +21 -0
  528. data/ext/vendor/golang.org/x/net/lif/sys_solaris_amd64.s +8 -0
  529. data/ext/vendor/golang.org/x/net/lif/syscall.go +28 -0
  530. data/ext/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +103 -0
  531. data/ext/vendor/golang.org/x/net/nettest/conntest.go +456 -0
  532. data/ext/vendor/golang.org/x/net/nettest/conntest_go16.go +24 -0
  533. data/ext/vendor/golang.org/x/net/nettest/conntest_go17.go +24 -0
  534. data/ext/vendor/golang.org/x/net/nettest/conntest_test.go +76 -0
  535. data/ext/vendor/golang.org/x/net/netutil/listen.go +48 -0
  536. data/ext/vendor/golang.org/x/net/netutil/listen_test.go +101 -0
  537. data/ext/vendor/golang.org/x/net/proxy/direct.go +18 -0
  538. data/ext/vendor/golang.org/x/net/proxy/per_host.go +140 -0
  539. data/ext/vendor/golang.org/x/net/proxy/per_host_test.go +55 -0
  540. data/ext/vendor/golang.org/x/net/proxy/proxy.go +134 -0
  541. data/ext/vendor/golang.org/x/net/proxy/proxy_test.go +215 -0
  542. data/ext/vendor/golang.org/x/net/proxy/socks5.go +214 -0
  543. data/ext/vendor/golang.org/x/net/publicsuffix/gen.go +713 -0
  544. data/ext/vendor/golang.org/x/net/publicsuffix/list.go +135 -0
  545. data/ext/vendor/golang.org/x/net/publicsuffix/list_test.go +416 -0
  546. data/ext/vendor/golang.org/x/net/publicsuffix/table.go +9419 -0
  547. data/ext/vendor/golang.org/x/net/publicsuffix/table_test.go +16756 -0
  548. data/ext/vendor/golang.org/x/net/route/address.go +425 -0
  549. data/ext/vendor/golang.org/x/net/route/address_darwin_test.go +63 -0
  550. data/ext/vendor/golang.org/x/net/route/address_test.go +103 -0
  551. data/ext/vendor/golang.org/x/net/route/binary.go +90 -0
  552. data/ext/vendor/golang.org/x/net/route/defs_darwin.go +114 -0
  553. data/ext/vendor/golang.org/x/net/route/defs_dragonfly.go +113 -0
  554. data/ext/vendor/golang.org/x/net/route/defs_freebsd.go +337 -0
  555. data/ext/vendor/golang.org/x/net/route/defs_netbsd.go +112 -0
  556. data/ext/vendor/golang.org/x/net/route/defs_openbsd.go +116 -0
  557. data/ext/vendor/golang.org/x/net/route/interface.go +64 -0
  558. data/ext/vendor/golang.org/x/net/route/interface_announce.go +32 -0
  559. data/ext/vendor/golang.org/x/net/route/interface_classic.go +66 -0
  560. data/ext/vendor/golang.org/x/net/route/interface_freebsd.go +78 -0
  561. data/ext/vendor/golang.org/x/net/route/interface_multicast.go +30 -0
  562. data/ext/vendor/golang.org/x/net/route/interface_openbsd.go +90 -0
  563. data/ext/vendor/golang.org/x/net/route/message.go +72 -0
  564. data/ext/vendor/golang.org/x/net/route/message_darwin_test.go +34 -0
  565. data/ext/vendor/golang.org/x/net/route/message_freebsd_test.go +92 -0
  566. data/ext/vendor/golang.org/x/net/route/message_test.go +239 -0
  567. data/ext/vendor/golang.org/x/net/route/route.go +123 -0
  568. data/ext/vendor/golang.org/x/net/route/route_classic.go +67 -0
  569. data/ext/vendor/golang.org/x/net/route/route_openbsd.go +65 -0
  570. data/ext/vendor/golang.org/x/net/route/route_test.go +390 -0
  571. data/ext/vendor/golang.org/x/net/route/sys.go +39 -0
  572. data/ext/vendor/golang.org/x/net/route/sys_darwin.go +87 -0
  573. data/ext/vendor/golang.org/x/net/route/sys_dragonfly.go +76 -0
  574. data/ext/vendor/golang.org/x/net/route/sys_freebsd.go +155 -0
  575. data/ext/vendor/golang.org/x/net/route/sys_netbsd.go +71 -0
  576. data/ext/vendor/golang.org/x/net/route/sys_openbsd.go +80 -0
  577. data/ext/vendor/golang.org/x/net/route/syscall.go +28 -0
  578. data/ext/vendor/golang.org/x/net/route/zsys_darwin.go +99 -0
  579. data/ext/vendor/golang.org/x/net/route/zsys_dragonfly.go +98 -0
  580. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_386.go +126 -0
  581. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +123 -0
  582. data/ext/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +123 -0
  583. data/ext/vendor/golang.org/x/net/route/zsys_netbsd.go +97 -0
  584. data/ext/vendor/golang.org/x/net/route/zsys_openbsd.go +101 -0
  585. data/ext/vendor/golang.org/x/net/trace/events.go +532 -0
  586. data/ext/vendor/golang.org/x/net/trace/histogram.go +365 -0
  587. data/ext/vendor/golang.org/x/net/trace/histogram_test.go +325 -0
  588. data/ext/vendor/golang.org/x/net/trace/trace.go +1082 -0
  589. data/ext/vendor/golang.org/x/net/trace/trace_go16.go +21 -0
  590. data/ext/vendor/golang.org/x/net/trace/trace_go17.go +21 -0
  591. data/ext/vendor/golang.org/x/net/trace/trace_test.go +178 -0
  592. data/ext/vendor/golang.org/x/net/webdav/file.go +796 -0
  593. data/ext/vendor/golang.org/x/net/webdav/file_go1.6.go +17 -0
  594. data/ext/vendor/golang.org/x/net/webdav/file_go1.7.go +16 -0
  595. data/ext/vendor/golang.org/x/net/webdav/file_test.go +1184 -0
  596. data/ext/vendor/golang.org/x/net/webdav/if.go +173 -0
  597. data/ext/vendor/golang.org/x/net/webdav/if_test.go +322 -0
  598. data/ext/vendor/golang.org/x/net/webdav/internal/xml/README +11 -0
  599. data/ext/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go +56 -0
  600. data/ext/vendor/golang.org/x/net/webdav/internal/xml/example_test.go +151 -0
  601. data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal.go +1223 -0
  602. data/ext/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go +1939 -0
  603. data/ext/vendor/golang.org/x/net/webdav/internal/xml/read.go +692 -0
  604. data/ext/vendor/golang.org/x/net/webdav/internal/xml/read_test.go +744 -0
  605. data/ext/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go +371 -0
  606. data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml.go +1998 -0
  607. data/ext/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go +752 -0
  608. data/ext/vendor/golang.org/x/net/webdav/litmus_test_server.go +94 -0
  609. data/ext/vendor/golang.org/x/net/webdav/lock.go +445 -0
  610. data/ext/vendor/golang.org/x/net/webdav/lock_test.go +731 -0
  611. data/ext/vendor/golang.org/x/net/webdav/prop.go +418 -0
  612. data/ext/vendor/golang.org/x/net/webdav/prop_test.go +613 -0
  613. data/ext/vendor/golang.org/x/net/webdav/webdav.go +702 -0
  614. data/ext/vendor/golang.org/x/net/webdav/webdav_test.go +344 -0
  615. data/ext/vendor/golang.org/x/net/webdav/xml.go +519 -0
  616. data/ext/vendor/golang.org/x/net/webdav/xml_test.go +906 -0
  617. data/ext/vendor/golang.org/x/net/websocket/client.go +106 -0
  618. data/ext/vendor/golang.org/x/net/websocket/dial.go +24 -0
  619. data/ext/vendor/golang.org/x/net/websocket/dial_test.go +43 -0
  620. data/ext/vendor/golang.org/x/net/websocket/exampledial_test.go +31 -0
  621. data/ext/vendor/golang.org/x/net/websocket/examplehandler_test.go +26 -0
  622. data/ext/vendor/golang.org/x/net/websocket/hybi.go +583 -0
  623. data/ext/vendor/golang.org/x/net/websocket/hybi_test.go +608 -0
  624. data/ext/vendor/golang.org/x/net/websocket/server.go +113 -0
  625. data/ext/vendor/golang.org/x/net/websocket/websocket.go +448 -0
  626. data/ext/vendor/golang.org/x/net/websocket/websocket_test.go +665 -0
  627. data/ext/vendor/golang.org/x/net/xsrftoken/xsrf.go +94 -0
  628. data/ext/vendor/golang.org/x/net/xsrftoken/xsrf_test.go +83 -0
  629. data/ext/vendor/golang.org/x/text/AUTHORS +3 -0
  630. data/ext/vendor/golang.org/x/text/CONTRIBUTING.md +31 -0
  631. data/ext/vendor/golang.org/x/text/CONTRIBUTORS +3 -0
  632. data/ext/vendor/golang.org/x/text/LICENSE +27 -0
  633. data/ext/vendor/golang.org/x/text/PATENTS +22 -0
  634. data/ext/vendor/golang.org/x/text/README.md +91 -0
  635. data/ext/vendor/golang.org/x/text/cases/cases.go +162 -0
  636. data/ext/vendor/golang.org/x/text/cases/context.go +376 -0
  637. data/ext/vendor/golang.org/x/text/cases/context_test.go +438 -0
  638. data/ext/vendor/golang.org/x/text/cases/example_test.go +53 -0
  639. data/ext/vendor/golang.org/x/text/cases/fold.go +34 -0
  640. data/ext/vendor/golang.org/x/text/cases/fold_test.go +51 -0
  641. data/ext/vendor/golang.org/x/text/cases/gen.go +839 -0
  642. data/ext/vendor/golang.org/x/text/cases/gen_trieval.go +219 -0
  643. data/ext/vendor/golang.org/x/text/cases/icu.go +61 -0
  644. data/ext/vendor/golang.org/x/text/cases/icu_test.go +210 -0
  645. data/ext/vendor/golang.org/x/text/cases/info.go +82 -0
  646. data/ext/vendor/golang.org/x/text/cases/map.go +816 -0
  647. data/ext/vendor/golang.org/x/text/cases/map_test.go +950 -0
  648. data/ext/vendor/golang.org/x/text/cases/tables.go +2251 -0
  649. data/ext/vendor/golang.org/x/text/cases/tables_test.go +1158 -0
  650. data/ext/vendor/golang.org/x/text/cases/trieval.go +215 -0
  651. data/ext/vendor/golang.org/x/text/cmd/gotext/doc.go +35 -0
  652. data/ext/vendor/golang.org/x/text/cmd/gotext/extract.go +195 -0
  653. data/ext/vendor/golang.org/x/text/cmd/gotext/main.go +356 -0
  654. data/ext/vendor/golang.org/x/text/cmd/gotext/message.go +127 -0
  655. data/ext/vendor/golang.org/x/text/codereview.cfg +1 -0
  656. data/ext/vendor/golang.org/x/text/collate/build/builder.go +702 -0
  657. data/ext/vendor/golang.org/x/text/collate/build/builder_test.go +290 -0
  658. data/ext/vendor/golang.org/x/text/collate/build/colelem.go +294 -0
  659. data/ext/vendor/golang.org/x/text/collate/build/colelem_test.go +215 -0
  660. data/ext/vendor/golang.org/x/text/collate/build/contract.go +309 -0
  661. data/ext/vendor/golang.org/x/text/collate/build/contract_test.go +266 -0
  662. data/ext/vendor/golang.org/x/text/collate/build/order.go +393 -0
  663. data/ext/vendor/golang.org/x/text/collate/build/order_test.go +229 -0
  664. data/ext/vendor/golang.org/x/text/collate/build/table.go +81 -0
  665. data/ext/vendor/golang.org/x/text/collate/build/trie.go +290 -0
  666. data/ext/vendor/golang.org/x/text/collate/build/trie_test.go +107 -0
  667. data/ext/vendor/golang.org/x/text/collate/collate.go +403 -0
  668. data/ext/vendor/golang.org/x/text/collate/collate_test.go +482 -0
  669. data/ext/vendor/golang.org/x/text/collate/export_test.go +51 -0
  670. data/ext/vendor/golang.org/x/text/collate/index.go +32 -0
  671. data/ext/vendor/golang.org/x/text/collate/maketables.go +553 -0
  672. data/ext/vendor/golang.org/x/text/collate/option.go +239 -0
  673. data/ext/vendor/golang.org/x/text/collate/option_test.go +209 -0
  674. data/ext/vendor/golang.org/x/text/collate/reg_test.go +230 -0
  675. data/ext/vendor/golang.org/x/text/collate/sort.go +81 -0
  676. data/ext/vendor/golang.org/x/text/collate/sort_test.go +55 -0
  677. data/ext/vendor/golang.org/x/text/collate/table_test.go +291 -0
  678. data/ext/vendor/golang.org/x/text/collate/tables.go +73789 -0
  679. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/Makefile +7 -0
  680. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/chars.go +1156 -0
  681. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/col.go +97 -0
  682. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go +529 -0
  683. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go +111 -0
  684. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/gen.go +183 -0
  685. data/ext/vendor/golang.org/x/text/collate/tools/colcmp/icu.go +209 -0
  686. data/ext/vendor/golang.org/x/text/currency/common.go +66 -0
  687. data/ext/vendor/golang.org/x/text/currency/currency.go +185 -0
  688. data/ext/vendor/golang.org/x/text/currency/currency_test.go +171 -0
  689. data/ext/vendor/golang.org/x/text/currency/example_test.go +27 -0
  690. data/ext/vendor/golang.org/x/text/currency/format.go +215 -0
  691. data/ext/vendor/golang.org/x/text/currency/format_test.go +70 -0
  692. data/ext/vendor/golang.org/x/text/currency/gen.go +400 -0
  693. data/ext/vendor/golang.org/x/text/currency/gen_common.go +70 -0
  694. data/ext/vendor/golang.org/x/text/currency/query.go +152 -0
  695. data/ext/vendor/golang.org/x/text/currency/query_test.go +107 -0
  696. data/ext/vendor/golang.org/x/text/currency/tables.go +2574 -0
  697. data/ext/vendor/golang.org/x/text/currency/tables_test.go +93 -0
  698. data/ext/vendor/golang.org/x/text/doc.go +13 -0
  699. data/ext/vendor/golang.org/x/text/encoding/charmap/charmap.go +249 -0
  700. data/ext/vendor/golang.org/x/text/encoding/charmap/charmap_test.go +258 -0
  701. data/ext/vendor/golang.org/x/text/encoding/charmap/maketables.go +556 -0
  702. data/ext/vendor/golang.org/x/text/encoding/charmap/tables.go +7410 -0
  703. data/ext/vendor/golang.org/x/text/encoding/encoding.go +335 -0
  704. data/ext/vendor/golang.org/x/text/encoding/encoding_test.go +290 -0
  705. data/ext/vendor/golang.org/x/text/encoding/example_test.go +42 -0
  706. data/ext/vendor/golang.org/x/text/encoding/htmlindex/gen.go +173 -0
  707. data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go +86 -0
  708. data/ext/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go +144 -0
  709. data/ext/vendor/golang.org/x/text/encoding/htmlindex/map.go +105 -0
  710. data/ext/vendor/golang.org/x/text/encoding/htmlindex/tables.go +352 -0
  711. data/ext/vendor/golang.org/x/text/encoding/ianaindex/example_test.go +27 -0
  712. data/ext/vendor/golang.org/x/text/encoding/ianaindex/gen.go +192 -0
  713. data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go +209 -0
  714. data/ext/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go +192 -0
  715. data/ext/vendor/golang.org/x/text/encoding/ianaindex/tables.go +2348 -0
  716. data/ext/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go +180 -0
  717. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/gen.go +137 -0
  718. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go +81 -0
  719. data/ext/vendor/golang.org/x/text/encoding/internal/identifier/mib.go +1621 -0
  720. data/ext/vendor/golang.org/x/text/encoding/internal/internal.go +75 -0
  721. data/ext/vendor/golang.org/x/text/encoding/japanese/all.go +12 -0
  722. data/ext/vendor/golang.org/x/text/encoding/japanese/all_test.go +248 -0
  723. data/ext/vendor/golang.org/x/text/encoding/japanese/eucjp.go +225 -0
  724. data/ext/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go +299 -0
  725. data/ext/vendor/golang.org/x/text/encoding/japanese/maketables.go +161 -0
  726. data/ext/vendor/golang.org/x/text/encoding/japanese/shiftjis.go +189 -0
  727. data/ext/vendor/golang.org/x/text/encoding/japanese/tables.go +26971 -0
  728. data/ext/vendor/golang.org/x/text/encoding/korean/all_test.go +94 -0
  729. data/ext/vendor/golang.org/x/text/encoding/korean/euckr.go +177 -0
  730. data/ext/vendor/golang.org/x/text/encoding/korean/maketables.go +143 -0
  731. data/ext/vendor/golang.org/x/text/encoding/korean/tables.go +34152 -0
  732. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go +12 -0
  733. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go +143 -0
  734. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go +269 -0
  735. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +245 -0
  736. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go +161 -0
  737. data/ext/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go +43999 -0
  738. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt +510 -0
  739. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt +0 -0
  740. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt +0 -0
  741. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt +510 -0
  742. data/ext/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt +510 -0
  743. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt +178 -0
  744. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt +178 -0
  745. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt +178 -0
  746. data/ext/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt +178 -0
  747. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt +107 -0
  748. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt +107 -0
  749. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt +107 -0
  750. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt +107 -0
  751. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt +106 -0
  752. data/ext/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt +106 -0
  753. data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt +175 -0
  754. data/ext/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt +175 -0
  755. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go +114 -0
  756. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go +199 -0
  757. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go +140 -0
  758. data/ext/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go +37142 -0
  759. data/ext/vendor/golang.org/x/text/encoding/unicode/override.go +82 -0
  760. data/ext/vendor/golang.org/x/text/encoding/unicode/unicode.go +434 -0
  761. data/ext/vendor/golang.org/x/text/encoding/unicode/unicode_test.go +499 -0
  762. data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go +296 -0
  763. data/ext/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go +248 -0
  764. data/ext/vendor/golang.org/x/text/feature/plural/common.go +70 -0
  765. data/ext/vendor/golang.org/x/text/feature/plural/data_test.go +190 -0
  766. data/ext/vendor/golang.org/x/text/feature/plural/example_test.go +46 -0
  767. data/ext/vendor/golang.org/x/text/feature/plural/gen.go +513 -0
  768. data/ext/vendor/golang.org/x/text/feature/plural/gen_common.go +74 -0
  769. data/ext/vendor/golang.org/x/text/feature/plural/message.go +244 -0
  770. data/ext/vendor/golang.org/x/text/feature/plural/message_test.go +197 -0
  771. data/ext/vendor/golang.org/x/text/feature/plural/plural.go +258 -0
  772. data/ext/vendor/golang.org/x/text/feature/plural/plural_test.go +216 -0
  773. data/ext/vendor/golang.org/x/text/feature/plural/tables.go +540 -0
  774. data/ext/vendor/golang.org/x/text/gen.go +318 -0
  775. data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg.go +366 -0
  776. data/ext/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +316 -0
  777. data/ext/vendor/golang.org/x/text/internal/catmsg/codec.go +407 -0
  778. data/ext/vendor/golang.org/x/text/internal/catmsg/varint.go +62 -0
  779. data/ext/vendor/golang.org/x/text/internal/catmsg/varint_test.go +123 -0
  780. data/ext/vendor/golang.org/x/text/internal/colltab/collate_test.go +121 -0
  781. data/ext/vendor/golang.org/x/text/internal/colltab/collelem.go +371 -0
  782. data/ext/vendor/golang.org/x/text/internal/colltab/collelem_test.go +183 -0
  783. data/ext/vendor/golang.org/x/text/internal/colltab/colltab.go +105 -0
  784. data/ext/vendor/golang.org/x/text/internal/colltab/colltab_test.go +64 -0
  785. data/ext/vendor/golang.org/x/text/internal/colltab/contract.go +145 -0
  786. data/ext/vendor/golang.org/x/text/internal/colltab/contract_test.go +131 -0
  787. data/ext/vendor/golang.org/x/text/internal/colltab/iter.go +178 -0
  788. data/ext/vendor/golang.org/x/text/internal/colltab/iter_test.go +63 -0
  789. data/ext/vendor/golang.org/x/text/internal/colltab/numeric.go +236 -0
  790. data/ext/vendor/golang.org/x/text/internal/colltab/numeric_test.go +159 -0
  791. data/ext/vendor/golang.org/x/text/internal/colltab/table.go +275 -0
  792. data/ext/vendor/golang.org/x/text/internal/colltab/trie.go +159 -0
  793. data/ext/vendor/golang.org/x/text/internal/colltab/trie_test.go +106 -0
  794. data/ext/vendor/golang.org/x/text/internal/colltab/weighter.go +31 -0
  795. data/ext/vendor/golang.org/x/text/internal/colltab/weighter_test.go +42 -0
  796. data/ext/vendor/golang.org/x/text/internal/export/README +4 -0
  797. data/ext/vendor/golang.org/x/text/internal/export/idna/common_test.go +55 -0
  798. data/ext/vendor/golang.org/x/text/internal/export/idna/example_test.go +68 -0
  799. data/ext/vendor/golang.org/x/text/internal/export/idna/gen.go +276 -0
  800. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_common.go +59 -0
  801. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_test.go +91 -0
  802. data/ext/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go +123 -0
  803. data/ext/vendor/golang.org/x/text/internal/export/idna/idna.go +717 -0
  804. data/ext/vendor/golang.org/x/text/internal/export/idna/idna_test.go +308 -0
  805. data/ext/vendor/golang.org/x/text/internal/export/idna/punycode.go +201 -0
  806. data/ext/vendor/golang.org/x/text/internal/export/idna/punycode_test.go +198 -0
  807. data/ext/vendor/golang.org/x/text/internal/export/idna/tables.go +4557 -0
  808. data/ext/vendor/golang.org/x/text/internal/export/idna/trie.go +70 -0
  809. data/ext/vendor/golang.org/x/text/internal/export/idna/trieval.go +119 -0
  810. data/ext/vendor/golang.org/x/text/internal/format/format.go +41 -0
  811. data/ext/vendor/golang.org/x/text/internal/gen.go +52 -0
  812. data/ext/vendor/golang.org/x/text/internal/gen/code.go +351 -0
  813. data/ext/vendor/golang.org/x/text/internal/gen/gen.go +281 -0
  814. data/ext/vendor/golang.org/x/text/internal/gen_test.go +38 -0
  815. data/ext/vendor/golang.org/x/text/internal/internal.go +51 -0
  816. data/ext/vendor/golang.org/x/text/internal/internal_test.go +38 -0
  817. data/ext/vendor/golang.org/x/text/internal/match.go +67 -0
  818. data/ext/vendor/golang.org/x/text/internal/match_test.go +56 -0
  819. data/ext/vendor/golang.org/x/text/internal/number/common.go +40 -0
  820. data/ext/vendor/golang.org/x/text/internal/number/decimal.go +498 -0
  821. data/ext/vendor/golang.org/x/text/internal/number/decimal_test.go +329 -0
  822. data/ext/vendor/golang.org/x/text/internal/number/format.go +540 -0
  823. data/ext/vendor/golang.org/x/text/internal/number/format_test.go +522 -0
  824. data/ext/vendor/golang.org/x/text/internal/number/gen.go +458 -0
  825. data/ext/vendor/golang.org/x/text/internal/number/gen_common.go +44 -0
  826. data/ext/vendor/golang.org/x/text/internal/number/number.go +154 -0
  827. data/ext/vendor/golang.org/x/text/internal/number/number_test.go +100 -0
  828. data/ext/vendor/golang.org/x/text/internal/number/pattern.go +485 -0
  829. data/ext/vendor/golang.org/x/text/internal/number/pattern_test.go +438 -0
  830. data/ext/vendor/golang.org/x/text/internal/number/roundingmode_string.go +16 -0
  831. data/ext/vendor/golang.org/x/text/internal/number/tables.go +1154 -0
  832. data/ext/vendor/golang.org/x/text/internal/number/tables_test.go +125 -0
  833. data/ext/vendor/golang.org/x/text/internal/stringset/set.go +86 -0
  834. data/ext/vendor/golang.org/x/text/internal/stringset/set_test.go +53 -0
  835. data/ext/vendor/golang.org/x/text/internal/tables.go +117 -0
  836. data/ext/vendor/golang.org/x/text/internal/tag/tag.go +100 -0
  837. data/ext/vendor/golang.org/x/text/internal/tag/tag_test.go +67 -0
  838. data/ext/vendor/golang.org/x/text/internal/testtext/codesize.go +53 -0
  839. data/ext/vendor/golang.org/x/text/internal/testtext/flag.go +22 -0
  840. data/ext/vendor/golang.org/x/text/internal/testtext/gc.go +14 -0
  841. data/ext/vendor/golang.org/x/text/internal/testtext/gccgo.go +11 -0
  842. data/ext/vendor/golang.org/x/text/internal/testtext/go1_6.go +23 -0
  843. data/ext/vendor/golang.org/x/text/internal/testtext/go1_7.go +17 -0
  844. data/ext/vendor/golang.org/x/text/internal/testtext/text.go +105 -0
  845. data/ext/vendor/golang.org/x/text/internal/triegen/compact.go +58 -0
  846. data/ext/vendor/golang.org/x/text/internal/triegen/data_test.go +875 -0
  847. data/ext/vendor/golang.org/x/text/internal/triegen/example_compact_test.go +71 -0
  848. data/ext/vendor/golang.org/x/text/internal/triegen/example_test.go +148 -0
  849. data/ext/vendor/golang.org/x/text/internal/triegen/gen_test.go +68 -0
  850. data/ext/vendor/golang.org/x/text/internal/triegen/print.go +251 -0
  851. data/ext/vendor/golang.org/x/text/internal/triegen/triegen.go +494 -0
  852. data/ext/vendor/golang.org/x/text/internal/ucd/example_test.go +81 -0
  853. data/ext/vendor/golang.org/x/text/internal/ucd/ucd.go +371 -0
  854. data/ext/vendor/golang.org/x/text/internal/ucd/ucd_test.go +105 -0
  855. data/ext/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go +87 -0
  856. data/ext/vendor/golang.org/x/text/language/Makefile +16 -0
  857. data/ext/vendor/golang.org/x/text/language/common.go +16 -0
  858. data/ext/vendor/golang.org/x/text/language/coverage.go +197 -0
  859. data/ext/vendor/golang.org/x/text/language/coverage_test.go +154 -0
  860. data/ext/vendor/golang.org/x/text/language/display/dict.go +92 -0
  861. data/ext/vendor/golang.org/x/text/language/display/dict_test.go +39 -0
  862. data/ext/vendor/golang.org/x/text/language/display/display.go +420 -0
  863. data/ext/vendor/golang.org/x/text/language/display/display_test.go +705 -0
  864. data/ext/vendor/golang.org/x/text/language/display/examples_test.go +116 -0
  865. data/ext/vendor/golang.org/x/text/language/display/lookup.go +251 -0
  866. data/ext/vendor/golang.org/x/text/language/display/maketables.go +602 -0
  867. data/ext/vendor/golang.org/x/text/language/display/tables.go +50344 -0
  868. data/ext/vendor/golang.org/x/text/language/doc.go +102 -0
  869. data/ext/vendor/golang.org/x/text/language/examples_test.go +413 -0
  870. data/ext/vendor/golang.org/x/text/language/gen.go +1706 -0
  871. data/ext/vendor/golang.org/x/text/language/gen_common.go +20 -0
  872. data/ext/vendor/golang.org/x/text/language/gen_index.go +162 -0
  873. data/ext/vendor/golang.org/x/text/language/go1_1.go +38 -0
  874. data/ext/vendor/golang.org/x/text/language/go1_2.go +11 -0
  875. data/ext/vendor/golang.org/x/text/language/httpexample_test.go +48 -0
  876. data/ext/vendor/golang.org/x/text/language/index.go +769 -0
  877. data/ext/vendor/golang.org/x/text/language/language.go +887 -0
  878. data/ext/vendor/golang.org/x/text/language/language_test.go +878 -0
  879. data/ext/vendor/golang.org/x/text/language/lookup.go +396 -0
  880. data/ext/vendor/golang.org/x/text/language/lookup_test.go +457 -0
  881. data/ext/vendor/golang.org/x/text/language/match.go +933 -0
  882. data/ext/vendor/golang.org/x/text/language/match_test.go +505 -0
  883. data/ext/vendor/golang.org/x/text/language/parse.go +859 -0
  884. data/ext/vendor/golang.org/x/text/language/parse_test.go +517 -0
  885. data/ext/vendor/golang.org/x/text/language/tables.go +3675 -0
  886. data/ext/vendor/golang.org/x/text/language/tags.go +143 -0
  887. data/ext/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt +389 -0
  888. data/ext/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt +226 -0
  889. data/ext/vendor/golang.org/x/text/message/catalog.go +28 -0
  890. data/ext/vendor/golang.org/x/text/message/catalog/catalog.go +292 -0
  891. data/ext/vendor/golang.org/x/text/message/catalog/catalog_test.go +194 -0
  892. data/ext/vendor/golang.org/x/text/message/catalog/dict.go +90 -0
  893. data/ext/vendor/golang.org/x/text/message/doc.go +100 -0
  894. data/ext/vendor/golang.org/x/text/message/examples_test.go +42 -0
  895. data/ext/vendor/golang.org/x/text/message/fmt_test.go +1889 -0
  896. data/ext/vendor/golang.org/x/text/message/format.go +532 -0
  897. data/ext/vendor/golang.org/x/text/message/message.go +169 -0
  898. data/ext/vendor/golang.org/x/text/message/message_test.go +181 -0
  899. data/ext/vendor/golang.org/x/text/message/print.go +1194 -0
  900. data/ext/vendor/golang.org/x/text/number/doc.go +28 -0
  901. data/ext/vendor/golang.org/x/text/number/examples_test.go +28 -0
  902. data/ext/vendor/golang.org/x/text/number/format.go +122 -0
  903. data/ext/vendor/golang.org/x/text/number/format_test.go +107 -0
  904. data/ext/vendor/golang.org/x/text/number/number.go +77 -0
  905. data/ext/vendor/golang.org/x/text/number/number_test.go +190 -0
  906. data/ext/vendor/golang.org/x/text/number/option.go +177 -0
  907. data/ext/vendor/golang.org/x/text/runes/cond.go +187 -0
  908. data/ext/vendor/golang.org/x/text/runes/cond_test.go +282 -0
  909. data/ext/vendor/golang.org/x/text/runes/example_test.go +60 -0
  910. data/ext/vendor/golang.org/x/text/runes/runes.go +355 -0
  911. data/ext/vendor/golang.org/x/text/runes/runes_test.go +664 -0
  912. data/ext/vendor/golang.org/x/text/search/index.go +35 -0
  913. data/ext/vendor/golang.org/x/text/search/pattern.go +155 -0
  914. data/ext/vendor/golang.org/x/text/search/pattern_test.go +357 -0
  915. data/ext/vendor/golang.org/x/text/search/search.go +237 -0
  916. data/ext/vendor/golang.org/x/text/search/tables.go +12448 -0
  917. data/ext/vendor/golang.org/x/text/secure/bidirule/bench_test.go +54 -0
  918. data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule.go +340 -0
  919. data/ext/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go +851 -0
  920. data/ext/vendor/golang.org/x/text/secure/doc.go +6 -0
  921. data/ext/vendor/golang.org/x/text/secure/precis/benchmark_test.go +82 -0
  922. data/ext/vendor/golang.org/x/text/secure/precis/class.go +36 -0
  923. data/ext/vendor/golang.org/x/text/secure/precis/class_test.go +50 -0
  924. data/ext/vendor/golang.org/x/text/secure/precis/context.go +139 -0
  925. data/ext/vendor/golang.org/x/text/secure/precis/doc.go +14 -0
  926. data/ext/vendor/golang.org/x/text/secure/precis/enforce_test.go +396 -0
  927. data/ext/vendor/golang.org/x/text/secure/precis/gen.go +310 -0
  928. data/ext/vendor/golang.org/x/text/secure/precis/gen_trieval.go +68 -0
  929. data/ext/vendor/golang.org/x/text/secure/precis/nickname.go +72 -0
  930. data/ext/vendor/golang.org/x/text/secure/precis/options.go +157 -0
  931. data/ext/vendor/golang.org/x/text/secure/precis/profile.go +402 -0
  932. data/ext/vendor/golang.org/x/text/secure/precis/profile_test.go +149 -0
  933. data/ext/vendor/golang.org/x/text/secure/precis/profiles.go +78 -0
  934. data/ext/vendor/golang.org/x/text/secure/precis/tables.go +3887 -0
  935. data/ext/vendor/golang.org/x/text/secure/precis/tables_test.go +69 -0
  936. data/ext/vendor/golang.org/x/text/secure/precis/transformer.go +32 -0
  937. data/ext/vendor/golang.org/x/text/secure/precis/trieval.go +64 -0
  938. data/ext/vendor/golang.org/x/text/transform/examples_test.go +37 -0
  939. data/ext/vendor/golang.org/x/text/transform/transform.go +705 -0
  940. data/ext/vendor/golang.org/x/text/transform/transform_test.go +1317 -0
  941. data/ext/vendor/golang.org/x/text/unicode/bidi/bidi.go +198 -0
  942. data/ext/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  943. data/ext/vendor/golang.org/x/text/unicode/bidi/core.go +1058 -0
  944. data/ext/vendor/golang.org/x/text/unicode/bidi/core_test.go +224 -0
  945. data/ext/vendor/golang.org/x/text/unicode/bidi/gen.go +133 -0
  946. data/ext/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go +57 -0
  947. data/ext/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go +64 -0
  948. data/ext/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  949. data/ext/vendor/golang.org/x/text/unicode/bidi/ranges_test.go +53 -0
  950. data/ext/vendor/golang.org/x/text/unicode/bidi/tables.go +1813 -0
  951. data/ext/vendor/golang.org/x/text/unicode/bidi/tables_test.go +82 -0
  952. data/ext/vendor/golang.org/x/text/unicode/bidi/trieval.go +60 -0
  953. data/ext/vendor/golang.org/x/text/unicode/cldr/base.go +100 -0
  954. data/ext/vendor/golang.org/x/text/unicode/cldr/cldr.go +130 -0
  955. data/ext/vendor/golang.org/x/text/unicode/cldr/cldr_test.go +27 -0
  956. data/ext/vendor/golang.org/x/text/unicode/cldr/collate.go +359 -0
  957. data/ext/vendor/golang.org/x/text/unicode/cldr/collate_test.go +275 -0
  958. data/ext/vendor/golang.org/x/text/unicode/cldr/data_test.go +186 -0
  959. data/ext/vendor/golang.org/x/text/unicode/cldr/decode.go +171 -0
  960. data/ext/vendor/golang.org/x/text/unicode/cldr/examples_test.go +21 -0
  961. data/ext/vendor/golang.org/x/text/unicode/cldr/makexml.go +400 -0
  962. data/ext/vendor/golang.org/x/text/unicode/cldr/resolve.go +602 -0
  963. data/ext/vendor/golang.org/x/text/unicode/cldr/resolve_test.go +368 -0
  964. data/ext/vendor/golang.org/x/text/unicode/cldr/slice.go +144 -0
  965. data/ext/vendor/golang.org/x/text/unicode/cldr/slice_test.go +175 -0
  966. data/ext/vendor/golang.org/x/text/unicode/cldr/xml.go +1487 -0
  967. data/ext/vendor/golang.org/x/text/unicode/doc.go +8 -0
  968. data/ext/vendor/golang.org/x/text/unicode/norm/composition.go +508 -0
  969. data/ext/vendor/golang.org/x/text/unicode/norm/composition_test.go +130 -0
  970. data/ext/vendor/golang.org/x/text/unicode/norm/example_iter_test.go +82 -0
  971. data/ext/vendor/golang.org/x/text/unicode/norm/example_test.go +27 -0
  972. data/ext/vendor/golang.org/x/text/unicode/norm/forminfo.go +259 -0
  973. data/ext/vendor/golang.org/x/text/unicode/norm/forminfo_test.go +54 -0
  974. data/ext/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  975. data/ext/vendor/golang.org/x/text/unicode/norm/iter.go +457 -0
  976. data/ext/vendor/golang.org/x/text/unicode/norm/iter_test.go +98 -0
  977. data/ext/vendor/golang.org/x/text/unicode/norm/maketables.go +976 -0
  978. data/ext/vendor/golang.org/x/text/unicode/norm/norm_test.go +14 -0
  979. data/ext/vendor/golang.org/x/text/unicode/norm/normalize.go +609 -0
  980. data/ext/vendor/golang.org/x/text/unicode/norm/normalize_test.go +1287 -0
  981. data/ext/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  982. data/ext/vendor/golang.org/x/text/unicode/norm/readwriter_test.go +56 -0
  983. data/ext/vendor/golang.org/x/text/unicode/norm/tables.go +7651 -0
  984. data/ext/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  985. data/ext/vendor/golang.org/x/text/unicode/norm/transform_test.go +101 -0
  986. data/ext/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  987. data/ext/vendor/golang.org/x/text/unicode/norm/triegen.go +117 -0
  988. data/ext/vendor/golang.org/x/text/unicode/norm/ucd_test.go +275 -0
  989. data/ext/vendor/golang.org/x/text/unicode/rangetable/gen.go +115 -0
  990. data/ext/vendor/golang.org/x/text/unicode/rangetable/merge.go +260 -0
  991. data/ext/vendor/golang.org/x/text/unicode/rangetable/merge_test.go +184 -0
  992. data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable.go +70 -0
  993. data/ext/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go +55 -0
  994. data/ext/vendor/golang.org/x/text/unicode/rangetable/tables.go +6376 -0
  995. data/ext/vendor/golang.org/x/text/unicode/runenames/bits.go +59 -0
  996. data/ext/vendor/golang.org/x/text/unicode/runenames/example_test.go +118 -0
  997. data/ext/vendor/golang.org/x/text/unicode/runenames/gen.go +195 -0
  998. data/ext/vendor/golang.org/x/text/unicode/runenames/gen_bits.go +63 -0
  999. data/ext/vendor/golang.org/x/text/unicode/runenames/runenames.go +48 -0
  1000. data/ext/vendor/golang.org/x/text/unicode/runenames/runenames_test.go +46 -0
  1001. data/ext/vendor/golang.org/x/text/unicode/runenames/tables.go +15514 -0
  1002. data/ext/vendor/golang.org/x/text/width/common_test.go +92 -0
  1003. data/ext/vendor/golang.org/x/text/width/example_test.go +52 -0
  1004. data/ext/vendor/golang.org/x/text/width/gen.go +115 -0
  1005. data/ext/vendor/golang.org/x/text/width/gen_common.go +96 -0
  1006. data/ext/vendor/golang.org/x/text/width/gen_trieval.go +34 -0
  1007. data/ext/vendor/golang.org/x/text/width/kind_string.go +16 -0
  1008. data/ext/vendor/golang.org/x/text/width/runes_test.go +461 -0
  1009. data/ext/vendor/golang.org/x/text/width/tables.go +1316 -0
  1010. data/ext/vendor/golang.org/x/text/width/tables_test.go +59 -0
  1011. data/ext/vendor/golang.org/x/text/width/transform.go +239 -0
  1012. data/ext/vendor/golang.org/x/text/width/transform_test.go +701 -0
  1013. data/ext/vendor/golang.org/x/text/width/trieval.go +30 -0
  1014. data/ext/vendor/golang.org/x/text/width/width.go +206 -0
  1015. data/lib/ires/version.rb +1 -1
  1016. data/shared/darwin/ires.so +0 -0
  1017. data/shared/linux/ires.so +0 -0
  1018. metadata +1011 -23
  1019. data/ext/operate/image.go +0 -176
  1020. data/ext/util/uri/uri.go +0 -105
  1021. data/ext/vendor/github.com/satori/go.uuid/README.md +0 -65
  1022. data/ext/vendor/github.com/satori/go.uuid/benchmarks_test.go +0 -121
  1023. data/ext/vendor/github.com/satori/go.uuid/uuid.go +0 -488
  1024. data/ext/vendor/github.com/satori/go.uuid/uuid_test.go +0 -633
@@ -0,0 +1,1317 @@
1
+ // Copyright 2013 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package transform
6
+
7
+ import (
8
+ "bytes"
9
+ "errors"
10
+ "fmt"
11
+ "io/ioutil"
12
+ "strconv"
13
+ "strings"
14
+ "testing"
15
+ "time"
16
+ "unicode/utf8"
17
+
18
+ "golang.org/x/text/internal/testtext"
19
+ )
20
+
21
+ type lowerCaseASCII struct{ NopResetter }
22
+
23
+ func (lowerCaseASCII) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
24
+ n := len(src)
25
+ if n > len(dst) {
26
+ n, err = len(dst), ErrShortDst
27
+ }
28
+ for i, c := range src[:n] {
29
+ if 'A' <= c && c <= 'Z' {
30
+ c += 'a' - 'A'
31
+ }
32
+ dst[i] = c
33
+ }
34
+ return n, n, err
35
+ }
36
+
37
+ // lowerCaseASCIILookahead lowercases the string and reports ErrShortSrc as long
38
+ // as the input is not atEOF.
39
+ type lowerCaseASCIILookahead struct{ NopResetter }
40
+
41
+ func (lowerCaseASCIILookahead) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
42
+ n := len(src)
43
+ if n > len(dst) {
44
+ n, err = len(dst), ErrShortDst
45
+ }
46
+ for i, c := range src[:n] {
47
+ if 'A' <= c && c <= 'Z' {
48
+ c += 'a' - 'A'
49
+ }
50
+ dst[i] = c
51
+ }
52
+ if !atEOF {
53
+ err = ErrShortSrc
54
+ }
55
+ return n, n, err
56
+ }
57
+
58
+ var errYouMentionedX = errors.New("you mentioned X")
59
+
60
+ type dontMentionX struct{ NopResetter }
61
+
62
+ func (dontMentionX) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
63
+ n := len(src)
64
+ if n > len(dst) {
65
+ n, err = len(dst), ErrShortDst
66
+ }
67
+ for i, c := range src[:n] {
68
+ if c == 'X' {
69
+ return i, i, errYouMentionedX
70
+ }
71
+ dst[i] = c
72
+ }
73
+ return n, n, err
74
+ }
75
+
76
+ var errAtEnd = errors.New("error after all text")
77
+
78
+ type errorAtEnd struct{ NopResetter }
79
+
80
+ func (errorAtEnd) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
81
+ n := copy(dst, src)
82
+ if n < len(src) {
83
+ return n, n, ErrShortDst
84
+ }
85
+ if atEOF {
86
+ return n, n, errAtEnd
87
+ }
88
+ return n, n, nil
89
+ }
90
+
91
+ type replaceWithConstant struct {
92
+ replacement string
93
+ written int
94
+ }
95
+
96
+ func (t *replaceWithConstant) Reset() {
97
+ t.written = 0
98
+ }
99
+
100
+ func (t *replaceWithConstant) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
101
+ if atEOF {
102
+ nDst = copy(dst, t.replacement[t.written:])
103
+ t.written += nDst
104
+ if t.written < len(t.replacement) {
105
+ err = ErrShortDst
106
+ }
107
+ }
108
+ return nDst, len(src), err
109
+ }
110
+
111
+ type addAnXAtTheEnd struct{ NopResetter }
112
+
113
+ func (addAnXAtTheEnd) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
114
+ n := copy(dst, src)
115
+ if n < len(src) {
116
+ return n, n, ErrShortDst
117
+ }
118
+ if !atEOF {
119
+ return n, n, nil
120
+ }
121
+ if len(dst) == n {
122
+ return n, n, ErrShortDst
123
+ }
124
+ dst[n] = 'X'
125
+ return n + 1, n, nil
126
+ }
127
+
128
+ // doublerAtEOF is a strange Transformer that transforms "this" to "tthhiiss",
129
+ // but only if atEOF is true.
130
+ type doublerAtEOF struct{ NopResetter }
131
+
132
+ func (doublerAtEOF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
133
+ if !atEOF {
134
+ return 0, 0, ErrShortSrc
135
+ }
136
+ for i, c := range src {
137
+ if 2*i+2 >= len(dst) {
138
+ return 2 * i, i, ErrShortDst
139
+ }
140
+ dst[2*i+0] = c
141
+ dst[2*i+1] = c
142
+ }
143
+ return 2 * len(src), len(src), nil
144
+ }
145
+
146
+ // rleDecode and rleEncode implement a toy run-length encoding: "aabbbbbbbbbb"
147
+ // is encoded as "2a10b". The decoding is assumed to not contain any numbers.
148
+
149
+ type rleDecode struct{ NopResetter }
150
+
151
+ func (rleDecode) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
152
+ loop:
153
+ for len(src) > 0 {
154
+ n := 0
155
+ for i, c := range src {
156
+ if '0' <= c && c <= '9' {
157
+ n = 10*n + int(c-'0')
158
+ continue
159
+ }
160
+ if i == 0 {
161
+ return nDst, nSrc, errors.New("rleDecode: bad input")
162
+ }
163
+ if n > len(dst) {
164
+ return nDst, nSrc, ErrShortDst
165
+ }
166
+ for j := 0; j < n; j++ {
167
+ dst[j] = c
168
+ }
169
+ dst, src = dst[n:], src[i+1:]
170
+ nDst, nSrc = nDst+n, nSrc+i+1
171
+ continue loop
172
+ }
173
+ if atEOF {
174
+ return nDst, nSrc, errors.New("rleDecode: bad input")
175
+ }
176
+ return nDst, nSrc, ErrShortSrc
177
+ }
178
+ return nDst, nSrc, nil
179
+ }
180
+
181
+ type rleEncode struct {
182
+ NopResetter
183
+
184
+ // allowStutter means that "xxxxxxxx" can be encoded as "5x3x"
185
+ // instead of always as "8x".
186
+ allowStutter bool
187
+ }
188
+
189
+ func (e rleEncode) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
190
+ for len(src) > 0 {
191
+ n, c0 := len(src), src[0]
192
+ for i, c := range src[1:] {
193
+ if c != c0 {
194
+ n = i + 1
195
+ break
196
+ }
197
+ }
198
+ if n == len(src) && !atEOF && !e.allowStutter {
199
+ return nDst, nSrc, ErrShortSrc
200
+ }
201
+ s := strconv.Itoa(n)
202
+ if len(s) >= len(dst) {
203
+ return nDst, nSrc, ErrShortDst
204
+ }
205
+ copy(dst, s)
206
+ dst[len(s)] = c0
207
+ dst, src = dst[len(s)+1:], src[n:]
208
+ nDst, nSrc = nDst+len(s)+1, nSrc+n
209
+ }
210
+ return nDst, nSrc, nil
211
+ }
212
+
213
+ // trickler consumes all input bytes, but writes a single byte at a time to dst.
214
+ type trickler []byte
215
+
216
+ func (t *trickler) Reset() {
217
+ *t = nil
218
+ }
219
+
220
+ func (t *trickler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
221
+ *t = append(*t, src...)
222
+ if len(*t) == 0 {
223
+ return 0, 0, nil
224
+ }
225
+ if len(dst) == 0 {
226
+ return 0, len(src), ErrShortDst
227
+ }
228
+ dst[0] = (*t)[0]
229
+ *t = (*t)[1:]
230
+ if len(*t) > 0 {
231
+ err = ErrShortDst
232
+ }
233
+ return 1, len(src), err
234
+ }
235
+
236
+ // delayedTrickler is like trickler, but delays writing output to dst. This is
237
+ // highly unlikely to be relevant in practice, but it seems like a good idea
238
+ // to have some tolerance as long as progress can be detected.
239
+ type delayedTrickler []byte
240
+
241
+ func (t *delayedTrickler) Reset() {
242
+ *t = nil
243
+ }
244
+
245
+ func (t *delayedTrickler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
246
+ if len(*t) > 0 && len(dst) > 0 {
247
+ dst[0] = (*t)[0]
248
+ *t = (*t)[1:]
249
+ nDst = 1
250
+ }
251
+ *t = append(*t, src...)
252
+ if len(*t) > 0 {
253
+ err = ErrShortDst
254
+ }
255
+ return nDst, len(src), err
256
+ }
257
+
258
+ type testCase struct {
259
+ desc string
260
+ t Transformer
261
+ src string
262
+ dstSize int
263
+ srcSize int
264
+ ioSize int
265
+ wantStr string
266
+ wantErr error
267
+ wantIter int // number of iterations taken; 0 means we don't care.
268
+ }
269
+
270
+ func (t testCase) String() string {
271
+ return tstr(t.t) + "; " + t.desc
272
+ }
273
+
274
+ func tstr(t Transformer) string {
275
+ if stringer, ok := t.(fmt.Stringer); ok {
276
+ return stringer.String()
277
+ }
278
+ s := fmt.Sprintf("%T", t)
279
+ return s[1+strings.Index(s, "."):]
280
+ }
281
+
282
+ func (c chain) String() string {
283
+ buf := &bytes.Buffer{}
284
+ buf.WriteString("Chain(")
285
+ for i, l := range c.link[:len(c.link)-1] {
286
+ if i != 0 {
287
+ fmt.Fprint(buf, ", ")
288
+ }
289
+ buf.WriteString(tstr(l.t))
290
+ }
291
+ buf.WriteString(")")
292
+ return buf.String()
293
+ }
294
+
295
+ var testCases = []testCase{
296
+ {
297
+ desc: "empty",
298
+ t: lowerCaseASCII{},
299
+ src: "",
300
+ dstSize: 100,
301
+ srcSize: 100,
302
+ wantStr: "",
303
+ },
304
+
305
+ {
306
+ desc: "basic",
307
+ t: lowerCaseASCII{},
308
+ src: "Hello WORLD.",
309
+ dstSize: 100,
310
+ srcSize: 100,
311
+ wantStr: "hello world.",
312
+ },
313
+
314
+ {
315
+ desc: "small dst",
316
+ t: lowerCaseASCII{},
317
+ src: "Hello WORLD.",
318
+ dstSize: 3,
319
+ srcSize: 100,
320
+ wantStr: "hello world.",
321
+ },
322
+
323
+ {
324
+ desc: "small src",
325
+ t: lowerCaseASCII{},
326
+ src: "Hello WORLD.",
327
+ dstSize: 100,
328
+ srcSize: 4,
329
+ wantStr: "hello world.",
330
+ },
331
+
332
+ {
333
+ desc: "small buffers",
334
+ t: lowerCaseASCII{},
335
+ src: "Hello WORLD.",
336
+ dstSize: 3,
337
+ srcSize: 4,
338
+ wantStr: "hello world.",
339
+ },
340
+
341
+ {
342
+ desc: "very small buffers",
343
+ t: lowerCaseASCII{},
344
+ src: "Hello WORLD.",
345
+ dstSize: 1,
346
+ srcSize: 1,
347
+ wantStr: "hello world.",
348
+ },
349
+
350
+ {
351
+ desc: "small dst with lookahead",
352
+ t: lowerCaseASCIILookahead{},
353
+ src: "Hello WORLD.",
354
+ dstSize: 3,
355
+ srcSize: 100,
356
+ wantStr: "hello world.",
357
+ },
358
+
359
+ {
360
+ desc: "small src with lookahead",
361
+ t: lowerCaseASCIILookahead{},
362
+ src: "Hello WORLD.",
363
+ dstSize: 100,
364
+ srcSize: 4,
365
+ wantStr: "hello world.",
366
+ },
367
+
368
+ {
369
+ desc: "small buffers with lookahead",
370
+ t: lowerCaseASCIILookahead{},
371
+ src: "Hello WORLD.",
372
+ dstSize: 3,
373
+ srcSize: 4,
374
+ wantStr: "hello world.",
375
+ },
376
+
377
+ {
378
+ desc: "very small buffers with lookahead",
379
+ t: lowerCaseASCIILookahead{},
380
+ src: "Hello WORLD.",
381
+ dstSize: 1,
382
+ srcSize: 2,
383
+ wantStr: "hello world.",
384
+ },
385
+
386
+ {
387
+ desc: "user error",
388
+ t: dontMentionX{},
389
+ src: "The First Rule of Transform Club: don't mention Mister X, ever.",
390
+ dstSize: 100,
391
+ srcSize: 100,
392
+ wantStr: "The First Rule of Transform Club: don't mention Mister ",
393
+ wantErr: errYouMentionedX,
394
+ },
395
+
396
+ {
397
+ desc: "user error at end",
398
+ t: errorAtEnd{},
399
+ src: "All goes well until it doesn't.",
400
+ dstSize: 100,
401
+ srcSize: 100,
402
+ wantStr: "All goes well until it doesn't.",
403
+ wantErr: errAtEnd,
404
+ },
405
+
406
+ {
407
+ desc: "user error at end, incremental",
408
+ t: errorAtEnd{},
409
+ src: "All goes well until it doesn't.",
410
+ dstSize: 10,
411
+ srcSize: 10,
412
+ wantStr: "All goes well until it doesn't.",
413
+ wantErr: errAtEnd,
414
+ },
415
+
416
+ {
417
+ desc: "replace entire non-empty string with one byte",
418
+ t: &replaceWithConstant{replacement: "X"},
419
+ src: "none of this will be copied",
420
+ dstSize: 1,
421
+ srcSize: 10,
422
+ wantStr: "X",
423
+ },
424
+
425
+ {
426
+ desc: "replace entire empty string with one byte",
427
+ t: &replaceWithConstant{replacement: "X"},
428
+ src: "",
429
+ dstSize: 1,
430
+ srcSize: 10,
431
+ wantStr: "X",
432
+ },
433
+
434
+ {
435
+ desc: "replace entire empty string with seven bytes",
436
+ t: &replaceWithConstant{replacement: "ABCDEFG"},
437
+ src: "",
438
+ dstSize: 3,
439
+ srcSize: 10,
440
+ wantStr: "ABCDEFG",
441
+ },
442
+
443
+ {
444
+ desc: "add an X (initialBufSize-1)",
445
+ t: addAnXAtTheEnd{},
446
+ src: aaa[:initialBufSize-1],
447
+ dstSize: 10,
448
+ srcSize: 10,
449
+ wantStr: aaa[:initialBufSize-1] + "X",
450
+ },
451
+
452
+ {
453
+ desc: "add an X (initialBufSize+0)",
454
+ t: addAnXAtTheEnd{},
455
+ src: aaa[:initialBufSize+0],
456
+ dstSize: 10,
457
+ srcSize: 10,
458
+ wantStr: aaa[:initialBufSize+0] + "X",
459
+ },
460
+
461
+ {
462
+ desc: "add an X (initialBufSize+1)",
463
+ t: addAnXAtTheEnd{},
464
+ src: aaa[:initialBufSize+1],
465
+ dstSize: 10,
466
+ srcSize: 10,
467
+ wantStr: aaa[:initialBufSize+1] + "X",
468
+ },
469
+
470
+ {
471
+ desc: "small buffers",
472
+ t: dontMentionX{},
473
+ src: "The First Rule of Transform Club: don't mention Mister X, ever.",
474
+ dstSize: 10,
475
+ srcSize: 10,
476
+ wantStr: "The First Rule of Transform Club: don't mention Mister ",
477
+ wantErr: errYouMentionedX,
478
+ },
479
+
480
+ {
481
+ desc: "very small buffers",
482
+ t: dontMentionX{},
483
+ src: "The First Rule of Transform Club: don't mention Mister X, ever.",
484
+ dstSize: 1,
485
+ srcSize: 1,
486
+ wantStr: "The First Rule of Transform Club: don't mention Mister ",
487
+ wantErr: errYouMentionedX,
488
+ },
489
+
490
+ {
491
+ desc: "only transform at EOF",
492
+ t: doublerAtEOF{},
493
+ src: "this",
494
+ dstSize: 100,
495
+ srcSize: 100,
496
+ wantStr: "tthhiiss",
497
+ },
498
+
499
+ {
500
+ desc: "basic",
501
+ t: rleDecode{},
502
+ src: "1a2b3c10d11e0f1g",
503
+ dstSize: 100,
504
+ srcSize: 100,
505
+ wantStr: "abbcccddddddddddeeeeeeeeeeeg",
506
+ },
507
+
508
+ {
509
+ desc: "long",
510
+ t: rleDecode{},
511
+ src: "12a23b34c45d56e99z",
512
+ dstSize: 100,
513
+ srcSize: 100,
514
+ wantStr: strings.Repeat("a", 12) +
515
+ strings.Repeat("b", 23) +
516
+ strings.Repeat("c", 34) +
517
+ strings.Repeat("d", 45) +
518
+ strings.Repeat("e", 56) +
519
+ strings.Repeat("z", 99),
520
+ },
521
+
522
+ {
523
+ desc: "tight buffers",
524
+ t: rleDecode{},
525
+ src: "1a2b3c10d11e0f1g",
526
+ dstSize: 11,
527
+ srcSize: 3,
528
+ wantStr: "abbcccddddddddddeeeeeeeeeeeg",
529
+ },
530
+
531
+ {
532
+ desc: "short dst",
533
+ t: rleDecode{},
534
+ src: "1a2b3c10d11e0f1g",
535
+ dstSize: 10,
536
+ srcSize: 3,
537
+ wantStr: "abbcccdddddddddd",
538
+ wantErr: ErrShortDst,
539
+ },
540
+
541
+ {
542
+ desc: "short src",
543
+ t: rleDecode{},
544
+ src: "1a2b3c10d11e0f1g",
545
+ dstSize: 11,
546
+ srcSize: 2,
547
+ ioSize: 2,
548
+ wantStr: "abbccc",
549
+ wantErr: ErrShortSrc,
550
+ },
551
+
552
+ {
553
+ desc: "basic",
554
+ t: rleEncode{},
555
+ src: "abbcccddddddddddeeeeeeeeeeeg",
556
+ dstSize: 100,
557
+ srcSize: 100,
558
+ wantStr: "1a2b3c10d11e1g",
559
+ },
560
+
561
+ {
562
+ desc: "long",
563
+ t: rleEncode{},
564
+ src: strings.Repeat("a", 12) +
565
+ strings.Repeat("b", 23) +
566
+ strings.Repeat("c", 34) +
567
+ strings.Repeat("d", 45) +
568
+ strings.Repeat("e", 56) +
569
+ strings.Repeat("z", 99),
570
+ dstSize: 100,
571
+ srcSize: 100,
572
+ wantStr: "12a23b34c45d56e99z",
573
+ },
574
+
575
+ {
576
+ desc: "tight buffers",
577
+ t: rleEncode{},
578
+ src: "abbcccddddddddddeeeeeeeeeeeg",
579
+ dstSize: 3,
580
+ srcSize: 12,
581
+ wantStr: "1a2b3c10d11e1g",
582
+ },
583
+
584
+ {
585
+ desc: "short dst",
586
+ t: rleEncode{},
587
+ src: "abbcccddddddddddeeeeeeeeeeeg",
588
+ dstSize: 2,
589
+ srcSize: 12,
590
+ wantStr: "1a2b3c",
591
+ wantErr: ErrShortDst,
592
+ },
593
+
594
+ {
595
+ desc: "short src",
596
+ t: rleEncode{},
597
+ src: "abbcccddddddddddeeeeeeeeeeeg",
598
+ dstSize: 3,
599
+ srcSize: 11,
600
+ ioSize: 11,
601
+ wantStr: "1a2b3c10d",
602
+ wantErr: ErrShortSrc,
603
+ },
604
+
605
+ {
606
+ desc: "allowStutter = false",
607
+ t: rleEncode{allowStutter: false},
608
+ src: "aaaabbbbbbbbccccddddd",
609
+ dstSize: 10,
610
+ srcSize: 10,
611
+ wantStr: "4a8b4c5d",
612
+ },
613
+
614
+ {
615
+ desc: "allowStutter = true",
616
+ t: rleEncode{allowStutter: true},
617
+ src: "aaaabbbbbbbbccccddddd",
618
+ dstSize: 10,
619
+ srcSize: 10,
620
+ ioSize: 10,
621
+ wantStr: "4a6b2b4c4d1d",
622
+ },
623
+
624
+ {
625
+ desc: "trickler",
626
+ t: &trickler{},
627
+ src: "abcdefghijklm",
628
+ dstSize: 3,
629
+ srcSize: 15,
630
+ wantStr: "abcdefghijklm",
631
+ },
632
+
633
+ {
634
+ desc: "delayedTrickler",
635
+ t: &delayedTrickler{},
636
+ src: "abcdefghijklm",
637
+ dstSize: 3,
638
+ srcSize: 15,
639
+ wantStr: "abcdefghijklm",
640
+ },
641
+ }
642
+
643
+ func TestReader(t *testing.T) {
644
+ for _, tc := range testCases {
645
+ testtext.Run(t, tc.desc, func(t *testing.T) {
646
+ r := NewReader(strings.NewReader(tc.src), tc.t)
647
+ // Differently sized dst and src buffers are not part of the
648
+ // exported API. We override them manually.
649
+ r.dst = make([]byte, tc.dstSize)
650
+ r.src = make([]byte, tc.srcSize)
651
+ got, err := ioutil.ReadAll(r)
652
+ str := string(got)
653
+ if str != tc.wantStr || err != tc.wantErr {
654
+ t.Errorf("\ngot %q, %v\nwant %q, %v", str, err, tc.wantStr, tc.wantErr)
655
+ }
656
+ })
657
+ }
658
+ }
659
+
660
+ func TestWriter(t *testing.T) {
661
+ tests := append(testCases, chainTests()...)
662
+ for _, tc := range tests {
663
+ sizes := []int{1, 2, 3, 4, 5, 10, 100, 1000}
664
+ if tc.ioSize > 0 {
665
+ sizes = []int{tc.ioSize}
666
+ }
667
+ for _, sz := range sizes {
668
+ testtext.Run(t, fmt.Sprintf("%s/%d", tc.desc, sz), func(t *testing.T) {
669
+ bb := &bytes.Buffer{}
670
+ w := NewWriter(bb, tc.t)
671
+ // Differently sized dst and src buffers are not part of the
672
+ // exported API. We override them manually.
673
+ w.dst = make([]byte, tc.dstSize)
674
+ w.src = make([]byte, tc.srcSize)
675
+ src := make([]byte, sz)
676
+ var err error
677
+ for b := tc.src; len(b) > 0 && err == nil; {
678
+ n := copy(src, b)
679
+ b = b[n:]
680
+ m := 0
681
+ m, err = w.Write(src[:n])
682
+ if m != n && err == nil {
683
+ t.Errorf("did not consume all bytes %d < %d", m, n)
684
+ }
685
+ }
686
+ if err == nil {
687
+ err = w.Close()
688
+ }
689
+ str := bb.String()
690
+ if str != tc.wantStr || err != tc.wantErr {
691
+ t.Errorf("\ngot %q, %v\nwant %q, %v", str, err, tc.wantStr, tc.wantErr)
692
+ }
693
+ })
694
+ }
695
+ }
696
+ }
697
+
698
+ func TestNop(t *testing.T) {
699
+ testCases := []struct {
700
+ str string
701
+ dstSize int
702
+ err error
703
+ }{
704
+ {"", 0, nil},
705
+ {"", 10, nil},
706
+ {"a", 0, ErrShortDst},
707
+ {"a", 1, nil},
708
+ {"a", 10, nil},
709
+ }
710
+ for i, tc := range testCases {
711
+ dst := make([]byte, tc.dstSize)
712
+ nDst, nSrc, err := Nop.Transform(dst, []byte(tc.str), true)
713
+ want := tc.str
714
+ if tc.dstSize < len(want) {
715
+ want = want[:tc.dstSize]
716
+ }
717
+ if got := string(dst[:nDst]); got != want || err != tc.err || nSrc != nDst {
718
+ t.Errorf("%d:\ngot %q, %d, %v\nwant %q, %d, %v", i, got, nSrc, err, want, nDst, tc.err)
719
+ }
720
+ }
721
+ }
722
+
723
+ func TestDiscard(t *testing.T) {
724
+ testCases := []struct {
725
+ str string
726
+ dstSize int
727
+ }{
728
+ {"", 0},
729
+ {"", 10},
730
+ {"a", 0},
731
+ {"ab", 10},
732
+ }
733
+ for i, tc := range testCases {
734
+ nDst, nSrc, err := Discard.Transform(make([]byte, tc.dstSize), []byte(tc.str), true)
735
+ if nDst != 0 || nSrc != len(tc.str) || err != nil {
736
+ t.Errorf("%d:\ngot %q, %d, %v\nwant 0, %d, nil", i, nDst, nSrc, err, len(tc.str))
737
+ }
738
+ }
739
+ }
740
+
741
+ // mkChain creates a Chain transformer. x must be alternating between transformer
742
+ // and bufSize, like T, (sz, T)*
743
+ func mkChain(x ...interface{}) *chain {
744
+ t := []Transformer{}
745
+ for i := 0; i < len(x); i += 2 {
746
+ t = append(t, x[i].(Transformer))
747
+ }
748
+ c := Chain(t...).(*chain)
749
+ for i, j := 1, 1; i < len(x); i, j = i+2, j+1 {
750
+ c.link[j].b = make([]byte, x[i].(int))
751
+ }
752
+ return c
753
+ }
754
+
755
+ func chainTests() []testCase {
756
+ return []testCase{
757
+ {
758
+ desc: "nil error",
759
+ t: mkChain(rleEncode{}, 100, lowerCaseASCII{}),
760
+ src: "ABB",
761
+ dstSize: 100,
762
+ srcSize: 100,
763
+ wantStr: "1a2b",
764
+ wantErr: nil,
765
+ wantIter: 1,
766
+ },
767
+
768
+ {
769
+ desc: "short dst buffer",
770
+ t: mkChain(lowerCaseASCII{}, 3, rleDecode{}),
771
+ src: "1a2b3c10d11e0f1g",
772
+ dstSize: 10,
773
+ srcSize: 3,
774
+ wantStr: "abbcccdddddddddd",
775
+ wantErr: ErrShortDst,
776
+ },
777
+
778
+ {
779
+ desc: "short internal dst buffer",
780
+ t: mkChain(lowerCaseASCII{}, 3, rleDecode{}, 10, Nop),
781
+ src: "1a2b3c10d11e0f1g",
782
+ dstSize: 100,
783
+ srcSize: 3,
784
+ wantStr: "abbcccdddddddddd",
785
+ wantErr: errShortInternal,
786
+ },
787
+
788
+ {
789
+ desc: "short internal dst buffer from input",
790
+ t: mkChain(rleDecode{}, 10, Nop),
791
+ src: "1a2b3c10d11e0f1g",
792
+ dstSize: 100,
793
+ srcSize: 3,
794
+ wantStr: "abbcccdddddddddd",
795
+ wantErr: errShortInternal,
796
+ },
797
+
798
+ {
799
+ desc: "empty short internal dst buffer",
800
+ t: mkChain(lowerCaseASCII{}, 3, rleDecode{}, 10, Nop),
801
+ src: "4a7b11e0f1g",
802
+ dstSize: 100,
803
+ srcSize: 3,
804
+ wantStr: "aaaabbbbbbb",
805
+ wantErr: errShortInternal,
806
+ },
807
+
808
+ {
809
+ desc: "empty short internal dst buffer from input",
810
+ t: mkChain(rleDecode{}, 10, Nop),
811
+ src: "4a7b11e0f1g",
812
+ dstSize: 100,
813
+ srcSize: 3,
814
+ wantStr: "aaaabbbbbbb",
815
+ wantErr: errShortInternal,
816
+ },
817
+
818
+ {
819
+ desc: "short internal src buffer after full dst buffer",
820
+ t: mkChain(Nop, 5, rleEncode{}, 10, Nop),
821
+ src: "cccccddddd",
822
+ dstSize: 100,
823
+ srcSize: 100,
824
+ wantStr: "",
825
+ wantErr: errShortInternal,
826
+ wantIter: 1,
827
+ },
828
+
829
+ {
830
+ desc: "short internal src buffer after short dst buffer; test lastFull",
831
+ t: mkChain(rleDecode{}, 5, rleEncode{}, 4, Nop),
832
+ src: "2a1b4c6d",
833
+ dstSize: 100,
834
+ srcSize: 100,
835
+ wantStr: "2a1b",
836
+ wantErr: errShortInternal,
837
+ },
838
+
839
+ {
840
+ desc: "short internal src buffer after successful complete fill",
841
+ t: mkChain(Nop, 3, rleDecode{}),
842
+ src: "123a4b",
843
+ dstSize: 4,
844
+ srcSize: 3,
845
+ wantStr: "",
846
+ wantErr: errShortInternal,
847
+ wantIter: 1,
848
+ },
849
+
850
+ {
851
+ desc: "short internal src buffer after short dst buffer; test lastFull",
852
+ t: mkChain(rleDecode{}, 5, rleEncode{}),
853
+ src: "2a1b4c6d",
854
+ dstSize: 4,
855
+ srcSize: 100,
856
+ wantStr: "2a1b",
857
+ wantErr: errShortInternal,
858
+ },
859
+
860
+ {
861
+ desc: "short src buffer",
862
+ t: mkChain(rleEncode{}, 5, Nop),
863
+ src: "abbcccddddeeeee",
864
+ dstSize: 4,
865
+ srcSize: 4,
866
+ ioSize: 4,
867
+ wantStr: "1a2b3c",
868
+ wantErr: ErrShortSrc,
869
+ },
870
+
871
+ {
872
+ desc: "process all in one go",
873
+ t: mkChain(rleEncode{}, 5, Nop),
874
+ src: "abbcccddddeeeeeffffff",
875
+ dstSize: 100,
876
+ srcSize: 100,
877
+ wantStr: "1a2b3c4d5e6f",
878
+ wantErr: nil,
879
+ wantIter: 1,
880
+ },
881
+
882
+ {
883
+ desc: "complete processing downstream after error",
884
+ t: mkChain(dontMentionX{}, 2, rleDecode{}, 5, Nop),
885
+ src: "3a4b5eX",
886
+ dstSize: 100,
887
+ srcSize: 100,
888
+ ioSize: 100,
889
+ wantStr: "aaabbbbeeeee",
890
+ wantErr: errYouMentionedX,
891
+ },
892
+
893
+ {
894
+ desc: "return downstream fatal errors first (followed by short dst)",
895
+ t: mkChain(dontMentionX{}, 8, rleDecode{}, 4, Nop),
896
+ src: "3a4b5eX",
897
+ dstSize: 100,
898
+ srcSize: 100,
899
+ ioSize: 100,
900
+ wantStr: "aaabbbb",
901
+ wantErr: errShortInternal,
902
+ },
903
+
904
+ {
905
+ desc: "return downstream fatal errors first (followed by short src)",
906
+ t: mkChain(dontMentionX{}, 5, Nop, 1, rleDecode{}),
907
+ src: "1a5bX",
908
+ dstSize: 100,
909
+ srcSize: 100,
910
+ ioSize: 100,
911
+ wantStr: "",
912
+ wantErr: errShortInternal,
913
+ },
914
+
915
+ {
916
+ desc: "short internal",
917
+ t: mkChain(Nop, 11, rleEncode{}, 3, Nop),
918
+ src: "abbcccddddddddddeeeeeeeeeeeg",
919
+ dstSize: 3,
920
+ srcSize: 100,
921
+ wantStr: "1a2b3c10d",
922
+ wantErr: errShortInternal,
923
+ },
924
+ }
925
+ }
926
+
927
+ func doTransform(tc testCase) (res string, iter int, err error) {
928
+ tc.t.Reset()
929
+ dst := make([]byte, tc.dstSize)
930
+ out, in := make([]byte, 0, 2*len(tc.src)), []byte(tc.src)
931
+ for {
932
+ iter++
933
+ src, atEOF := in, true
934
+ if len(src) > tc.srcSize {
935
+ src, atEOF = src[:tc.srcSize], false
936
+ }
937
+ nDst, nSrc, err := tc.t.Transform(dst, src, atEOF)
938
+ out = append(out, dst[:nDst]...)
939
+ in = in[nSrc:]
940
+ switch {
941
+ case err == nil && len(in) != 0:
942
+ case err == ErrShortSrc && nSrc > 0:
943
+ case err == ErrShortDst && (nDst > 0 || nSrc > 0):
944
+ default:
945
+ return string(out), iter, err
946
+ }
947
+ }
948
+ }
949
+
950
+ func TestChain(t *testing.T) {
951
+ if c, ok := Chain().(nop); !ok {
952
+ t.Errorf("empty chain: %v; want Nop", c)
953
+ }
954
+
955
+ // Test Chain for a single Transformer.
956
+ for _, tc := range testCases {
957
+ tc.t = Chain(tc.t)
958
+ str, _, err := doTransform(tc)
959
+ if str != tc.wantStr || err != tc.wantErr {
960
+ t.Errorf("%s:\ngot %q, %v\nwant %q, %v", tc, str, err, tc.wantStr, tc.wantErr)
961
+ }
962
+ }
963
+
964
+ tests := chainTests()
965
+ sizes := []int{1, 2, 3, 4, 5, 7, 10, 100, 1000}
966
+ addTest := func(tc testCase, t *chain) {
967
+ if t.link[0].t != tc.t && tc.wantErr == ErrShortSrc {
968
+ tc.wantErr = errShortInternal
969
+ }
970
+ if t.link[len(t.link)-2].t != tc.t && tc.wantErr == ErrShortDst {
971
+ tc.wantErr = errShortInternal
972
+ }
973
+ tc.t = t
974
+ tests = append(tests, tc)
975
+ }
976
+ for _, tc := range testCases {
977
+ for _, sz := range sizes {
978
+ tt := tc
979
+ tt.dstSize = sz
980
+ addTest(tt, mkChain(tc.t, tc.dstSize, Nop))
981
+ addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 2, Nop))
982
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop))
983
+ if sz >= tc.dstSize && (tc.wantErr != ErrShortDst || sz == tc.dstSize) {
984
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t))
985
+ addTest(tt, mkChain(Nop, 100, Nop, tc.srcSize, tc.t))
986
+ }
987
+ }
988
+ }
989
+ for _, tc := range testCases {
990
+ tt := tc
991
+ tt.dstSize = 1
992
+ tt.wantStr = ""
993
+ addTest(tt, mkChain(tc.t, tc.dstSize, Discard))
994
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Discard))
995
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, tc.dstSize, Discard))
996
+ }
997
+ for _, tc := range testCases {
998
+ tt := tc
999
+ tt.dstSize = 100
1000
+ tt.wantStr = strings.Replace(tc.src, "0f", "", -1)
1001
+ // Chain encoders and decoders.
1002
+ if _, ok := tc.t.(rleEncode); ok && tc.wantErr == nil {
1003
+ addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 1000, rleDecode{}))
1004
+ addTest(tt, mkChain(tc.t, tc.dstSize, Nop, tc.dstSize, rleDecode{}))
1005
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleDecode{}))
1006
+ // decoding needs larger destinations
1007
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, rleDecode{}, 100, Nop))
1008
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleDecode{}, 100, Nop))
1009
+ } else if _, ok := tc.t.(rleDecode); ok && tc.wantErr == nil {
1010
+ // The internal buffer size may need to be the sum of the maximum segment
1011
+ // size of the two encoders!
1012
+ addTest(tt, mkChain(tc.t, 2*tc.dstSize, rleEncode{}))
1013
+ addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 101, rleEncode{}))
1014
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleEncode{}))
1015
+ addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 200, rleEncode{}, 100, Nop))
1016
+ }
1017
+ }
1018
+ for _, tc := range tests {
1019
+ str, iter, err := doTransform(tc)
1020
+ mi := tc.wantIter != 0 && tc.wantIter != iter
1021
+ if str != tc.wantStr || err != tc.wantErr || mi {
1022
+ t.Errorf("%s:\ngot iter:%d, %q, %v\nwant iter:%d, %q, %v", tc, iter, str, err, tc.wantIter, tc.wantStr, tc.wantErr)
1023
+ }
1024
+ break
1025
+ }
1026
+ }
1027
+
1028
+ func TestRemoveFunc(t *testing.T) {
1029
+ filter := RemoveFunc(func(r rune) bool {
1030
+ return strings.IndexRune("ab\u0300\u1234,", r) != -1
1031
+ })
1032
+ tests := []testCase{
1033
+ {
1034
+ src: ",",
1035
+ wantStr: "",
1036
+ },
1037
+
1038
+ {
1039
+ src: "c",
1040
+ wantStr: "c",
1041
+ },
1042
+
1043
+ {
1044
+ src: "\u2345",
1045
+ wantStr: "\u2345",
1046
+ },
1047
+
1048
+ {
1049
+ src: "tschüß",
1050
+ wantStr: "tschüß",
1051
+ },
1052
+
1053
+ {
1054
+ src: ",до,свидания,",
1055
+ wantStr: "досвидания",
1056
+ },
1057
+
1058
+ {
1059
+ src: "a\xbd\xb2=\xbc ⌘",
1060
+ wantStr: "\uFFFD\uFFFD=\uFFFD ⌘",
1061
+ },
1062
+
1063
+ {
1064
+ // If we didn't replace illegal bytes with RuneError, the result
1065
+ // would be \u0300 or the code would need to be more complex.
1066
+ src: "\xcc\u0300\x80",
1067
+ wantStr: "\uFFFD\uFFFD",
1068
+ },
1069
+
1070
+ {
1071
+ src: "\xcc\u0300\x80",
1072
+ dstSize: 3,
1073
+ wantStr: "\uFFFD\uFFFD",
1074
+ wantIter: 2,
1075
+ },
1076
+
1077
+ {
1078
+ // Test a long buffer greater than the internal buffer size
1079
+ src: "hello\xcc\xcc\xccworld",
1080
+ srcSize: 13,
1081
+ wantStr: "hello\uFFFD\uFFFD\uFFFDworld",
1082
+ wantIter: 1,
1083
+ },
1084
+
1085
+ {
1086
+ src: "\u2345",
1087
+ dstSize: 2,
1088
+ wantStr: "",
1089
+ wantErr: ErrShortDst,
1090
+ },
1091
+
1092
+ {
1093
+ src: "\xcc",
1094
+ dstSize: 2,
1095
+ wantStr: "",
1096
+ wantErr: ErrShortDst,
1097
+ },
1098
+
1099
+ {
1100
+ src: "\u0300",
1101
+ dstSize: 2,
1102
+ srcSize: 1,
1103
+ wantStr: "",
1104
+ wantErr: ErrShortSrc,
1105
+ },
1106
+
1107
+ {
1108
+ t: RemoveFunc(func(r rune) bool {
1109
+ return r == utf8.RuneError
1110
+ }),
1111
+ src: "\xcc\u0300\x80",
1112
+ wantStr: "\u0300",
1113
+ },
1114
+ }
1115
+
1116
+ for _, tc := range tests {
1117
+ tc.desc = tc.src
1118
+ if tc.t == nil {
1119
+ tc.t = filter
1120
+ }
1121
+ if tc.dstSize == 0 {
1122
+ tc.dstSize = 100
1123
+ }
1124
+ if tc.srcSize == 0 {
1125
+ tc.srcSize = 100
1126
+ }
1127
+ str, iter, err := doTransform(tc)
1128
+ mi := tc.wantIter != 0 && tc.wantIter != iter
1129
+ if str != tc.wantStr || err != tc.wantErr || mi {
1130
+ t.Errorf("%+q:\ngot iter:%d, %+q, %v\nwant iter:%d, %+q, %v", tc.src, iter, str, err, tc.wantIter, tc.wantStr, tc.wantErr)
1131
+ }
1132
+
1133
+ tc.src = str
1134
+ idem, _, _ := doTransform(tc)
1135
+ if str != idem {
1136
+ t.Errorf("%+q: found %+q; want %+q", tc.src, idem, str)
1137
+ }
1138
+ }
1139
+ }
1140
+
1141
+ func testString(t *testing.T, f func(Transformer, string) (string, int, error)) {
1142
+ for _, tt := range append(testCases, chainTests()...) {
1143
+ if tt.desc == "allowStutter = true" {
1144
+ // We don't have control over the buffer size, so we eliminate tests
1145
+ // that depend on a specific buffer size being set.
1146
+ continue
1147
+ }
1148
+ if tt.wantErr == ErrShortDst || tt.wantErr == ErrShortSrc {
1149
+ // The result string will be different.
1150
+ continue
1151
+ }
1152
+ testtext.Run(t, tt.desc, func(t *testing.T) {
1153
+ got, n, err := f(tt.t, tt.src)
1154
+ if tt.wantErr != err {
1155
+ t.Errorf("error: got %v; want %v", err, tt.wantErr)
1156
+ }
1157
+ // Check that err == nil implies that n == len(tt.src). Note that vice
1158
+ // versa isn't necessarily true.
1159
+ if err == nil && n != len(tt.src) {
1160
+ t.Errorf("err == nil: got %d bytes, want %d", n, err)
1161
+ }
1162
+ if got != tt.wantStr {
1163
+ t.Errorf("string: got %q; want %q", got, tt.wantStr)
1164
+ }
1165
+ })
1166
+ }
1167
+ }
1168
+
1169
+ func TestBytes(t *testing.T) {
1170
+ testString(t, func(z Transformer, s string) (string, int, error) {
1171
+ b, n, err := Bytes(z, []byte(s))
1172
+ return string(b), n, err
1173
+ })
1174
+ }
1175
+
1176
+ func TestAppend(t *testing.T) {
1177
+ // Create a bunch of subtests for different buffer sizes.
1178
+ testCases := [][]byte{
1179
+ nil,
1180
+ make([]byte, 0, 0),
1181
+ make([]byte, 0, 1),
1182
+ make([]byte, 1, 1),
1183
+ make([]byte, 1, 5),
1184
+ make([]byte, 100, 100),
1185
+ make([]byte, 100, 200),
1186
+ }
1187
+ for _, tc := range testCases {
1188
+ testString(t, func(z Transformer, s string) (string, int, error) {
1189
+ b, n, err := Append(z, tc, []byte(s))
1190
+ return string(b[len(tc):]), n, err
1191
+ })
1192
+ }
1193
+ }
1194
+
1195
+ func TestString(t *testing.T) {
1196
+ testtext.Run(t, "transform", func(t *testing.T) { testString(t, String) })
1197
+
1198
+ // Overrun the internal destination buffer.
1199
+ for i, s := range []string{
1200
+ aaa[:1*initialBufSize-1],
1201
+ aaa[:1*initialBufSize+0],
1202
+ aaa[:1*initialBufSize+1],
1203
+ AAA[:1*initialBufSize-1],
1204
+ AAA[:1*initialBufSize+0],
1205
+ AAA[:1*initialBufSize+1],
1206
+ AAA[:2*initialBufSize-1],
1207
+ AAA[:2*initialBufSize+0],
1208
+ AAA[:2*initialBufSize+1],
1209
+ aaa[:1*initialBufSize-2] + "A",
1210
+ aaa[:1*initialBufSize-1] + "A",
1211
+ aaa[:1*initialBufSize+0] + "A",
1212
+ aaa[:1*initialBufSize+1] + "A",
1213
+ } {
1214
+ testtext.Run(t, fmt.Sprint("dst buffer test using lower/", i), func(t *testing.T) {
1215
+ got, _, _ := String(lowerCaseASCII{}, s)
1216
+ if want := strings.ToLower(s); got != want {
1217
+ t.Errorf("got %s (%d); want %s (%d)", got, len(got), want, len(want))
1218
+ }
1219
+ })
1220
+ }
1221
+
1222
+ // Overrun the internal source buffer.
1223
+ for i, s := range []string{
1224
+ aaa[:1*initialBufSize-1],
1225
+ aaa[:1*initialBufSize+0],
1226
+ aaa[:1*initialBufSize+1],
1227
+ aaa[:2*initialBufSize+1],
1228
+ aaa[:2*initialBufSize+0],
1229
+ aaa[:2*initialBufSize+1],
1230
+ } {
1231
+ testtext.Run(t, fmt.Sprint("src buffer test using rleEncode/", i), func(t *testing.T) {
1232
+ got, _, _ := String(rleEncode{}, s)
1233
+ if want := fmt.Sprintf("%da", len(s)); got != want {
1234
+ t.Errorf("got %s (%d); want %s (%d)", got, len(got), want, len(want))
1235
+ }
1236
+ })
1237
+ }
1238
+
1239
+ // Test allocations for non-changing strings.
1240
+ // Note we still need to allocate a single buffer.
1241
+ for i, s := range []string{
1242
+ "",
1243
+ "123456789",
1244
+ aaa[:initialBufSize-1],
1245
+ aaa[:initialBufSize+0],
1246
+ aaa[:initialBufSize+1],
1247
+ aaa[:10*initialBufSize],
1248
+ } {
1249
+ testtext.Run(t, fmt.Sprint("alloc/", i), func(t *testing.T) {
1250
+ if n := testtext.AllocsPerRun(5, func() { String(&lowerCaseASCIILookahead{}, s) }); n > 1 {
1251
+ t.Errorf("#allocs was %f; want 1", n)
1252
+ }
1253
+ })
1254
+ }
1255
+ }
1256
+
1257
+ // TestBytesAllocation tests that buffer growth stays limited with the trickler
1258
+ // transformer, which behaves oddly but within spec. In case buffer growth is
1259
+ // not correctly handled, the test will either panic with a failed allocation or
1260
+ // thrash. To ensure the tests terminate under the last condition, we time out
1261
+ // after some sufficiently long period of time.
1262
+ func TestBytesAllocation(t *testing.T) {
1263
+ done := make(chan bool)
1264
+ go func() {
1265
+ in := bytes.Repeat([]byte{'a'}, 1000)
1266
+ tr := trickler(make([]byte, 1))
1267
+ Bytes(&tr, in)
1268
+ done <- true
1269
+ }()
1270
+ select {
1271
+ case <-done:
1272
+ case <-time.After(3 * time.Second):
1273
+ t.Error("time out, likely due to excessive allocation")
1274
+ }
1275
+ }
1276
+
1277
+ // TestStringAllocation tests that buffer growth stays limited with the trickler
1278
+ // transformer, which behaves oddly but within spec. In case buffer growth is
1279
+ // not correctly handled, the test will either panic with a failed allocation or
1280
+ // thrash. To ensure the tests terminate under the last condition, we time out
1281
+ // after some sufficiently long period of time.
1282
+ func TestStringAllocation(t *testing.T) {
1283
+ done := make(chan bool)
1284
+ go func() {
1285
+ tr := trickler(make([]byte, 1))
1286
+ String(&tr, aaa[:1000])
1287
+ done <- true
1288
+ }()
1289
+ select {
1290
+ case <-done:
1291
+ case <-time.After(3 * time.Second):
1292
+ t.Error("time out, likely due to excessive allocation")
1293
+ }
1294
+ }
1295
+
1296
+ func BenchmarkStringLowerEmpty(b *testing.B) {
1297
+ for i := 0; i < b.N; i++ {
1298
+ String(&lowerCaseASCIILookahead{}, "")
1299
+ }
1300
+ }
1301
+
1302
+ func BenchmarkStringLowerIdentical(b *testing.B) {
1303
+ for i := 0; i < b.N; i++ {
1304
+ String(&lowerCaseASCIILookahead{}, aaa[:4096])
1305
+ }
1306
+ }
1307
+
1308
+ func BenchmarkStringLowerChanged(b *testing.B) {
1309
+ for i := 0; i < b.N; i++ {
1310
+ String(&lowerCaseASCIILookahead{}, AAA[:4096])
1311
+ }
1312
+ }
1313
+
1314
+ var (
1315
+ aaa = strings.Repeat("a", 4096)
1316
+ AAA = strings.Repeat("A", 4096)
1317
+ )