rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
data/core/encoding.rbs ADDED
@@ -0,0 +1,1368 @@
1
+ # <!-- rdoc-file=encoding.c -->
2
+ # An Encoding instance represents a character encoding usable in Ruby. It is
3
+ # defined as a constant under the Encoding namespace. It has a name and,
4
+ # optionally, aliases:
5
+ #
6
+ # Encoding::US_ASCII.name # => "US-ASCII"
7
+ # Encoding::US_ASCII.names # => ["US-ASCII", "ASCII", "ANSI_X3.4-1968", "646"]
8
+ #
9
+ # A Ruby method that accepts an encoding as an argument will accept:
10
+ #
11
+ # * An Encoding object.
12
+ # * The name of an encoding.
13
+ # * An alias for an encoding name.
14
+ #
15
+ # These are equivalent:
16
+ #
17
+ # 'foo'.encode(Encoding::US_ASCII) # Encoding object.
18
+ # 'foo'.encode('US-ASCII') # Encoding name.
19
+ # 'foo'.encode('ASCII') # Encoding alias.
20
+ #
21
+ # For a full discussion of encodings and their uses, see [the Encodings
22
+ # document](rdoc-ref:encodings.rdoc).
23
+ #
24
+ # Encoding::ASCII_8BIT is a special-purpose encoding that is usually used for a
25
+ # string of bytes, not a string of characters. But as the name indicates, its
26
+ # characters in the ASCII range are considered as ASCII characters. This is
27
+ # useful when you use other ASCII-compatible encodings.
28
+ #
29
+ class Encoding
30
+ def self._load: [T] (T) -> T
31
+
32
+ # <!--
33
+ # rdoc-file=encoding.c
34
+ # - Encoding.locale_charmap -> string
35
+ # -->
36
+ # Returns the locale charmap name. It returns nil if no appropriate information.
37
+ #
38
+ # Debian GNU/Linux
39
+ # LANG=C
40
+ # Encoding.locale_charmap #=> "ANSI_X3.4-1968"
41
+ # LANG=ja_JP.EUC-JP
42
+ # Encoding.locale_charmap #=> "EUC-JP"
43
+ #
44
+ # SunOS 5
45
+ # LANG=C
46
+ # Encoding.locale_charmap #=> "646"
47
+ # LANG=ja
48
+ # Encoding.locale_charmap #=> "eucJP"
49
+ #
50
+ # The result is highly platform dependent. So
51
+ # Encoding.find(Encoding.locale_charmap) may cause an error. If you need some
52
+ # encoding object even for unknown locale, Encoding.find("locale") can be used.
53
+ #
54
+ def self.locale_charmap: () -> String
55
+
56
+ # <!--
57
+ # rdoc-file=encoding.c
58
+ # - Encoding.aliases -> {"alias1" => "orig1", "alias2" => "orig2", ...}
59
+ # -->
60
+ # Returns the hash of available encoding alias and original encoding name.
61
+ #
62
+ # Encoding.aliases
63
+ # #=> {"BINARY"=>"ASCII-8BIT", "ASCII"=>"US-ASCII", "ANSI_X3.4-1968"=>"US-ASCII",
64
+ # "SJIS"=>"Windows-31J", "eucJP"=>"EUC-JP", "CP932"=>"Windows-31J"}
65
+ #
66
+ def self.aliases: () -> Hash[String, String]
67
+
68
+ # <!--
69
+ # rdoc-file=encoding.c
70
+ # - Encoding.compatible?(obj1, obj2) -> enc or nil
71
+ # -->
72
+ # Checks the compatibility of two objects.
73
+ #
74
+ # If the objects are both strings they are compatible when they are
75
+ # concatenatable. The encoding of the concatenated string will be returned if
76
+ # they are compatible, nil if they are not.
77
+ #
78
+ # Encoding.compatible?("\xa1".force_encoding("iso-8859-1"), "b")
79
+ # #=> #<Encoding:ISO-8859-1>
80
+ #
81
+ # Encoding.compatible?(
82
+ # "\xa1".force_encoding("iso-8859-1"),
83
+ # "\xa1\xa1".force_encoding("euc-jp"))
84
+ # #=> nil
85
+ #
86
+ # If the objects are non-strings their encodings are compatible when they have
87
+ # an encoding and:
88
+ # * Either encoding is US-ASCII compatible
89
+ # * One of the encodings is a 7-bit encoding
90
+ #
91
+ def self.compatible?: (untyped obj1, untyped obj2) -> Encoding?
92
+
93
+ # <!--
94
+ # rdoc-file=encoding.c
95
+ # - Encoding.default_external -> enc
96
+ # -->
97
+ # Returns default external encoding.
98
+ #
99
+ # The default external encoding is used by default for strings created from the
100
+ # following locations:
101
+ #
102
+ # * CSV
103
+ # * File data read from disk
104
+ # * SDBM
105
+ # * StringIO
106
+ # * Zlib::GzipReader
107
+ # * Zlib::GzipWriter
108
+ # * String#inspect
109
+ # * Regexp#inspect
110
+ #
111
+ # While strings created from these locations will have this encoding, the
112
+ # encoding may not be valid. Be sure to check String#valid_encoding?.
113
+ #
114
+ # File data written to disk will be transcoded to the default external encoding
115
+ # when written, if default_internal is not nil.
116
+ #
117
+ # The default external encoding is initialized by the -E option. If -E isn't
118
+ # set, it is initialized to UTF-8 on Windows and the locale on other operating
119
+ # systems.
120
+ #
121
+ def self.default_external: () -> Encoding
122
+
123
+ # <!--
124
+ # rdoc-file=encoding.c
125
+ # - Encoding.default_external = enc
126
+ # -->
127
+ # Sets default external encoding. You should not set Encoding::default_external
128
+ # in ruby code as strings created before changing the value may have a different
129
+ # encoding from strings created after the value was changed., instead you should
130
+ # use <code>ruby -E</code> to invoke ruby with the correct default_external.
131
+ #
132
+ # See Encoding::default_external for information on how the default external
133
+ # encoding is used.
134
+ #
135
+ def self.default_external=: (Encoding enc) -> Encoding
136
+ | [T < _ToStr] (T enc) -> T
137
+
138
+ # <!--
139
+ # rdoc-file=encoding.c
140
+ # - Encoding.default_internal -> enc
141
+ # -->
142
+ # Returns default internal encoding. Strings will be transcoded to the default
143
+ # internal encoding in the following places if the default internal encoding is
144
+ # not nil:
145
+ #
146
+ # * CSV
147
+ # * Etc.sysconfdir and Etc.systmpdir
148
+ # * File data read from disk
149
+ # * File names from Dir
150
+ # * Integer#chr
151
+ # * String#inspect and Regexp#inspect
152
+ # * Strings returned from Readline
153
+ # * Strings returned from SDBM
154
+ # * Time#zone
155
+ # * Values from ENV
156
+ # * Values in ARGV including $PROGRAM_NAME
157
+ #
158
+ # Additionally String#encode and String#encode! use the default internal
159
+ # encoding if no encoding is given.
160
+ #
161
+ # The script encoding (__ENCODING__), not default_internal, is used as the
162
+ # encoding of created strings.
163
+ #
164
+ # Encoding::default_internal is initialized with -E option or nil otherwise.
165
+ #
166
+ def self.default_internal: () -> Encoding?
167
+
168
+ # <!--
169
+ # rdoc-file=encoding.c
170
+ # - Encoding.default_internal = enc or nil
171
+ # -->
172
+ # Sets default internal encoding or removes default internal encoding when
173
+ # passed nil. You should not set Encoding::default_internal in ruby code as
174
+ # strings created before changing the value may have a different encoding from
175
+ # strings created after the change. Instead you should use <code>ruby -E</code>
176
+ # to invoke ruby with the correct default_internal.
177
+ #
178
+ # See Encoding::default_internal for information on how the default internal
179
+ # encoding is used.
180
+ #
181
+ def self.default_internal=: (Encoding enc) -> Encoding
182
+ | [T < _ToStr] (T enc) -> T
183
+ | (nil) -> nil
184
+
185
+ # <!--
186
+ # rdoc-file=encoding.c
187
+ # - Encoding.find(string) -> enc
188
+ # -->
189
+ # Search the encoding with specified *name*. *name* should be a string.
190
+ #
191
+ # Encoding.find("US-ASCII") #=> #<Encoding:US-ASCII>
192
+ #
193
+ # Names which this method accept are encoding names and aliases including
194
+ # following special aliases
195
+ #
196
+ # "external"
197
+ # : default external encoding
198
+ #
199
+ # "internal"
200
+ # : default internal encoding
201
+ #
202
+ # "locale"
203
+ # : locale encoding
204
+ #
205
+ # "filesystem"
206
+ # : filesystem encoding
207
+ #
208
+ #
209
+ # An ArgumentError is raised when no encoding with *name*. Only
210
+ # <code>Encoding.find("internal")</code> however returns nil when no encoding
211
+ # named "internal", in other words, when Ruby has no default internal encoding.
212
+ #
213
+ def self.find: (encoding enc) -> Encoding?
214
+
215
+ # <!--
216
+ # rdoc-file=encoding.c
217
+ # - Encoding.list -> [enc1, enc2, ...]
218
+ # -->
219
+ # Returns the list of loaded encodings.
220
+ #
221
+ # Encoding.list
222
+ # #=> [#<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>,
223
+ # #<Encoding:ISO-2022-JP (dummy)>]
224
+ #
225
+ # Encoding.find("US-ASCII")
226
+ # #=> #<Encoding:US-ASCII>
227
+ #
228
+ # Encoding.list
229
+ # #=> [#<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>,
230
+ # #<Encoding:US-ASCII>, #<Encoding:ISO-2022-JP (dummy)>]
231
+ #
232
+ def self.list: () -> Array[Encoding]
233
+
234
+ # <!--
235
+ # rdoc-file=encoding.c
236
+ # - Encoding.name_list -> ["enc1", "enc2", ...]
237
+ # -->
238
+ # Returns the list of available encoding names.
239
+ #
240
+ # Encoding.name_list
241
+ # #=> ["US-ASCII", "ASCII-8BIT", "UTF-8",
242
+ # "ISO-8859-1", "Shift_JIS", "EUC-JP",
243
+ # "Windows-31J",
244
+ # "BINARY", "CP932", "eucJP"]
245
+ #
246
+ def self.name_list: () -> Array[String]
247
+
248
+ # <!--
249
+ # rdoc-file=encoding.c
250
+ # - enc.ascii_compatible? -> true or false
251
+ # -->
252
+ # Returns whether ASCII-compatible or not.
253
+ #
254
+ # Encoding::UTF_8.ascii_compatible? #=> true
255
+ # Encoding::UTF_16BE.ascii_compatible? #=> false
256
+ #
257
+ def ascii_compatible?: () -> bool
258
+
259
+ # <!--
260
+ # rdoc-file=encoding.c
261
+ # - enc.dummy? -> true or false
262
+ # -->
263
+ # Returns true for dummy encodings. A dummy encoding is an encoding for which
264
+ # character handling is not properly implemented. It is used for stateful
265
+ # encodings.
266
+ #
267
+ # Encoding::ISO_2022_JP.dummy? #=> true
268
+ # Encoding::UTF_8.dummy? #=> false
269
+ #
270
+ def dummy?: () -> bool
271
+
272
+ # <!--
273
+ # rdoc-file=encoding.c
274
+ # - enc.inspect -> string
275
+ # -->
276
+ # Returns a string which represents the encoding for programmers.
277
+ #
278
+ # Encoding::UTF_8.inspect #=> "#<Encoding:UTF-8>"
279
+ # Encoding::ISO_2022_JP.inspect #=> "#<Encoding:ISO-2022-JP (dummy)>"
280
+ #
281
+ def inspect: () -> String
282
+
283
+ # <!-- rdoc-file=encoding.c -->
284
+ # The name of the encoding.
285
+ #
286
+ # Encoding::UTF_8.name #=> "UTF-8"
287
+ #
288
+ def name: () -> String
289
+
290
+ # <!--
291
+ # rdoc-file=encoding.c
292
+ # - enc.names -> array
293
+ # -->
294
+ # Returns the list of name and aliases of the encoding.
295
+ #
296
+ # Encoding::WINDOWS_31J.names #=> ["Windows-31J", "CP932", "csWindows31J", "SJIS", "PCK"]
297
+ #
298
+ def names: () -> Array[String]
299
+
300
+ # <!-- rdoc-file=encoding.c -->
301
+ # The name of the encoding.
302
+ #
303
+ # Encoding::UTF_8.name #=> "UTF-8"
304
+ #
305
+ alias to_s name
306
+
307
+ ANSI_X3_4_1968: Encoding
308
+ ASCII: Encoding
309
+ ASCII_8BIT: Encoding
310
+ BIG5: Encoding
311
+ BIG5_HKSCS: Encoding
312
+ BIG5_HKSCS_2008: Encoding
313
+ BIG5_UAO: Encoding
314
+ BINARY: Encoding
315
+ Big5: Encoding
316
+ Big5_HKSCS: Encoding
317
+ Big5_HKSCS_2008: Encoding
318
+ Big5_UAO: Encoding
319
+ CESU_8: Encoding
320
+ CP1250: Encoding
321
+ CP1251: Encoding
322
+ CP1252: Encoding
323
+ CP1253: Encoding
324
+ CP1254: Encoding
325
+ CP1255: Encoding
326
+ CP1256: Encoding
327
+ CP1257: Encoding
328
+ CP1258: Encoding
329
+ CP437: Encoding
330
+ CP50220: Encoding
331
+ CP50221: Encoding
332
+ CP51932: Encoding
333
+ CP65000: Encoding
334
+ CP65001: Encoding
335
+ CP737: Encoding
336
+ CP775: Encoding
337
+ CP850: Encoding
338
+ CP852: Encoding
339
+ CP855: Encoding
340
+ CP857: Encoding
341
+ CP860: Encoding
342
+ CP861: Encoding
343
+ CP862: Encoding
344
+ CP863: Encoding
345
+ CP864: Encoding
346
+ CP865: Encoding
347
+ CP866: Encoding
348
+ CP869: Encoding
349
+ CP874: Encoding
350
+ CP878: Encoding
351
+ CP932: Encoding
352
+ CP936: Encoding
353
+ CP949: Encoding
354
+ CP950: Encoding
355
+ CP951: Encoding
356
+ CSWINDOWS31J: Encoding
357
+ CsWindows31J: Encoding
358
+ EBCDIC_CP_US: Encoding
359
+ EMACS_MULE: Encoding
360
+ EUCCN: Encoding
361
+ EUCJP: Encoding
362
+ EUCJP_MS: Encoding
363
+ EUCKR: Encoding
364
+ EUCTW: Encoding
365
+ EUC_CN: Encoding
366
+ EUC_JISX0213: Encoding
367
+ EUC_JIS_2004: Encoding
368
+ EUC_JP: Encoding
369
+ EUC_JP_MS: Encoding
370
+ EUC_KR: Encoding
371
+ EUC_TW: Encoding
372
+ Emacs_Mule: Encoding
373
+ EucCN: Encoding
374
+ EucJP: Encoding
375
+ EucJP_ms: Encoding
376
+ EucKR: Encoding
377
+ EucTW: Encoding
378
+ GB12345: Encoding
379
+ GB18030: Encoding
380
+ GB1988: Encoding
381
+ GB2312: Encoding
382
+ GBK: Encoding
383
+ IBM037: Encoding
384
+ IBM437: Encoding
385
+ IBM737: Encoding
386
+ IBM720: Encoding
387
+ CP720: Encoding
388
+ IBM775: Encoding
389
+ IBM850: Encoding
390
+ IBM852: Encoding
391
+ IBM855: Encoding
392
+ IBM857: Encoding
393
+ IBM860: Encoding
394
+ IBM861: Encoding
395
+ IBM862: Encoding
396
+ IBM863: Encoding
397
+ IBM864: Encoding
398
+ IBM865: Encoding
399
+ IBM866: Encoding
400
+ IBM869: Encoding
401
+ ISO2022_JP: Encoding
402
+ ISO2022_JP2: Encoding
403
+ ISO8859_1: Encoding
404
+ ISO8859_10: Encoding
405
+ ISO8859_11: Encoding
406
+ ISO8859_13: Encoding
407
+ ISO8859_14: Encoding
408
+ ISO8859_15: Encoding
409
+ ISO8859_16: Encoding
410
+ ISO8859_2: Encoding
411
+ ISO8859_3: Encoding
412
+ ISO8859_4: Encoding
413
+ ISO8859_5: Encoding
414
+ ISO8859_6: Encoding
415
+ ISO8859_7: Encoding
416
+ ISO8859_8: Encoding
417
+ ISO8859_9: Encoding
418
+ ISO_2022_JP: Encoding
419
+ ISO_2022_JP_2: Encoding
420
+ ISO_2022_JP_KDDI: Encoding
421
+ ISO_8859_1: Encoding
422
+ ISO_8859_10: Encoding
423
+ ISO_8859_11: Encoding
424
+ ISO_8859_13: Encoding
425
+ ISO_8859_14: Encoding
426
+ ISO_8859_15: Encoding
427
+ ISO_8859_16: Encoding
428
+ ISO_8859_2: Encoding
429
+ ISO_8859_3: Encoding
430
+ ISO_8859_4: Encoding
431
+ ISO_8859_5: Encoding
432
+ ISO_8859_6: Encoding
433
+ ISO_8859_7: Encoding
434
+ ISO_8859_8: Encoding
435
+ ISO_8859_9: Encoding
436
+ KOI8_R: Encoding
437
+ KOI8_U: Encoding
438
+ MACCENTEURO: Encoding
439
+ MACCROATIAN: Encoding
440
+ MACCYRILLIC: Encoding
441
+ MACGREEK: Encoding
442
+ MACICELAND: Encoding
443
+ MACJAPAN: Encoding
444
+ MACJAPANESE: Encoding
445
+ MACROMAN: Encoding
446
+ MACROMANIA: Encoding
447
+ MACTHAI: Encoding
448
+ MACTURKISH: Encoding
449
+ MACUKRAINE: Encoding
450
+ MacCentEuro: Encoding
451
+ MacCroatian: Encoding
452
+ MacCyrillic: Encoding
453
+ MacGreek: Encoding
454
+ MacIceland: Encoding
455
+ MacJapan: Encoding
456
+ MacJapanese: Encoding
457
+ MacRoman: Encoding
458
+ MacRomania: Encoding
459
+ MacThai: Encoding
460
+ MacTurkish: Encoding
461
+ MacUkraine: Encoding
462
+ PCK: Encoding
463
+ SHIFT_JIS: Encoding
464
+ SJIS: Encoding
465
+ SJIS_DOCOMO: Encoding
466
+ SJIS_DoCoMo: Encoding
467
+ SJIS_KDDI: Encoding
468
+ SJIS_SOFTBANK: Encoding
469
+ SJIS_SoftBank: Encoding
470
+ STATELESS_ISO_2022_JP: Encoding
471
+ STATELESS_ISO_2022_JP_KDDI: Encoding
472
+ Shift_JIS: Encoding
473
+ Stateless_ISO_2022_JP: Encoding
474
+ Stateless_ISO_2022_JP_KDDI: Encoding
475
+ TIS_620: Encoding
476
+ UCS_2BE: Encoding
477
+ UCS_4BE: Encoding
478
+ UCS_4LE: Encoding
479
+ US_ASCII: Encoding
480
+ UTF8_DOCOMO: Encoding
481
+ UTF8_DoCoMo: Encoding
482
+ UTF8_KDDI: Encoding
483
+ UTF8_MAC: Encoding
484
+ UTF8_SOFTBANK: Encoding
485
+ UTF8_SoftBank: Encoding
486
+ UTF_16: Encoding
487
+ UTF_16BE: Encoding
488
+ UTF_16LE: Encoding
489
+ UTF_32: Encoding
490
+ UTF_32BE: Encoding
491
+ UTF_32LE: Encoding
492
+ UTF_7: Encoding
493
+ UTF_8: Encoding
494
+ UTF_8_HFS: Encoding
495
+ UTF_8_MAC: Encoding
496
+ WINDOWS_1250: Encoding
497
+ WINDOWS_1251: Encoding
498
+ WINDOWS_1252: Encoding
499
+ WINDOWS_1253: Encoding
500
+ WINDOWS_1254: Encoding
501
+ WINDOWS_1255: Encoding
502
+ WINDOWS_1256: Encoding
503
+ WINDOWS_1257: Encoding
504
+ WINDOWS_1258: Encoding
505
+ WINDOWS_31J: Encoding
506
+ WINDOWS_874: Encoding
507
+ Windows_1250: Encoding
508
+ Windows_1251: Encoding
509
+ Windows_1252: Encoding
510
+ Windows_1253: Encoding
511
+ Windows_1254: Encoding
512
+ Windows_1255: Encoding
513
+ Windows_1256: Encoding
514
+ Windows_1257: Encoding
515
+ Windows_1258: Encoding
516
+ Windows_31J: Encoding
517
+ Windows_874: Encoding
518
+
519
+ # <!-- rdoc-file=error.c -->
520
+ # Raised by Encoding and String methods when the source encoding is incompatible
521
+ # with the target encoding.
522
+ #
523
+ class CompatibilityError < EncodingError
524
+ end
525
+
526
+ # <!-- rdoc-file=transcode.c -->
527
+ # Raised by transcoding methods when a named encoding does not correspond with a
528
+ # known converter.
529
+ #
530
+ class ConverterNotFoundError < EncodingError
531
+ end
532
+
533
+ # <!-- rdoc-file=transcode.c -->
534
+ # Raised by Encoding and String methods when the string being transcoded
535
+ # contains a byte invalid for the either the source or target encoding.
536
+ #
537
+ class InvalidByteSequenceError < EncodingError
538
+ # <!--
539
+ # rdoc-file=transcode.c
540
+ # - ecerr.destination_encoding -> string
541
+ # -->
542
+ # Returns the destination encoding as an encoding object.
543
+ #
544
+ def destination_encoding: () -> Encoding
545
+
546
+ # <!--
547
+ # rdoc-file=transcode.c
548
+ # - ecerr.destination_encoding_name -> string
549
+ # -->
550
+ # Returns the destination encoding name as a string.
551
+ #
552
+ def destination_encoding_name: () -> String
553
+
554
+ # <!--
555
+ # rdoc-file=transcode.c
556
+ # - ecerr.error_bytes -> string
557
+ # -->
558
+ # Returns the discarded bytes when Encoding::InvalidByteSequenceError occurs.
559
+ #
560
+ # ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")
561
+ # begin
562
+ # ec.convert("abc\xA1\xFFdef")
563
+ # rescue Encoding::InvalidByteSequenceError
564
+ # p $! #=> #<Encoding::InvalidByteSequenceError: "\xA1" followed by "\xFF" on EUC-JP>
565
+ # puts $!.error_bytes.dump #=> "\xA1"
566
+ # puts $!.readagain_bytes.dump #=> "\xFF"
567
+ # end
568
+ #
569
+ def error_bytes: () -> String
570
+
571
+ # <!--
572
+ # rdoc-file=transcode.c
573
+ # - ecerr.incomplete_input? -> true or false
574
+ # -->
575
+ # Returns true if the invalid byte sequence error is caused by premature end of
576
+ # string.
577
+ #
578
+ # ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")
579
+ #
580
+ # begin
581
+ # ec.convert("abc\xA1z")
582
+ # rescue Encoding::InvalidByteSequenceError
583
+ # p $! #=> #<Encoding::InvalidByteSequenceError: "\xA1" followed by "z" on EUC-JP>
584
+ # p $!.incomplete_input? #=> false
585
+ # end
586
+ #
587
+ # begin
588
+ # ec.convert("abc\xA1")
589
+ # ec.finish
590
+ # rescue Encoding::InvalidByteSequenceError
591
+ # p $! #=> #<Encoding::InvalidByteSequenceError: incomplete "\xA1" on EUC-JP>
592
+ # p $!.incomplete_input? #=> true
593
+ # end
594
+ #
595
+ def incomplete_input?: () -> bool
596
+
597
+ # <!--
598
+ # rdoc-file=transcode.c
599
+ # - ecerr.readagain_bytes -> string
600
+ # -->
601
+ # Returns the bytes to be read again when Encoding::InvalidByteSequenceError
602
+ # occurs.
603
+ #
604
+ def readagain_bytes: () -> String
605
+
606
+ # <!--
607
+ # rdoc-file=transcode.c
608
+ # - ecerr.source_encoding -> encoding
609
+ # -->
610
+ # Returns the source encoding as an encoding object.
611
+ #
612
+ # Note that the result may not be equal to the source encoding of the encoding
613
+ # converter if the conversion has multiple steps.
614
+ #
615
+ # ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP") # ISO-8859-1 -> UTF-8 -> EUC-JP
616
+ # begin
617
+ # ec.convert("\xa0") # NO-BREAK SPACE, which is available in UTF-8 but not in EUC-JP.
618
+ # rescue Encoding::UndefinedConversionError
619
+ # p $!.source_encoding #=> #<Encoding:UTF-8>
620
+ # p $!.destination_encoding #=> #<Encoding:EUC-JP>
621
+ # p $!.source_encoding_name #=> "UTF-8"
622
+ # p $!.destination_encoding_name #=> "EUC-JP"
623
+ # end
624
+ #
625
+ def source_encoding: () -> Encoding
626
+
627
+ # <!--
628
+ # rdoc-file=transcode.c
629
+ # - ecerr.source_encoding_name -> string
630
+ # -->
631
+ # Returns the source encoding name as a string.
632
+ #
633
+ def source_encoding_name: () -> String
634
+ end
635
+
636
+ # <!-- rdoc-file=transcode.c -->
637
+ # Raised by Encoding and String methods when a transcoding operation fails.
638
+ #
639
+ class UndefinedConversionError < EncodingError
640
+ # <!--
641
+ # rdoc-file=transcode.c
642
+ # - ecerr.destination_encoding -> string
643
+ # -->
644
+ # Returns the destination encoding as an encoding object.
645
+ #
646
+ def destination_encoding: () -> Encoding
647
+
648
+ # <!--
649
+ # rdoc-file=transcode.c
650
+ # - ecerr.destination_encoding_name -> string
651
+ # -->
652
+ # Returns the destination encoding name as a string.
653
+ #
654
+ def destination_encoding_name: () -> String
655
+
656
+ # <!--
657
+ # rdoc-file=transcode.c
658
+ # - ecerr.error_char -> string
659
+ # -->
660
+ # Returns the one-character string which cause
661
+ # Encoding::UndefinedConversionError.
662
+ #
663
+ # ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP")
664
+ # begin
665
+ # ec.convert("\xa0")
666
+ # rescue Encoding::UndefinedConversionError
667
+ # puts $!.error_char.dump #=> "\xC2\xA0"
668
+ # p $!.error_char.encoding #=> #<Encoding:UTF-8>
669
+ # end
670
+ #
671
+ def error_char: () -> String
672
+
673
+ # <!--
674
+ # rdoc-file=transcode.c
675
+ # - ecerr.source_encoding -> encoding
676
+ # -->
677
+ # Returns the source encoding as an encoding object.
678
+ #
679
+ # Note that the result may not be equal to the source encoding of the encoding
680
+ # converter if the conversion has multiple steps.
681
+ #
682
+ # ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP") # ISO-8859-1 -> UTF-8 -> EUC-JP
683
+ # begin
684
+ # ec.convert("\xa0") # NO-BREAK SPACE, which is available in UTF-8 but not in EUC-JP.
685
+ # rescue Encoding::UndefinedConversionError
686
+ # p $!.source_encoding #=> #<Encoding:UTF-8>
687
+ # p $!.destination_encoding #=> #<Encoding:EUC-JP>
688
+ # p $!.source_encoding_name #=> "UTF-8"
689
+ # p $!.destination_encoding_name #=> "EUC-JP"
690
+ # end
691
+ #
692
+ def source_encoding: () -> Encoding
693
+
694
+ # <!--
695
+ # rdoc-file=transcode.c
696
+ # - ecerr.source_encoding_name -> string
697
+ # -->
698
+ # Returns the source encoding name as a string.
699
+ #
700
+ def source_encoding_name: () -> String
701
+ end
702
+ end
703
+
704
+ # <!-- rdoc-file=transcode.c -->
705
+ # Encoding conversion class.
706
+ #
707
+ class Encoding::Converter < Object
708
+ type encoding = String | Encoding
709
+ type decorator = "universal_newline"
710
+ | "crlf_newline"
711
+ | "cr_newline"
712
+ | "xml_text_escape"
713
+ | "xml_attr_content_escape"
714
+ | "xml_attr_quote"
715
+ type conversion_path = Array[[encoding, encoding] | decorator]
716
+ type convert_result = :invalid_byte_sequence
717
+ | :incomplete_input
718
+ | :undefined_conversion
719
+ | :after_output
720
+ | :destination_buffer_full
721
+ | :source_buffer_empty
722
+ | :finished
723
+
724
+ # <!--
725
+ # rdoc-file=transcode.c
726
+ # - Encoding::Converter.asciicompat_encoding(string) -> encoding or nil
727
+ # - Encoding::Converter.asciicompat_encoding(encoding) -> encoding or nil
728
+ # -->
729
+ # Returns the corresponding ASCII compatible encoding.
730
+ #
731
+ # Returns nil if the argument is an ASCII compatible encoding.
732
+ #
733
+ # "corresponding ASCII compatible encoding" is an ASCII compatible encoding
734
+ # which can represents exactly the same characters as the given ASCII
735
+ # incompatible encoding. So, no conversion undefined error occurs when
736
+ # converting between the two encodings.
737
+ #
738
+ # Encoding::Converter.asciicompat_encoding("ISO-2022-JP") #=> #<Encoding:stateless-ISO-2022-JP>
739
+ # Encoding::Converter.asciicompat_encoding("UTF-16BE") #=> #<Encoding:UTF-8>
740
+ # Encoding::Converter.asciicompat_encoding("UTF-8") #=> nil
741
+ #
742
+ def self.asciicompat_encoding: (encoding enc) -> Encoding?
743
+
744
+ # <!--
745
+ # rdoc-file=transcode.c
746
+ # - Encoding::Converter.search_convpath(source_encoding, destination_encoding) -> ary
747
+ # - Encoding::Converter.search_convpath(source_encoding, destination_encoding, opt) -> ary
748
+ # -->
749
+ # Returns a conversion path.
750
+ #
751
+ # p Encoding::Converter.search_convpath("ISO-8859-1", "EUC-JP")
752
+ # #=> [[#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>],
753
+ # # [#<Encoding:UTF-8>, #<Encoding:EUC-JP>]]
754
+ #
755
+ # p Encoding::Converter.search_convpath("ISO-8859-1", "EUC-JP", universal_newline: true)
756
+ # or
757
+ # p Encoding::Converter.search_convpath("ISO-8859-1", "EUC-JP", newline: :universal)
758
+ # #=> [[#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>],
759
+ # # [#<Encoding:UTF-8>, #<Encoding:EUC-JP>],
760
+ # # "universal_newline"]
761
+ #
762
+ # p Encoding::Converter.search_convpath("ISO-8859-1", "UTF-32BE", universal_newline: true)
763
+ # or
764
+ # p Encoding::Converter.search_convpath("ISO-8859-1", "UTF-32BE", newline: :universal)
765
+ # #=> [[#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>],
766
+ # # "universal_newline",
767
+ # # [#<Encoding:UTF-8>, #<Encoding:UTF-32BE>]]
768
+ #
769
+ def self.search_convpath: (
770
+ encoding source,
771
+ encoding destination,
772
+ ?newline: :universal | :crlf | :cr,
773
+ ?universal_newline: bool,
774
+ ?crlf_newline: bool,
775
+ ?cr_newline: bool,
776
+ ?xml: :text | :attr
777
+ ) -> conversion_path
778
+
779
+ # <!--
780
+ # rdoc-file=transcode.c
781
+ # - ec == other -> true or false
782
+ # -->
783
+ #
784
+ def ==: (untyped) -> bool
785
+
786
+ # <!--
787
+ # rdoc-file=transcode.c
788
+ # - ec.convert(source_string) -> destination_string
789
+ # -->
790
+ # Convert source_string and return destination_string.
791
+ #
792
+ # source_string is assumed as a part of source. i.e. :partial_input=>true is
793
+ # specified internally. finish method should be used last.
794
+ #
795
+ # ec = Encoding::Converter.new("utf-8", "euc-jp")
796
+ # puts ec.convert("\u3042").dump #=> "\xA4\xA2"
797
+ # puts ec.finish.dump #=> ""
798
+ #
799
+ # ec = Encoding::Converter.new("euc-jp", "utf-8")
800
+ # puts ec.convert("\xA4").dump #=> ""
801
+ # puts ec.convert("\xA2").dump #=> "\xE3\x81\x82"
802
+ # puts ec.finish.dump #=> ""
803
+ #
804
+ # ec = Encoding::Converter.new("utf-8", "iso-2022-jp")
805
+ # puts ec.convert("\xE3").dump #=> "".force_encoding("ISO-2022-JP")
806
+ # puts ec.convert("\x81").dump #=> "".force_encoding("ISO-2022-JP")
807
+ # puts ec.convert("\x82").dump #=> "\e$B$\"".force_encoding("ISO-2022-JP")
808
+ # puts ec.finish.dump #=> "\e(B".force_encoding("ISO-2022-JP")
809
+ #
810
+ # If a conversion error occur, Encoding::UndefinedConversionError or
811
+ # Encoding::InvalidByteSequenceError is raised. Encoding::Converter#convert
812
+ # doesn't supply methods to recover or restart from these exceptions. When you
813
+ # want to handle these conversion errors, use
814
+ # Encoding::Converter#primitive_convert.
815
+ #
816
+ def convert: (String source) -> String
817
+
818
+ # <!--
819
+ # rdoc-file=transcode.c
820
+ # - ec.convpath -> ary
821
+ # -->
822
+ # Returns the conversion path of ec.
823
+ #
824
+ # The result is an array of conversions.
825
+ #
826
+ # ec = Encoding::Converter.new("ISO-8859-1", "EUC-JP", crlf_newline: true)
827
+ # p ec.convpath
828
+ # #=> [[#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>],
829
+ # # [#<Encoding:UTF-8>, #<Encoding:EUC-JP>],
830
+ # # "crlf_newline"]
831
+ #
832
+ # Each element of the array is a pair of encodings or a string. A pair means an
833
+ # encoding conversion. A string means a decorator.
834
+ #
835
+ # In the above example, [#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>] means a
836
+ # converter from ISO-8859-1 to UTF-8. "crlf_newline" means newline converter
837
+ # from LF to CRLF.
838
+ #
839
+ def convpath: () -> conversion_path
840
+
841
+ # <!--
842
+ # rdoc-file=transcode.c
843
+ # - ec.destination_encoding -> encoding
844
+ # -->
845
+ # Returns the destination encoding as an Encoding object.
846
+ #
847
+ def destination_encoding: () -> Encoding
848
+
849
+ # <!--
850
+ # rdoc-file=transcode.c
851
+ # - ec.finish -> string
852
+ # -->
853
+ # Finishes the converter. It returns the last part of the converted string.
854
+ #
855
+ # ec = Encoding::Converter.new("utf-8", "iso-2022-jp")
856
+ # p ec.convert("\u3042") #=> "\e$B$\""
857
+ # p ec.finish #=> "\e(B"
858
+ #
859
+ def finish: () -> String
860
+
861
+ # <!--
862
+ # rdoc-file=transcode.c
863
+ # - ec.insert_output(string) -> nil
864
+ # -->
865
+ # Inserts string into the encoding converter. The string will be converted to
866
+ # the destination encoding and output on later conversions.
867
+ #
868
+ # If the destination encoding is stateful, string is converted according to the
869
+ # state and the state is updated.
870
+ #
871
+ # This method should be used only when a conversion error occurs.
872
+ #
873
+ # ec = Encoding::Converter.new("utf-8", "iso-8859-1")
874
+ # src = "HIRAGANA LETTER A is \u{3042}."
875
+ # dst = ""
876
+ # p ec.primitive_convert(src, dst) #=> :undefined_conversion
877
+ # puts "[#{dst.dump}, #{src.dump}]" #=> ["HIRAGANA LETTER A is ", "."]
878
+ # ec.insert_output("<err>")
879
+ # p ec.primitive_convert(src, dst) #=> :finished
880
+ # puts "[#{dst.dump}, #{src.dump}]" #=> ["HIRAGANA LETTER A is <err>.", ""]
881
+ #
882
+ # ec = Encoding::Converter.new("utf-8", "iso-2022-jp")
883
+ # src = "\u{306F 3041 3068 2661 3002}" # U+2661 is not representable in iso-2022-jp
884
+ # dst = ""
885
+ # p ec.primitive_convert(src, dst) #=> :undefined_conversion
886
+ # puts "[#{dst.dump}, #{src.dump}]" #=> ["\e$B$O$!$H".force_encoding("ISO-2022-JP"), "\xE3\x80\x82"]
887
+ # ec.insert_output "?" # state change required to output "?".
888
+ # p ec.primitive_convert(src, dst) #=> :finished
889
+ # puts "[#{dst.dump}, #{src.dump}]" #=> ["\e$B$O$!$H\e(B?\e$B!#\e(B".force_encoding("ISO-2022-JP"), ""]
890
+ #
891
+ def insert_output: (String) -> nil
892
+
893
+ # <!--
894
+ # rdoc-file=transcode.c
895
+ # - ec.inspect -> string
896
+ # -->
897
+ # Returns a printable version of *ec*
898
+ #
899
+ # ec = Encoding::Converter.new("iso-8859-1", "utf-8")
900
+ # puts ec.inspect #=> #<Encoding::Converter: ISO-8859-1 to UTF-8>
901
+ #
902
+ def inspect: () -> String
903
+
904
+ # <!--
905
+ # rdoc-file=transcode.c
906
+ # - ec.last_error -> exception or nil
907
+ # -->
908
+ # Returns an exception object for the last conversion. Returns nil if the last
909
+ # conversion did not produce an error.
910
+ #
911
+ # "error" means that Encoding::InvalidByteSequenceError and
912
+ # Encoding::UndefinedConversionError for Encoding::Converter#convert and
913
+ # :invalid_byte_sequence, :incomplete_input and :undefined_conversion for
914
+ # Encoding::Converter#primitive_convert.
915
+ #
916
+ # ec = Encoding::Converter.new("utf-8", "iso-8859-1")
917
+ # p ec.primitive_convert(src="\xf1abcd", dst="") #=> :invalid_byte_sequence
918
+ # p ec.last_error #=> #<Encoding::InvalidByteSequenceError: "\xF1" followed by "a" on UTF-8>
919
+ # p ec.primitive_convert(src, dst, nil, 1) #=> :destination_buffer_full
920
+ # p ec.last_error #=> nil
921
+ #
922
+ def last_error: () -> ( Encoding::InvalidByteSequenceError
923
+ | Encoding::UndefinedConversionError
924
+ | nil )
925
+
926
+ # <!--
927
+ # rdoc-file=transcode.c
928
+ # - ec.primitive_convert(source_buffer, destination_buffer) -> symbol
929
+ # - ec.primitive_convert(source_buffer, destination_buffer, destination_byteoffset) -> symbol
930
+ # - ec.primitive_convert(source_buffer, destination_buffer, destination_byteoffset, destination_bytesize) -> symbol
931
+ # - ec.primitive_convert(source_buffer, destination_buffer, destination_byteoffset, destination_bytesize, opt) -> symbol
932
+ # -->
933
+ # possible opt elements:
934
+ # hash form:
935
+ # :partial_input => true # source buffer may be part of larger source
936
+ # :after_output => true # stop conversion after output before input
937
+ # integer form:
938
+ # Encoding::Converter::PARTIAL_INPUT
939
+ # Encoding::Converter::AFTER_OUTPUT
940
+ #
941
+ # possible results:
942
+ # :invalid_byte_sequence
943
+ # :incomplete_input
944
+ # :undefined_conversion
945
+ # :after_output
946
+ # :destination_buffer_full
947
+ # :source_buffer_empty
948
+ # :finished
949
+ #
950
+ # primitive_convert converts source_buffer into destination_buffer.
951
+ #
952
+ # source_buffer should be a string or nil. nil means an empty string.
953
+ #
954
+ # destination_buffer should be a string.
955
+ #
956
+ # destination_byteoffset should be an integer or nil. nil means the end of
957
+ # destination_buffer. If it is omitted, nil is assumed.
958
+ #
959
+ # destination_bytesize should be an integer or nil. nil means unlimited. If it
960
+ # is omitted, nil is assumed.
961
+ #
962
+ # opt should be nil, a hash or an integer. nil means no flags. If it is omitted,
963
+ # nil is assumed.
964
+ #
965
+ # primitive_convert converts the content of source_buffer from beginning and
966
+ # store the result into destination_buffer.
967
+ #
968
+ # destination_byteoffset and destination_bytesize specify the region which the
969
+ # converted result is stored. destination_byteoffset specifies the start
970
+ # position in destination_buffer in bytes. If destination_byteoffset is nil,
971
+ # destination_buffer.bytesize is used for appending the result.
972
+ # destination_bytesize specifies maximum number of bytes. If
973
+ # destination_bytesize is nil, destination size is unlimited. After conversion,
974
+ # destination_buffer is resized to destination_byteoffset + actually produced
975
+ # number of bytes. Also destination_buffer's encoding is set to
976
+ # destination_encoding.
977
+ #
978
+ # primitive_convert drops the converted part of source_buffer. the dropped part
979
+ # is converted in destination_buffer or buffered in Encoding::Converter object.
980
+ #
981
+ # primitive_convert stops conversion when one of following condition met.
982
+ # * invalid byte sequence found in source buffer (:invalid_byte_sequence)
983
+ # `primitive_errinfo` and `last_error` methods returns the detail of the
984
+ # error.
985
+ # * unexpected end of source buffer (:incomplete_input) this occur only when
986
+ # :partial_input is not specified. `primitive_errinfo` and `last_error`
987
+ # methods returns the detail of the error.
988
+ # * character not representable in output encoding (:undefined_conversion)
989
+ # `primitive_errinfo` and `last_error` methods returns the detail of the
990
+ # error.
991
+ # * after some output is generated, before input is done (:after_output) this
992
+ # occur only when :after_output is specified.
993
+ # * destination buffer is full (:destination_buffer_full) this occur only when
994
+ # destination_bytesize is non-nil.
995
+ # * source buffer is empty (:source_buffer_empty) this occur only when
996
+ # :partial_input is specified.
997
+ # * conversion is finished (:finished)
998
+ #
999
+ # example:
1000
+ # ec = Encoding::Converter.new("UTF-8", "UTF-16BE")
1001
+ # ret = ec.primitive_convert(src="pi", dst="", nil, 100)
1002
+ # p [ret, src, dst] #=> [:finished, "", "\x00p\x00i"]
1003
+ #
1004
+ # ec = Encoding::Converter.new("UTF-8", "UTF-16BE")
1005
+ # ret = ec.primitive_convert(src="pi", dst="", nil, 1)
1006
+ # p [ret, src, dst] #=> [:destination_buffer_full, "i", "\x00"]
1007
+ # ret = ec.primitive_convert(src, dst="", nil, 1)
1008
+ # p [ret, src, dst] #=> [:destination_buffer_full, "", "p"]
1009
+ # ret = ec.primitive_convert(src, dst="", nil, 1)
1010
+ # p [ret, src, dst] #=> [:destination_buffer_full, "", "\x00"]
1011
+ # ret = ec.primitive_convert(src, dst="", nil, 1)
1012
+ # p [ret, src, dst] #=> [:finished, "", "i"]
1013
+ #
1014
+ def primitive_convert: (
1015
+ String? source,
1016
+ String destination,
1017
+ ?Integer? destination_byteoffset,
1018
+ ?Integer? destination_bytesize,
1019
+ ?partial_input: bool,
1020
+ ?after_output: bool
1021
+ ) -> convert_result
1022
+ | (
1023
+ String? source,
1024
+ String destination,
1025
+ ?Integer? destination_byteoffset,
1026
+ ?Integer? destination_bytesize,
1027
+ ?Integer opt
1028
+ ) -> convert_result
1029
+
1030
+ # <!--
1031
+ # rdoc-file=transcode.c
1032
+ # - ec.primitive_errinfo -> array
1033
+ # -->
1034
+ # primitive_errinfo returns important information regarding the last error as a
1035
+ # 5-element array:
1036
+ #
1037
+ # [result, enc1, enc2, error_bytes, readagain_bytes]
1038
+ #
1039
+ # result is the last result of primitive_convert.
1040
+ #
1041
+ # Other elements are only meaningful when result is :invalid_byte_sequence,
1042
+ # :incomplete_input or :undefined_conversion.
1043
+ #
1044
+ # enc1 and enc2 indicate a conversion step as a pair of strings. For example, a
1045
+ # converter from EUC-JP to ISO-8859-1 converts a string as follows: EUC-JP ->
1046
+ # UTF-8 -> ISO-8859-1. So [enc1, enc2] is either ["EUC-JP", "UTF-8"] or
1047
+ # ["UTF-8", "ISO-8859-1"].
1048
+ #
1049
+ # error_bytes and readagain_bytes indicate the byte sequences which caused the
1050
+ # error. error_bytes is discarded portion. readagain_bytes is buffered portion
1051
+ # which is read again on next conversion.
1052
+ #
1053
+ # Example:
1054
+ #
1055
+ # # \xff is invalid as EUC-JP.
1056
+ # ec = Encoding::Converter.new("EUC-JP", "Shift_JIS")
1057
+ # ec.primitive_convert(src="\xff", dst="", nil, 10)
1058
+ # p ec.primitive_errinfo
1059
+ # #=> [:invalid_byte_sequence, "EUC-JP", "Shift_JIS", "\xFF", ""]
1060
+ #
1061
+ # # HIRAGANA LETTER A (\xa4\xa2 in EUC-JP) is not representable in ISO-8859-1.
1062
+ # # Since this error is occur in UTF-8 to ISO-8859-1 conversion,
1063
+ # # error_bytes is HIRAGANA LETTER A in UTF-8 (\xE3\x81\x82).
1064
+ # ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")
1065
+ # ec.primitive_convert(src="\xa4\xa2", dst="", nil, 10)
1066
+ # p ec.primitive_errinfo
1067
+ # #=> [:undefined_conversion, "UTF-8", "ISO-8859-1", "\xE3\x81\x82", ""]
1068
+ #
1069
+ # # partial character is invalid
1070
+ # ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")
1071
+ # ec.primitive_convert(src="\xa4", dst="", nil, 10)
1072
+ # p ec.primitive_errinfo
1073
+ # #=> [:incomplete_input, "EUC-JP", "UTF-8", "\xA4", ""]
1074
+ #
1075
+ # # Encoding::Converter::PARTIAL_INPUT prevents invalid errors by
1076
+ # # partial characters.
1077
+ # ec = Encoding::Converter.new("EUC-JP", "ISO-8859-1")
1078
+ # ec.primitive_convert(src="\xa4", dst="", nil, 10, Encoding::Converter::PARTIAL_INPUT)
1079
+ # p ec.primitive_errinfo
1080
+ # #=> [:source_buffer_empty, nil, nil, nil, nil]
1081
+ #
1082
+ # # \xd8\x00\x00@ is invalid as UTF-16BE because
1083
+ # # no low surrogate after high surrogate (\xd8\x00).
1084
+ # # It is detected by 3rd byte (\00) which is part of next character.
1085
+ # # So the high surrogate (\xd8\x00) is discarded and
1086
+ # # the 3rd byte is read again later.
1087
+ # # Since the byte is buffered in ec, it is dropped from src.
1088
+ # ec = Encoding::Converter.new("UTF-16BE", "UTF-8")
1089
+ # ec.primitive_convert(src="\xd8\x00\x00@", dst="", nil, 10)
1090
+ # p ec.primitive_errinfo
1091
+ # #=> [:invalid_byte_sequence, "UTF-16BE", "UTF-8", "\xD8\x00", "\x00"]
1092
+ # p src
1093
+ # #=> "@"
1094
+ #
1095
+ # # Similar to UTF-16BE, \x00\xd8@\x00 is invalid as UTF-16LE.
1096
+ # # The problem is detected by 4th byte.
1097
+ # ec = Encoding::Converter.new("UTF-16LE", "UTF-8")
1098
+ # ec.primitive_convert(src="\x00\xd8@\x00", dst="", nil, 10)
1099
+ # p ec.primitive_errinfo
1100
+ # #=> [:invalid_byte_sequence, "UTF-16LE", "UTF-8", "\x00\xD8", "@\x00"]
1101
+ # p src
1102
+ # #=> ""
1103
+ #
1104
+ def primitive_errinfo: () -> [convert_result, String?, String?, String?, String?]
1105
+
1106
+ # <!--
1107
+ # rdoc-file=transcode.c
1108
+ # - ec.putback -> string
1109
+ # - ec.putback(max_numbytes) -> string
1110
+ # -->
1111
+ # Put back the bytes which will be converted.
1112
+ #
1113
+ # The bytes are caused by invalid_byte_sequence error. When
1114
+ # invalid_byte_sequence error, some bytes are discarded and some bytes are
1115
+ # buffered to be converted later. The latter bytes can be put back. It can be
1116
+ # observed by Encoding::InvalidByteSequenceError#readagain_bytes and
1117
+ # Encoding::Converter#primitive_errinfo.
1118
+ #
1119
+ # ec = Encoding::Converter.new("utf-16le", "iso-8859-1")
1120
+ # src = "\x00\xd8\x61\x00"
1121
+ # dst = ""
1122
+ # p ec.primitive_convert(src, dst) #=> :invalid_byte_sequence
1123
+ # p ec.primitive_errinfo #=> [:invalid_byte_sequence, "UTF-16LE", "UTF-8", "\x00\xD8", "a\x00"]
1124
+ # p ec.putback #=> "a\x00"
1125
+ # p ec.putback #=> "" # no more bytes to put back
1126
+ #
1127
+ def putback: (?Integer max_numbytes) -> String
1128
+
1129
+ # <!--
1130
+ # rdoc-file=transcode.c
1131
+ # - ec.replacement -> string
1132
+ # -->
1133
+ # Returns the replacement string.
1134
+ #
1135
+ # ec = Encoding::Converter.new("euc-jp", "us-ascii")
1136
+ # p ec.replacement #=> "?"
1137
+ #
1138
+ # ec = Encoding::Converter.new("euc-jp", "utf-8")
1139
+ # p ec.replacement #=> "\uFFFD"
1140
+ #
1141
+ def replacement: () -> String
1142
+
1143
+ # <!--
1144
+ # rdoc-file=transcode.c
1145
+ # - ec.replacement = string
1146
+ # -->
1147
+ # Sets the replacement string.
1148
+ #
1149
+ # ec = Encoding::Converter.new("utf-8", "us-ascii", :undef => :replace)
1150
+ # ec.replacement = "<undef>"
1151
+ # p ec.convert("a \u3042 b") #=> "a <undef> b"
1152
+ #
1153
+ def replacement=: (String str) -> String
1154
+
1155
+ # <!--
1156
+ # rdoc-file=transcode.c
1157
+ # - ec.source_encoding -> encoding
1158
+ # -->
1159
+ # Returns the source encoding as an Encoding object.
1160
+ #
1161
+ def source_encoding: () -> Encoding
1162
+
1163
+ private
1164
+
1165
+ # <!--
1166
+ # rdoc-file=transcode.c
1167
+ # - Encoding::Converter.new(source_encoding, destination_encoding)
1168
+ # - Encoding::Converter.new(source_encoding, destination_encoding, opt)
1169
+ # - Encoding::Converter.new(convpath)
1170
+ # -->
1171
+ # possible options elements:
1172
+ # hash form:
1173
+ # :invalid => nil # raise error on invalid byte sequence (default)
1174
+ # :invalid => :replace # replace invalid byte sequence
1175
+ # :undef => nil # raise error on undefined conversion (default)
1176
+ # :undef => :replace # replace undefined conversion
1177
+ # :replace => string # replacement string ("?" or "\uFFFD" if not specified)
1178
+ # :newline => :universal # decorator for converting CRLF and CR to LF
1179
+ # :newline => :lf # decorator for converting CRLF and CR to LF when writing
1180
+ # :newline => :crlf # decorator for converting LF to CRLF
1181
+ # :newline => :cr # decorator for converting LF to CR
1182
+ # :universal_newline => true # decorator for converting CRLF and CR to LF
1183
+ # :crlf_newline => true # decorator for converting LF to CRLF
1184
+ # :cr_newline => true # decorator for converting LF to CR
1185
+ # :lf_newline => true # decorator for converting CRLF and CR to LF when writing
1186
+ # :xml => :text # escape as XML CharData.
1187
+ # :xml => :attr # escape as XML AttValue
1188
+ # integer form:
1189
+ # Encoding::Converter::INVALID_REPLACE
1190
+ # Encoding::Converter::UNDEF_REPLACE
1191
+ # Encoding::Converter::UNDEF_HEX_CHARREF
1192
+ # Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR
1193
+ # Encoding::Converter::LF_NEWLINE_DECORATOR
1194
+ # Encoding::Converter::CRLF_NEWLINE_DECORATOR
1195
+ # Encoding::Converter::CR_NEWLINE_DECORATOR
1196
+ # Encoding::Converter::XML_TEXT_DECORATOR
1197
+ # Encoding::Converter::XML_ATTR_CONTENT_DECORATOR
1198
+ # Encoding::Converter::XML_ATTR_QUOTE_DECORATOR
1199
+ #
1200
+ # Encoding::Converter.new creates an instance of Encoding::Converter.
1201
+ #
1202
+ # Source_encoding and destination_encoding should be a string or Encoding
1203
+ # object.
1204
+ #
1205
+ # opt should be nil, a hash or an integer.
1206
+ #
1207
+ # convpath should be an array. convpath may contain
1208
+ # * two-element arrays which contain encodings or encoding names, or
1209
+ # * strings representing decorator names.
1210
+ #
1211
+ # Encoding::Converter.new optionally takes an option. The option should be a
1212
+ # hash or an integer. The option hash can contain :invalid => nil, etc. The
1213
+ # option integer should be logical-or of constants such as
1214
+ # Encoding::Converter::INVALID_REPLACE, etc.
1215
+ #
1216
+ # :invalid => nil
1217
+ # : Raise error on invalid byte sequence. This is a default behavior.
1218
+ #
1219
+ # :invalid => :replace
1220
+ # : Replace invalid byte sequence by replacement string.
1221
+ #
1222
+ # :undef => nil
1223
+ # : Raise an error if a character in source_encoding is not defined in
1224
+ # destination_encoding. This is a default behavior.
1225
+ #
1226
+ # :undef => :replace
1227
+ # : Replace undefined character in destination_encoding with replacement
1228
+ # string.
1229
+ #
1230
+ # :replace => string
1231
+ # : Specify the replacement string. If not specified, "uFFFD" is used for
1232
+ # Unicode encodings and "?" for others.
1233
+ #
1234
+ # :universal_newline => true
1235
+ # : Convert CRLF and CR to LF.
1236
+ #
1237
+ # :crlf_newline => true
1238
+ # : Convert LF to CRLF.
1239
+ #
1240
+ # :cr_newline => true
1241
+ # : Convert LF to CR.
1242
+ #
1243
+ # :lf_newline => true
1244
+ # : Convert CRLF and CR to LF (when writing).
1245
+ #
1246
+ # :xml => :text
1247
+ # : Escape as XML CharData. This form can be used as an HTML 4.0 #PCDATA.
1248
+ # * '&' -> '&amp;'
1249
+ # * '<' -> '&lt;'
1250
+ # * '>' -> '&gt;'
1251
+ # * undefined characters in destination_encoding -> hexadecimal CharRef
1252
+ # such as &#xHH;
1253
+ #
1254
+ # :xml => :attr
1255
+ # : Escape as XML AttValue. The converted result is quoted as "...". This form
1256
+ # can be used as an HTML 4.0 attribute value.
1257
+ # * '&' -> '&amp;'
1258
+ # * '<' -> '&lt;'
1259
+ # * '>' -> '&gt;'
1260
+ # * '"' -> '&quot;'
1261
+ # * undefined characters in destination_encoding -> hexadecimal CharRef
1262
+ # such as &#xHH;
1263
+ #
1264
+ #
1265
+ # Examples:
1266
+ # # UTF-16BE to UTF-8
1267
+ # ec = Encoding::Converter.new("UTF-16BE", "UTF-8")
1268
+ #
1269
+ # # Usually, decorators such as newline conversion are inserted last.
1270
+ # ec = Encoding::Converter.new("UTF-16BE", "UTF-8", :universal_newline => true)
1271
+ # p ec.convpath #=> [[#<Encoding:UTF-16BE>, #<Encoding:UTF-8>],
1272
+ # # "universal_newline"]
1273
+ #
1274
+ # # But, if the last encoding is ASCII incompatible,
1275
+ # # decorators are inserted before the last conversion.
1276
+ # ec = Encoding::Converter.new("UTF-8", "UTF-16BE", :crlf_newline => true)
1277
+ # p ec.convpath #=> ["crlf_newline",
1278
+ # # [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
1279
+ #
1280
+ # # Conversion path can be specified directly.
1281
+ # ec = Encoding::Converter.new(["universal_newline", ["EUC-JP", "UTF-8"], ["UTF-8", "UTF-16BE"]])
1282
+ # p ec.convpath #=> ["universal_newline",
1283
+ # # [#<Encoding:EUC-JP>, #<Encoding:UTF-8>],
1284
+ # # [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
1285
+ #
1286
+ def initialize: (encoding source, encoding destination) -> void
1287
+ | (encoding source, encoding destination,
1288
+ ?invalid: :replace | nil,
1289
+ ?undef: :replace | nil,
1290
+ ?replace: String,
1291
+ ?newline: :universal | :crlf | :cr,
1292
+ ?universal_newline: bool,
1293
+ ?crlf_newline: bool,
1294
+ ?cr_newline: bool,
1295
+ ?xml: :text | :attr
1296
+ ) -> void
1297
+ | (encoding source, encoding destination, Integer opts) -> void
1298
+ | (conversion_path convpath) -> void
1299
+ end
1300
+
1301
+ # <!-- rdoc-file=transcode.c -->
1302
+ # Stop converting after some output is complete but before all of the input was
1303
+ # consumed. See primitive_convert for an example.
1304
+ #
1305
+ Encoding::Converter::AFTER_OUTPUT: Integer
1306
+
1307
+ # <!-- rdoc-file=transcode.c -->
1308
+ # Decorator for converting LF to CRLF
1309
+ #
1310
+ Encoding::Converter::CRLF_NEWLINE_DECORATOR: Integer
1311
+
1312
+ # <!-- rdoc-file=transcode.c -->
1313
+ # Decorator for converting LF to CR
1314
+ #
1315
+ Encoding::Converter::CR_NEWLINE_DECORATOR: Integer
1316
+
1317
+ # <!-- rdoc-file=transcode.c -->
1318
+ # Mask for invalid byte sequences
1319
+ #
1320
+ Encoding::Converter::INVALID_MASK: Integer
1321
+
1322
+ # <!-- rdoc-file=transcode.c -->
1323
+ # Replace invalid byte sequences
1324
+ #
1325
+ Encoding::Converter::INVALID_REPLACE: Integer
1326
+
1327
+ # <!-- rdoc-file=transcode.c -->
1328
+ # Indicates the source may be part of a larger string. See primitive_convert
1329
+ # for an example.
1330
+ #
1331
+ Encoding::Converter::PARTIAL_INPUT: Integer
1332
+
1333
+ # <!-- rdoc-file=transcode.c -->
1334
+ # Replace byte sequences that are undefined in the destination encoding with an
1335
+ # XML hexadecimal character reference. This is valid for XML conversion.
1336
+ #
1337
+ Encoding::Converter::UNDEF_HEX_CHARREF: Integer
1338
+
1339
+ # <!-- rdoc-file=transcode.c -->
1340
+ # Mask for a valid character in the source encoding but no related character(s)
1341
+ # in destination encoding.
1342
+ #
1343
+ Encoding::Converter::UNDEF_MASK: Integer
1344
+
1345
+ # <!-- rdoc-file=transcode.c -->
1346
+ # Replace byte sequences that are undefined in the destination encoding.
1347
+ #
1348
+ Encoding::Converter::UNDEF_REPLACE: Integer
1349
+
1350
+ # <!-- rdoc-file=transcode.c -->
1351
+ # Decorator for converting CRLF and CR to LF
1352
+ #
1353
+ Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR: Integer
1354
+
1355
+ # <!-- rdoc-file=transcode.c -->
1356
+ # Escape as XML AttValue
1357
+ #
1358
+ Encoding::Converter::XML_ATTR_CONTENT_DECORATOR: Integer
1359
+
1360
+ # <!-- rdoc-file=transcode.c -->
1361
+ # Escape as XML AttValue
1362
+ #
1363
+ Encoding::Converter::XML_ATTR_QUOTE_DECORATOR: Integer
1364
+
1365
+ # <!-- rdoc-file=transcode.c -->
1366
+ # Escape as XML CharData
1367
+ #
1368
+ Encoding::Converter::XML_TEXT_DECORATOR: Integer