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,54 @@
1
+ // Copyright 2016 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 bidirule
6
+
7
+ import (
8
+ "testing"
9
+
10
+ "golang.org/x/text/internal/testtext"
11
+ )
12
+
13
+ var benchData = []struct{ name, data string }{
14
+ {"ascii", "Scheveningen"},
15
+ {"arabic", "دبي"},
16
+ {"hangul", "다음과"},
17
+ }
18
+
19
+ func doBench(b *testing.B, fn func(b *testing.B, data string)) {
20
+ for _, d := range benchData {
21
+ testtext.Bench(b, d.name, func(b *testing.B) { fn(b, d.data) })
22
+ }
23
+ }
24
+
25
+ func BenchmarkSpan(b *testing.B) {
26
+ r := New()
27
+ doBench(b, func(b *testing.B, str string) {
28
+ b.SetBytes(int64(len(str)))
29
+ data := []byte(str)
30
+ for i := 0; i < b.N; i++ {
31
+ r.Reset()
32
+ r.Span(data, true)
33
+ }
34
+ })
35
+ }
36
+
37
+ func BenchmarkDirectionASCII(b *testing.B) {
38
+ doBench(b, func(b *testing.B, str string) {
39
+ b.SetBytes(int64(len(str)))
40
+ data := []byte(str)
41
+ for i := 0; i < b.N; i++ {
42
+ Direction(data)
43
+ }
44
+ })
45
+ }
46
+
47
+ func BenchmarkDirectionStringASCII(b *testing.B) {
48
+ doBench(b, func(b *testing.B, str string) {
49
+ b.SetBytes(int64(len(str)))
50
+ for i := 0; i < b.N; i++ {
51
+ DirectionString(str)
52
+ }
53
+ })
54
+ }
@@ -0,0 +1,340 @@
1
+ // Copyright 2016 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 bidirule implements the Bidi Rule defined by RFC 5893.
6
+ //
7
+ // This package is under development. The API may change without notice and
8
+ // without preserving backward compatibility.
9
+ package bidirule
10
+
11
+ import (
12
+ "errors"
13
+ "unicode/utf8"
14
+
15
+ "golang.org/x/text/transform"
16
+ "golang.org/x/text/unicode/bidi"
17
+ )
18
+
19
+ // This file contains an implementation of RFC 5893: Right-to-Left Scripts for
20
+ // Internationalized Domain Names for Applications (IDNA)
21
+ //
22
+ // A label is an individual component of a domain name. Labels are usually
23
+ // shown separated by dots; for example, the domain name "www.example.com" is
24
+ // composed of three labels: "www", "example", and "com".
25
+ //
26
+ // An RTL label is a label that contains at least one character of class R, AL,
27
+ // or AN. An LTR label is any label that is not an RTL label.
28
+ //
29
+ // A "Bidi domain name" is a domain name that contains at least one RTL label.
30
+ //
31
+ // The following guarantees can be made based on the above:
32
+ //
33
+ // o In a domain name consisting of only labels that satisfy the rule,
34
+ // the requirements of Section 3 are satisfied. Note that even LTR
35
+ // labels and pure ASCII labels have to be tested.
36
+ //
37
+ // o In a domain name consisting of only LDH labels (as defined in the
38
+ // Definitions document [RFC5890]) and labels that satisfy the rule,
39
+ // the requirements of Section 3 are satisfied as long as a label
40
+ // that starts with an ASCII digit does not come after a
41
+ // right-to-left label.
42
+ //
43
+ // No guarantee is given for other combinations.
44
+
45
+ // ErrInvalid indicates a label is invalid according to the Bidi Rule.
46
+ var ErrInvalid = errors.New("bidirule: failed Bidi Rule")
47
+
48
+ type ruleState uint8
49
+
50
+ const (
51
+ ruleInitial ruleState = iota
52
+ ruleLTR
53
+ ruleLTRFinal
54
+ ruleRTL
55
+ ruleRTLFinal
56
+ ruleInvalid
57
+ )
58
+
59
+ type ruleTransition struct {
60
+ next ruleState
61
+ mask uint16
62
+ }
63
+
64
+ var transitions = [...][2]ruleTransition{
65
+ // [2.1] The first character must be a character with Bidi property L, R, or
66
+ // AL. If it has the R or AL property, it is an RTL label; if it has the L
67
+ // property, it is an LTR label.
68
+ ruleInitial: {
69
+ {ruleLTRFinal, 1 << bidi.L},
70
+ {ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL},
71
+ },
72
+ ruleRTL: {
73
+ // [2.3] In an RTL label, the end of the label must be a character with
74
+ // Bidi property R, AL, EN, or AN, followed by zero or more characters
75
+ // with Bidi property NSM.
76
+ {ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN},
77
+
78
+ // [2.2] In an RTL label, only characters with the Bidi properties R,
79
+ // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.
80
+ // We exclude the entries from [2.3]
81
+ {ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},
82
+ },
83
+ ruleRTLFinal: {
84
+ // [2.3] In an RTL label, the end of the label must be a character with
85
+ // Bidi property R, AL, EN, or AN, followed by zero or more characters
86
+ // with Bidi property NSM.
87
+ {ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN | 1<<bidi.NSM},
88
+
89
+ // [2.2] In an RTL label, only characters with the Bidi properties R,
90
+ // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.
91
+ // We exclude the entries from [2.3] and NSM.
92
+ {ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},
93
+ },
94
+ ruleLTR: {
95
+ // [2.6] In an LTR label, the end of the label must be a character with
96
+ // Bidi property L or EN, followed by zero or more characters with Bidi
97
+ // property NSM.
98
+ {ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN},
99
+
100
+ // [2.5] In an LTR label, only characters with the Bidi properties L,
101
+ // EN, ES, CS, ET, ON, BN, or NSM are allowed.
102
+ // We exclude the entries from [2.6].
103
+ {ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM},
104
+ },
105
+ ruleLTRFinal: {
106
+ // [2.6] In an LTR label, the end of the label must be a character with
107
+ // Bidi property L or EN, followed by zero or more characters with Bidi
108
+ // property NSM.
109
+ {ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN | 1<<bidi.NSM},
110
+
111
+ // [2.5] In an LTR label, only characters with the Bidi properties L,
112
+ // EN, ES, CS, ET, ON, BN, or NSM are allowed.
113
+ // We exclude the entries from [2.6].
114
+ {ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN},
115
+ },
116
+ ruleInvalid: {
117
+ {ruleInvalid, 0},
118
+ {ruleInvalid, 0},
119
+ },
120
+ }
121
+
122
+ // [2.4] In an RTL label, if an EN is present, no AN may be present, and
123
+ // vice versa.
124
+ const exclusiveRTL = uint16(1<<bidi.EN | 1<<bidi.AN)
125
+
126
+ // From RFC 5893
127
+ // An RTL label is a label that contains at least one character of type
128
+ // R, AL, or AN.
129
+ //
130
+ // An LTR label is any label that is not an RTL label.
131
+
132
+ // Direction reports the direction of the given label as defined by RFC 5893.
133
+ // The Bidi Rule does not have to be applied to labels of the category
134
+ // LeftToRight.
135
+ func Direction(b []byte) bidi.Direction {
136
+ for i := 0; i < len(b); {
137
+ e, sz := bidi.Lookup(b[i:])
138
+ if sz == 0 {
139
+ i++
140
+ }
141
+ c := e.Class()
142
+ if c == bidi.R || c == bidi.AL || c == bidi.AN {
143
+ return bidi.RightToLeft
144
+ }
145
+ i += sz
146
+ }
147
+ return bidi.LeftToRight
148
+ }
149
+
150
+ // DirectionString reports the direction of the given label as defined by RFC
151
+ // 5893. The Bidi Rule does not have to be applied to labels of the category
152
+ // LeftToRight.
153
+ func DirectionString(s string) bidi.Direction {
154
+ for i := 0; i < len(s); {
155
+ e, sz := bidi.LookupString(s[i:])
156
+ if sz == 0 {
157
+ i++
158
+ continue
159
+ }
160
+ c := e.Class()
161
+ if c == bidi.R || c == bidi.AL || c == bidi.AN {
162
+ return bidi.RightToLeft
163
+ }
164
+ i += sz
165
+ }
166
+ return bidi.LeftToRight
167
+ }
168
+
169
+ // Valid reports whether b conforms to the BiDi rule.
170
+ func Valid(b []byte) bool {
171
+ var t Transformer
172
+ if n, ok := t.advance(b); !ok || n < len(b) {
173
+ return false
174
+ }
175
+ return t.isFinal()
176
+ }
177
+
178
+ // ValidString reports whether s conforms to the BiDi rule.
179
+ func ValidString(s string) bool {
180
+ var t Transformer
181
+ if n, ok := t.advanceString(s); !ok || n < len(s) {
182
+ return false
183
+ }
184
+ return t.isFinal()
185
+ }
186
+
187
+ // New returns a Transformer that verifies that input adheres to the Bidi Rule.
188
+ func New() *Transformer {
189
+ return &Transformer{}
190
+ }
191
+
192
+ // Transformer implements transform.Transform.
193
+ type Transformer struct {
194
+ state ruleState
195
+ hasRTL bool
196
+ seen uint16
197
+ }
198
+
199
+ // A rule can only be violated for "Bidi Domain names", meaning if one of the
200
+ // following categories has been observed.
201
+ func (t *Transformer) isRTL() bool {
202
+ const isRTL = 1<<bidi.R | 1<<bidi.AL | 1<<bidi.AN
203
+ return t.seen&isRTL != 0
204
+ }
205
+
206
+ func (t *Transformer) isFinal() bool {
207
+ return t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial
208
+ }
209
+
210
+ // Reset implements transform.Transformer.
211
+ func (t *Transformer) Reset() { *t = Transformer{} }
212
+
213
+ // Transform implements transform.Transformer. This Transformer has state and
214
+ // needs to be reset between uses.
215
+ func (t *Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
216
+ if len(dst) < len(src) {
217
+ src = src[:len(dst)]
218
+ atEOF = false
219
+ err = transform.ErrShortDst
220
+ }
221
+ n, err1 := t.Span(src, atEOF)
222
+ copy(dst, src[:n])
223
+ if err == nil || err1 != nil && err1 != transform.ErrShortSrc {
224
+ err = err1
225
+ }
226
+ return n, n, err
227
+ }
228
+
229
+ // Span returns the first n bytes of src that conform to the Bidi rule.
230
+ func (t *Transformer) Span(src []byte, atEOF bool) (n int, err error) {
231
+ if t.state == ruleInvalid && t.isRTL() {
232
+ return 0, ErrInvalid
233
+ }
234
+ n, ok := t.advance(src)
235
+ switch {
236
+ case !ok:
237
+ err = ErrInvalid
238
+ case n < len(src):
239
+ if !atEOF {
240
+ err = transform.ErrShortSrc
241
+ break
242
+ }
243
+ err = ErrInvalid
244
+ case !t.isFinal():
245
+ err = ErrInvalid
246
+ }
247
+ return n, err
248
+ }
249
+
250
+ // Precomputing the ASCII values decreases running time for the ASCII fast path
251
+ // by about 30%.
252
+ var asciiTable [128]bidi.Properties
253
+
254
+ func init() {
255
+ for i := range asciiTable {
256
+ p, _ := bidi.LookupRune(rune(i))
257
+ asciiTable[i] = p
258
+ }
259
+ }
260
+
261
+ func (t *Transformer) advance(s []byte) (n int, ok bool) {
262
+ var e bidi.Properties
263
+ var sz int
264
+ for n < len(s) {
265
+ if s[n] < utf8.RuneSelf {
266
+ e, sz = asciiTable[s[n]], 1
267
+ } else {
268
+ e, sz = bidi.Lookup(s[n:])
269
+ if sz <= 1 {
270
+ if sz == 1 {
271
+ // We always consider invalid UTF-8 to be invalid, even if
272
+ // the string has not yet been determined to be RTL.
273
+ // TODO: is this correct?
274
+ return n, false
275
+ }
276
+ return n, true // incomplete UTF-8 encoding
277
+ }
278
+ }
279
+ // TODO: using CompactClass would result in noticeable speedup.
280
+ // See unicode/bidi/prop.go:Properties.CompactClass.
281
+ c := uint16(1 << e.Class())
282
+ t.seen |= c
283
+ if t.seen&exclusiveRTL == exclusiveRTL {
284
+ t.state = ruleInvalid
285
+ return n, false
286
+ }
287
+ switch tr := transitions[t.state]; {
288
+ case tr[0].mask&c != 0:
289
+ t.state = tr[0].next
290
+ case tr[1].mask&c != 0:
291
+ t.state = tr[1].next
292
+ default:
293
+ t.state = ruleInvalid
294
+ if t.isRTL() {
295
+ return n, false
296
+ }
297
+ }
298
+ n += sz
299
+ }
300
+ return n, true
301
+ }
302
+
303
+ func (t *Transformer) advanceString(s string) (n int, ok bool) {
304
+ var e bidi.Properties
305
+ var sz int
306
+ for n < len(s) {
307
+ if s[n] < utf8.RuneSelf {
308
+ e, sz = asciiTable[s[n]], 1
309
+ } else {
310
+ e, sz = bidi.LookupString(s[n:])
311
+ if sz <= 1 {
312
+ if sz == 1 {
313
+ return n, false // invalid UTF-8
314
+ }
315
+ return n, true // incomplete UTF-8 encoding
316
+ }
317
+ }
318
+ // TODO: using CompactClass results in noticeable speedup.
319
+ // See unicode/bidi/prop.go:Properties.CompactClass.
320
+ c := uint16(1 << e.Class())
321
+ t.seen |= c
322
+ if t.seen&exclusiveRTL == exclusiveRTL {
323
+ t.state = ruleInvalid
324
+ return n, false
325
+ }
326
+ switch tr := transitions[t.state]; {
327
+ case tr[0].mask&c != 0:
328
+ t.state = tr[0].next
329
+ case tr[1].mask&c != 0:
330
+ t.state = tr[1].next
331
+ default:
332
+ t.state = ruleInvalid
333
+ if t.isRTL() {
334
+ return n, false
335
+ }
336
+ }
337
+ n += sz
338
+ }
339
+ return n, true
340
+ }
@@ -0,0 +1,851 @@
1
+ // Copyright 2016 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 bidirule
6
+
7
+ import (
8
+ "fmt"
9
+ "testing"
10
+
11
+ "golang.org/x/text/internal/testtext"
12
+ "golang.org/x/text/transform"
13
+ "golang.org/x/text/unicode/bidi"
14
+ )
15
+
16
+ const (
17
+ strL = "ABC" // Left to right - most letters in LTR scripts
18
+ strR = "עברית" // Right to left - most letters in non-Arabic RTL scripts
19
+ strAL = "دبي" // Arabic letters - most letters in the Arabic script
20
+ strEN = "123" // European Number (0-9, and Extended Arabic-Indic numbers)
21
+ strES = "+-" // European Number Separator (+ and -)
22
+ strET = "$" // European Number Terminator (currency symbols, the hash sign, the percent sign and so on)
23
+ strAN = "\u0660" // Arabic Number; this encompasses the Arabic-Indic numbers, but not the Extended Arabic-Indic numbers
24
+ strCS = "," // Common Number Separator (. , / : et al)
25
+ strNSM = "\u0300" // Nonspacing Mark - most combining accents
26
+ strBN = "\u200d" // Boundary Neutral - control characters (ZWNJ, ZWJ, and others)
27
+ strB = "\u2029" // Paragraph Separator
28
+ strS = "\u0009" // Segment Separator
29
+ strWS = " " // Whitespace, including the SPACE character
30
+ strON = "@" // Other Neutrals, including @, &, parentheses, MIDDLE DOT
31
+ )
32
+
33
+ type ruleTest struct {
34
+ in string
35
+ dir bidi.Direction
36
+ n int // position at which the rule fails
37
+ err error
38
+
39
+ // For tests that split the string in two.
40
+ pSrc int // number of source bytes to consume first
41
+ szDst int // size of destination buffer
42
+ nSrc int // source bytes consumed and bytes written
43
+ err0 error // error after first run
44
+ }
45
+
46
+ var testCases = [][]ruleTest{
47
+ // Go-specific rules.
48
+ // Invalid UTF-8 is invalid.
49
+ 0: []ruleTest{{
50
+ in: "",
51
+ dir: bidi.LeftToRight,
52
+ }, {
53
+ in: "\x80",
54
+ dir: bidi.LeftToRight,
55
+ err: ErrInvalid,
56
+ n: 0,
57
+ }, {
58
+ in: "\xcc",
59
+ dir: bidi.LeftToRight,
60
+ err: ErrInvalid,
61
+ n: 0,
62
+ }, {
63
+ in: "abc\x80",
64
+ dir: bidi.LeftToRight,
65
+ err: ErrInvalid,
66
+ n: 3,
67
+ }, {
68
+ in: "abc\xcc",
69
+ dir: bidi.LeftToRight,
70
+ err: ErrInvalid,
71
+ n: 3,
72
+ }, {
73
+ in: "abc\xccdef",
74
+ dir: bidi.LeftToRight,
75
+ err: ErrInvalid,
76
+ n: 3,
77
+ }, {
78
+ in: "\xccdef",
79
+ dir: bidi.LeftToRight,
80
+ err: ErrInvalid,
81
+ n: 0,
82
+ }, {
83
+ in: strR + "\x80",
84
+ dir: bidi.RightToLeft,
85
+ err: ErrInvalid,
86
+ n: len(strR),
87
+ }, {
88
+ in: strR + "\xcc",
89
+ dir: bidi.RightToLeft,
90
+ err: ErrInvalid,
91
+ n: len(strR),
92
+ }, {
93
+ in: strAL + "\xcc" + strR,
94
+ dir: bidi.RightToLeft,
95
+ err: ErrInvalid,
96
+ n: len(strAL),
97
+ }, {
98
+ in: "\xcc" + strR,
99
+ dir: bidi.RightToLeft,
100
+ err: ErrInvalid,
101
+ n: 0,
102
+ }},
103
+
104
+ // Rule 2.1: The first character must be a character with Bidi property L,
105
+ // R, or AL. If it has the R or AL property, it is an RTL label; if it has
106
+ // the L property, it is an LTR label.
107
+ 1: []ruleTest{{
108
+ in: strL,
109
+ dir: bidi.LeftToRight,
110
+ }, {
111
+ in: strR,
112
+ dir: bidi.RightToLeft,
113
+ }, {
114
+ in: strAL,
115
+ dir: bidi.RightToLeft,
116
+ }, {
117
+ in: strAN,
118
+ dir: bidi.RightToLeft,
119
+ err: ErrInvalid,
120
+ }, {
121
+ in: strEN,
122
+ dir: bidi.LeftToRight,
123
+ err: ErrInvalid,
124
+ n: len(strEN),
125
+ }, {
126
+ in: strES,
127
+ dir: bidi.LeftToRight,
128
+ err: ErrInvalid,
129
+ n: len(strES),
130
+ }, {
131
+ in: strET,
132
+ dir: bidi.LeftToRight,
133
+ err: ErrInvalid,
134
+ n: len(strET),
135
+ }, {
136
+ in: strCS,
137
+ dir: bidi.LeftToRight,
138
+ err: ErrInvalid,
139
+ n: len(strCS),
140
+ }, {
141
+ in: strNSM,
142
+ dir: bidi.LeftToRight,
143
+ err: ErrInvalid,
144
+ n: len(strNSM),
145
+ }, {
146
+ in: strBN,
147
+ dir: bidi.LeftToRight,
148
+ err: ErrInvalid,
149
+ n: len(strBN),
150
+ }, {
151
+ in: strB,
152
+ dir: bidi.LeftToRight,
153
+ err: ErrInvalid,
154
+ n: len(strB),
155
+ }, {
156
+ in: strS,
157
+ dir: bidi.LeftToRight,
158
+ err: ErrInvalid,
159
+ n: len(strS),
160
+ }, {
161
+ in: strWS,
162
+ dir: bidi.LeftToRight,
163
+ err: ErrInvalid,
164
+ n: len(strWS),
165
+ }, {
166
+ in: strON,
167
+ dir: bidi.LeftToRight,
168
+ err: ErrInvalid,
169
+ n: len(strON),
170
+ }, {
171
+ in: strEN + strR,
172
+ dir: bidi.RightToLeft,
173
+ err: ErrInvalid,
174
+ n: 3,
175
+ }, {
176
+ in: strES + strR,
177
+ dir: bidi.RightToLeft,
178
+ err: ErrInvalid,
179
+ n: 2,
180
+ }, {
181
+ in: strET + strR,
182
+ dir: bidi.RightToLeft,
183
+ err: ErrInvalid,
184
+ n: 1,
185
+ }, {
186
+ in: strCS + strR,
187
+ dir: bidi.RightToLeft,
188
+ err: ErrInvalid,
189
+ n: 1,
190
+ }, {
191
+ in: strNSM + strR,
192
+ dir: bidi.RightToLeft,
193
+ err: ErrInvalid,
194
+ n: 2,
195
+ }, {
196
+ in: strBN + strR,
197
+ dir: bidi.RightToLeft,
198
+ err: ErrInvalid,
199
+ n: 3,
200
+ }, {
201
+ in: strB + strR,
202
+ dir: bidi.RightToLeft,
203
+ err: ErrInvalid,
204
+ n: 3,
205
+ }, {
206
+ in: strS + strR,
207
+ dir: bidi.RightToLeft,
208
+ err: ErrInvalid,
209
+ n: 1,
210
+ }, {
211
+ in: strWS + strR,
212
+ dir: bidi.RightToLeft,
213
+ err: ErrInvalid,
214
+ n: 1,
215
+ }, {
216
+ in: strON + strR,
217
+ dir: bidi.RightToLeft,
218
+ err: ErrInvalid,
219
+ n: 1,
220
+ }},
221
+
222
+ // Rule 2.2: In an RTL label, only characters with the Bidi properties R,
223
+ // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.
224
+ 2: []ruleTest{{
225
+ in: strR + strR + strAL,
226
+ dir: bidi.RightToLeft,
227
+ }, {
228
+ in: strR + strAL + strR,
229
+ dir: bidi.RightToLeft,
230
+ }, {
231
+ in: strR + strAN + strAL,
232
+ dir: bidi.RightToLeft,
233
+ }, {
234
+ in: strR + strEN + strR,
235
+ dir: bidi.RightToLeft,
236
+ }, {
237
+ in: strR + strES + strR,
238
+ dir: bidi.RightToLeft,
239
+ }, {
240
+ in: strR + strCS + strR,
241
+ dir: bidi.RightToLeft,
242
+ }, {
243
+ in: strR + strET + strAL,
244
+ dir: bidi.RightToLeft,
245
+ }, {
246
+ in: strR + strON + strR,
247
+ dir: bidi.RightToLeft,
248
+ }, {
249
+ in: strR + strBN + strR,
250
+ dir: bidi.RightToLeft,
251
+ }, {
252
+ in: strR + strNSM + strAL,
253
+ dir: bidi.RightToLeft,
254
+ }, {
255
+ in: strR + strL + strR,
256
+ dir: bidi.RightToLeft,
257
+ n: len(strR),
258
+ err: ErrInvalid,
259
+ }, {
260
+ in: strR + strB + strR,
261
+ dir: bidi.RightToLeft,
262
+ n: len(strR),
263
+ err: ErrInvalid,
264
+ }, {
265
+ in: strR + strS + strAL,
266
+ dir: bidi.RightToLeft,
267
+ n: len(strR),
268
+ err: ErrInvalid,
269
+ }, {
270
+ in: strR + strWS + strAL,
271
+ dir: bidi.RightToLeft,
272
+ n: len(strR),
273
+ err: ErrInvalid,
274
+ }, {
275
+ in: strAL + strR + strAL,
276
+ dir: bidi.RightToLeft,
277
+ }, {
278
+ in: strAL + strAL + strR,
279
+ dir: bidi.RightToLeft,
280
+ }, {
281
+ in: strAL + strAN + strAL,
282
+ dir: bidi.RightToLeft,
283
+ }, {
284
+ in: strAL + strEN + strR,
285
+ dir: bidi.RightToLeft,
286
+ }, {
287
+ in: strAL + strES + strR,
288
+ dir: bidi.RightToLeft,
289
+ }, {
290
+ in: strAL + strCS + strR,
291
+ dir: bidi.RightToLeft,
292
+ }, {
293
+ in: strAL + strET + strAL,
294
+ dir: bidi.RightToLeft,
295
+ }, {
296
+ in: strAL + strON + strR,
297
+ dir: bidi.RightToLeft,
298
+ }, {
299
+ in: strAL + strBN + strR,
300
+ dir: bidi.RightToLeft,
301
+ }, {
302
+ in: strAL + strNSM + strAL,
303
+ dir: bidi.RightToLeft,
304
+ }, {
305
+ in: strAL + strL + strR,
306
+ dir: bidi.RightToLeft,
307
+ n: len(strAL),
308
+ err: ErrInvalid,
309
+ }, {
310
+ in: strAL + strB + strR,
311
+ dir: bidi.RightToLeft,
312
+ n: len(strAL),
313
+ err: ErrInvalid,
314
+ }, {
315
+ in: strAL + strS + strAL,
316
+ dir: bidi.RightToLeft,
317
+ n: len(strAL),
318
+ err: ErrInvalid,
319
+ }, {
320
+ in: strAL + strWS + strAL,
321
+ dir: bidi.RightToLeft,
322
+ n: len(strAL),
323
+ err: ErrInvalid,
324
+ }},
325
+
326
+ // Rule 2.3: In an RTL label, the end of the label must be a character with
327
+ // Bidi property R, AL, EN, or AN, followed by zero or more characters with
328
+ // Bidi property NSM.
329
+ 3: []ruleTest{{
330
+ in: strR + strNSM,
331
+ dir: bidi.RightToLeft,
332
+ }, {
333
+ in: strR + strR,
334
+ dir: bidi.RightToLeft,
335
+ }, {
336
+ in: strR + strAL + strNSM,
337
+ dir: bidi.RightToLeft,
338
+ }, {
339
+ in: strR + strEN + strNSM + strNSM,
340
+ dir: bidi.RightToLeft,
341
+ }, {
342
+ in: strR + strAN,
343
+ dir: bidi.RightToLeft,
344
+ }, {
345
+ in: strR + strES + strNSM,
346
+ dir: bidi.RightToLeft,
347
+ n: len(strR + strES + strNSM),
348
+ err: ErrInvalid,
349
+ }, {
350
+ in: strR + strCS + strNSM + strNSM,
351
+ dir: bidi.RightToLeft,
352
+ n: len(strR + strCS + strNSM + strNSM),
353
+ err: ErrInvalid,
354
+ }, {
355
+ in: strR + strET,
356
+ dir: bidi.RightToLeft,
357
+ n: len(strR + strET),
358
+ err: ErrInvalid,
359
+ }, {
360
+ in: strR + strON + strNSM,
361
+ dir: bidi.RightToLeft,
362
+ n: len(strR + strON + strNSM),
363
+ err: ErrInvalid,
364
+ }, {
365
+ in: strR + strBN + strNSM + strNSM,
366
+ dir: bidi.RightToLeft,
367
+ n: len(strR + strBN + strNSM + strNSM),
368
+ err: ErrInvalid,
369
+ }, {
370
+ in: strR + strL + strNSM,
371
+ dir: bidi.RightToLeft,
372
+ n: len(strR),
373
+ err: ErrInvalid,
374
+ }, {
375
+ in: strR + strB + strNSM + strNSM,
376
+ dir: bidi.RightToLeft,
377
+ n: len(strR),
378
+ err: ErrInvalid,
379
+ }, {
380
+ in: strR + strS,
381
+ dir: bidi.RightToLeft,
382
+ n: len(strR),
383
+ err: ErrInvalid,
384
+ }, {
385
+ in: strR + strWS,
386
+ dir: bidi.RightToLeft,
387
+ n: len(strR),
388
+ err: ErrInvalid,
389
+ }, {
390
+ in: strAL + strNSM,
391
+ dir: bidi.RightToLeft,
392
+ }, {
393
+ in: strAL + strR,
394
+ dir: bidi.RightToLeft,
395
+ }, {
396
+ in: strAL + strAL + strNSM,
397
+ dir: bidi.RightToLeft,
398
+ }, {
399
+ in: strAL + strEN + strNSM + strNSM,
400
+ dir: bidi.RightToLeft,
401
+ }, {
402
+ in: strAL + strAN,
403
+ dir: bidi.RightToLeft,
404
+ }, {
405
+ in: strAL + strES + strNSM,
406
+ dir: bidi.RightToLeft,
407
+ n: len(strAL + strES + strNSM),
408
+ err: ErrInvalid,
409
+ }, {
410
+ in: strAL + strCS + strNSM + strNSM,
411
+ dir: bidi.RightToLeft,
412
+ n: len(strAL + strCS + strNSM + strNSM),
413
+ err: ErrInvalid,
414
+ }, {
415
+ in: strAL + strET,
416
+ dir: bidi.RightToLeft,
417
+ n: len(strAL + strET),
418
+ err: ErrInvalid,
419
+ }, {
420
+ in: strAL + strON + strNSM,
421
+ dir: bidi.RightToLeft,
422
+ n: len(strAL + strON + strNSM),
423
+ err: ErrInvalid,
424
+ }, {
425
+ in: strAL + strBN + strNSM + strNSM,
426
+ dir: bidi.RightToLeft,
427
+ n: len(strAL + strBN + strNSM + strNSM),
428
+ err: ErrInvalid,
429
+ }, {
430
+ in: strAL + strL + strNSM,
431
+ dir: bidi.RightToLeft,
432
+ n: len(strAL),
433
+ err: ErrInvalid,
434
+ }, {
435
+ in: strAL + strB + strNSM + strNSM,
436
+ dir: bidi.RightToLeft,
437
+ n: len(strAL),
438
+ err: ErrInvalid,
439
+ }, {
440
+ in: strAL + strS,
441
+ dir: bidi.RightToLeft,
442
+ n: len(strAL),
443
+ err: ErrInvalid,
444
+ }, {
445
+ in: strAL + strWS,
446
+ dir: bidi.RightToLeft,
447
+ n: len(strAL),
448
+ err: ErrInvalid,
449
+ }},
450
+
451
+ // Rule 2.4: In an RTL label, if an EN is present, no AN may be present,
452
+ // and vice versa.
453
+ 4: []ruleTest{{
454
+ in: strR + strEN + strAN,
455
+ dir: bidi.RightToLeft,
456
+ n: len(strR + strEN),
457
+ err: ErrInvalid,
458
+ }, {
459
+ in: strR + strAN + strEN + strNSM,
460
+ dir: bidi.RightToLeft,
461
+ n: len(strR + strAN),
462
+ err: ErrInvalid,
463
+ }, {
464
+ in: strAL + strEN + strAN,
465
+ dir: bidi.RightToLeft,
466
+ n: len(strAL + strEN),
467
+ err: ErrInvalid,
468
+ }, {
469
+ in: strAL + strAN + strEN + strNSM,
470
+ dir: bidi.RightToLeft,
471
+ n: len(strAL + strAN),
472
+ err: ErrInvalid,
473
+ }},
474
+
475
+ // Rule 2.5: In an LTR label, only characters with the Bidi properties L,
476
+ // EN, ES, CS, ET, ON, BN, or NSM are allowed.
477
+ 5: []ruleTest{{
478
+ in: strL + strL + strL,
479
+ dir: bidi.LeftToRight,
480
+ }, {
481
+ in: strL + strEN + strL,
482
+ dir: bidi.LeftToRight,
483
+ }, {
484
+ in: strL + strES + strL,
485
+ dir: bidi.LeftToRight,
486
+ }, {
487
+ in: strL + strCS + strL,
488
+ dir: bidi.LeftToRight,
489
+ }, {
490
+ in: strL + strET + strL,
491
+ dir: bidi.LeftToRight,
492
+ }, {
493
+ in: strL + strON + strL,
494
+ dir: bidi.LeftToRight,
495
+ }, {
496
+ in: strL + strBN + strL,
497
+ dir: bidi.LeftToRight,
498
+ }, {
499
+ in: strL + strNSM + strL,
500
+ dir: bidi.LeftToRight,
501
+ }, {
502
+ in: strL + strR + strL,
503
+ dir: bidi.RightToLeft,
504
+ n: len(strL),
505
+ err: ErrInvalid,
506
+ }, {
507
+ in: strL + strAL + strL,
508
+ dir: bidi.RightToLeft,
509
+ n: len(strL),
510
+ err: ErrInvalid,
511
+ }, {
512
+ in: strL + strAN + strL,
513
+ dir: bidi.RightToLeft,
514
+ n: len(strL),
515
+ err: ErrInvalid,
516
+ }, {
517
+ in: strL + strB + strL,
518
+ dir: bidi.LeftToRight,
519
+ n: len(strL + strB + strL),
520
+ err: ErrInvalid,
521
+ }, {
522
+ in: strL + strB + strL + strR,
523
+ dir: bidi.RightToLeft,
524
+ n: len(strL + strB + strL),
525
+ err: ErrInvalid,
526
+ }, {
527
+ in: strL + strS + strL,
528
+ dir: bidi.LeftToRight,
529
+ n: len(strL + strS + strL),
530
+ err: ErrInvalid,
531
+ }, {
532
+ in: strL + strS + strL + strR,
533
+ dir: bidi.RightToLeft,
534
+ n: len(strL + strS + strL),
535
+ err: ErrInvalid,
536
+ }, {
537
+ in: strL + strWS + strL,
538
+ dir: bidi.LeftToRight,
539
+ n: len(strL + strWS + strL),
540
+ err: ErrInvalid,
541
+ }, {
542
+ in: strL + strWS + strL + strR,
543
+ dir: bidi.RightToLeft,
544
+ n: len(strL + strWS + strL),
545
+ err: ErrInvalid,
546
+ }},
547
+
548
+ // Rule 2.6: In an LTR label, the end of the label must be a character with
549
+ // Bidi property L or EN, followed by zero or more characters with Bidi
550
+ // property NSM.
551
+ 6: []ruleTest{{
552
+ in: strL,
553
+ dir: bidi.LeftToRight,
554
+ }, {
555
+ in: strL + strNSM,
556
+ dir: bidi.LeftToRight,
557
+ }, {
558
+ in: strL + strNSM + strNSM,
559
+ dir: bidi.LeftToRight,
560
+ }, {
561
+ in: strL + strEN,
562
+ dir: bidi.LeftToRight,
563
+ }, {
564
+ in: strL + strEN + strNSM,
565
+ dir: bidi.LeftToRight,
566
+ }, {
567
+ in: strL + strEN + strNSM + strNSM,
568
+ dir: bidi.LeftToRight,
569
+ }, {
570
+ in: strL + strES,
571
+ dir: bidi.LeftToRight,
572
+ n: len(strL + strES),
573
+ err: ErrInvalid,
574
+ }, {
575
+ in: strL + strES + strR,
576
+ dir: bidi.RightToLeft,
577
+ n: len(strL + strES),
578
+ err: ErrInvalid,
579
+ }, {
580
+ in: strL + strCS,
581
+ dir: bidi.LeftToRight,
582
+ n: len(strL + strCS),
583
+ err: ErrInvalid,
584
+ }, {
585
+ in: strL + strCS + strR,
586
+ dir: bidi.RightToLeft,
587
+ n: len(strL + strCS),
588
+ err: ErrInvalid,
589
+ }, {
590
+ in: strL + strET,
591
+ dir: bidi.LeftToRight,
592
+ n: len(strL + strET),
593
+ err: ErrInvalid,
594
+ }, {
595
+ in: strL + strET + strR,
596
+ dir: bidi.RightToLeft,
597
+ n: len(strL + strET),
598
+ err: ErrInvalid,
599
+ }, {
600
+ in: strL + strON,
601
+ dir: bidi.LeftToRight,
602
+ n: len(strL + strON),
603
+ err: ErrInvalid,
604
+ }, {
605
+ in: strL + strON + strR,
606
+ dir: bidi.RightToLeft,
607
+ n: len(strL + strON),
608
+ err: ErrInvalid,
609
+ }, {
610
+ in: strL + strBN,
611
+ dir: bidi.LeftToRight,
612
+ n: len(strL + strBN),
613
+ err: ErrInvalid,
614
+ }, {
615
+ in: strL + strBN + strR,
616
+ dir: bidi.RightToLeft,
617
+ n: len(strL + strBN),
618
+ err: ErrInvalid,
619
+ }, {
620
+ in: strL + strR,
621
+ dir: bidi.RightToLeft,
622
+ n: len(strL),
623
+ err: ErrInvalid,
624
+ }, {
625
+ in: strL + strAL,
626
+ dir: bidi.RightToLeft,
627
+ n: len(strL),
628
+ err: ErrInvalid,
629
+ }, {
630
+ in: strL + strAN,
631
+ dir: bidi.RightToLeft,
632
+ n: len(strL),
633
+ err: ErrInvalid,
634
+ }, {
635
+ in: strL + strB,
636
+ dir: bidi.LeftToRight,
637
+ n: len(strL + strB),
638
+ err: ErrInvalid,
639
+ }, {
640
+ in: strL + strB + strR,
641
+ dir: bidi.RightToLeft,
642
+ n: len(strL + strB),
643
+ err: ErrInvalid,
644
+ }, {
645
+ in: strL + strS,
646
+ dir: bidi.LeftToRight,
647
+ n: len(strL + strS),
648
+ err: ErrInvalid,
649
+ }, {
650
+ in: strL + strS + strR,
651
+ dir: bidi.RightToLeft,
652
+ n: len(strL + strS),
653
+ err: ErrInvalid,
654
+ }, {
655
+ in: strL + strWS,
656
+ dir: bidi.LeftToRight,
657
+ n: len(strL + strWS),
658
+ err: ErrInvalid,
659
+ }, {
660
+ in: strL + strWS + strR,
661
+ dir: bidi.RightToLeft,
662
+ n: len(strL + strWS),
663
+ err: ErrInvalid,
664
+ }},
665
+
666
+ // Incremental processing.
667
+ 9: []ruleTest{{
668
+ in: "e\u0301", // é
669
+ dir: bidi.LeftToRight,
670
+
671
+ pSrc: 2,
672
+ nSrc: 1,
673
+ err0: transform.ErrShortSrc,
674
+ }, {
675
+ in: "e\u1000f", // é
676
+ dir: bidi.LeftToRight,
677
+
678
+ pSrc: 3,
679
+ nSrc: 1,
680
+ err0: transform.ErrShortSrc,
681
+ }, {
682
+ // Remain invalid once invalid.
683
+ in: strR + "ab",
684
+ dir: bidi.RightToLeft,
685
+ n: len(strR),
686
+ err: ErrInvalid,
687
+
688
+ pSrc: len(strR) + 1,
689
+ nSrc: len(strR),
690
+ err0: ErrInvalid,
691
+ }, {
692
+ // Short destination
693
+ in: "abcdefghij",
694
+ dir: bidi.LeftToRight,
695
+
696
+ pSrc: 10,
697
+ szDst: 5,
698
+ nSrc: 5,
699
+ err0: transform.ErrShortDst,
700
+ }, {
701
+ in: "\U000102f7",
702
+ dir: bidi.LeftToRight,
703
+ n: len("\U000102f7"),
704
+ err: ErrInvalid,
705
+ }, {
706
+ // Short destination splitting input rune
707
+ in: "e\u0301",
708
+ dir: bidi.LeftToRight,
709
+
710
+ pSrc: 3,
711
+ szDst: 2,
712
+ nSrc: 1,
713
+ err0: transform.ErrShortDst,
714
+ }, {
715
+ // Unicode 10.0.0 IDNA test string.
716
+ in: "FAX\u2a77\U0001d186",
717
+ dir: bidi.LeftToRight,
718
+ n: len("FAX\u2a77\U0001d186"),
719
+ err: ErrInvalid,
720
+ }, {
721
+ in: "\x80\u0660",
722
+ dir: bidi.RightToLeft,
723
+ n: 0,
724
+ err: ErrInvalid,
725
+ }},
726
+ }
727
+
728
+ func init() {
729
+ for rule, cases := range testCases {
730
+ for i, tc := range cases {
731
+ if tc.err == nil {
732
+ testCases[rule][i].n = len(tc.in)
733
+ }
734
+ }
735
+ }
736
+ }
737
+
738
+ func doTests(t *testing.T, fn func(t *testing.T, tc ruleTest)) {
739
+ for rule, cases := range testCases {
740
+ for i, tc := range cases {
741
+ name := fmt.Sprintf("%d/%d:%+q:%s", rule, i, tc.in, tc.in)
742
+ testtext.Run(t, name, func(t *testing.T) {
743
+ fn(t, tc)
744
+ })
745
+ }
746
+ }
747
+ }
748
+
749
+ func TestDirection(t *testing.T) {
750
+ doTests(t, func(t *testing.T, tc ruleTest) {
751
+ dir := Direction([]byte(tc.in))
752
+ if dir != tc.dir {
753
+ t.Errorf("dir was %v; want %v", dir, tc.dir)
754
+ }
755
+ })
756
+ }
757
+
758
+ func TestDirectionString(t *testing.T) {
759
+ doTests(t, func(t *testing.T, tc ruleTest) {
760
+ dir := DirectionString(tc.in)
761
+ if dir != tc.dir {
762
+ t.Errorf("dir was %v; want %v", dir, tc.dir)
763
+ }
764
+ })
765
+ }
766
+
767
+ func TestValid(t *testing.T) {
768
+ doTests(t, func(t *testing.T, tc ruleTest) {
769
+ got := Valid([]byte(tc.in))
770
+ want := tc.err == nil
771
+ if got != want {
772
+ t.Fatalf("Valid: got %v; want %v", got, want)
773
+ }
774
+
775
+ got = ValidString(tc.in)
776
+ want = tc.err == nil
777
+ if got != want {
778
+ t.Fatalf("Valid: got %v; want %v", got, want)
779
+ }
780
+ })
781
+ }
782
+
783
+ func TestSpan(t *testing.T) {
784
+ doTests(t, func(t *testing.T, tc ruleTest) {
785
+ // Skip tests that test for limited destination buffer size.
786
+ if tc.szDst > 0 {
787
+ return
788
+ }
789
+
790
+ r := New()
791
+ src := []byte(tc.in)
792
+
793
+ n, err := r.Span(src[:tc.pSrc], tc.pSrc == len(tc.in))
794
+ if err != tc.err0 {
795
+ t.Errorf("err0 was %v; want %v", err, tc.err0)
796
+ }
797
+ if n != tc.nSrc {
798
+ t.Fatalf("nSrc was %d; want %d", n, tc.nSrc)
799
+ }
800
+
801
+ n, err = r.Span(src[n:], true)
802
+ if err != tc.err {
803
+ t.Errorf("error was %v; want %v", err, tc.err)
804
+ }
805
+ if got := n + tc.nSrc; got != tc.n {
806
+ t.Errorf("n was %d; want %d", got, tc.n)
807
+ }
808
+ })
809
+ }
810
+
811
+ func TestTransform(t *testing.T) {
812
+ doTests(t, func(t *testing.T, tc ruleTest) {
813
+ r := New()
814
+
815
+ src := []byte(tc.in)
816
+ dst := make([]byte, len(tc.in))
817
+ if tc.szDst > 0 {
818
+ dst = make([]byte, tc.szDst)
819
+ }
820
+
821
+ // First transform operates on a zero-length string for most tests.
822
+ nDst, nSrc, err := r.Transform(dst, src[:tc.pSrc], tc.pSrc == len(tc.in))
823
+ if err != tc.err0 {
824
+ t.Errorf("err0 was %v; want %v", err, tc.err0)
825
+ }
826
+ if nDst != nSrc {
827
+ t.Fatalf("nDst (%d) and nSrc (%d) should match", nDst, nSrc)
828
+ }
829
+ if nSrc != tc.nSrc {
830
+ t.Fatalf("nSrc was %d; want %d", nSrc, tc.nSrc)
831
+ }
832
+
833
+ dst1 := make([]byte, len(tc.in))
834
+ copy(dst1, dst[:nDst])
835
+
836
+ nDst, nSrc, err = r.Transform(dst1[nDst:], src[nSrc:], true)
837
+ if err != tc.err {
838
+ t.Errorf("error was %v; want %v", err, tc.err)
839
+ }
840
+ if nDst != nSrc {
841
+ t.Fatalf("nDst (%d) and nSrc (%d) should match", nDst, nSrc)
842
+ }
843
+ n := nSrc + tc.nSrc
844
+ if n != tc.n {
845
+ t.Fatalf("n was %d; want %d", n, tc.n)
846
+ }
847
+ if got, want := string(dst1[:n]), tc.in[:tc.n]; got != want {
848
+ t.Errorf("got %+q; want %+q", got, want)
849
+ }
850
+ })
851
+ }