cloudsmith-api 2.0.15 → 2.0.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (852) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +6 -6
  3. data/README.md +4 -4
  4. data/build.json +1 -1
  5. data/cloudsmith-api.gemspec +1 -1
  6. data/docs/AlpinePackageUpload.md +1 -0
  7. data/docs/CargoPackageUpload.md +1 -0
  8. data/docs/CocoapodsPackageUpload.md +1 -0
  9. data/docs/ComposerPackageUpload.md +1 -0
  10. data/docs/ConanPackageUpload.md +1 -0
  11. data/docs/CondaPackageUpload.md +1 -0
  12. data/docs/CranPackageUpload.md +1 -0
  13. data/docs/DartPackageUpload.md +1 -0
  14. data/docs/DebPackageUpload.md +1 -0
  15. data/docs/DockerPackageUpload.md +1 -0
  16. data/docs/GoPackageUpload.md +1 -0
  17. data/docs/HelmPackageUpload.md +1 -0
  18. data/docs/HexPackageUpload.md +1 -0
  19. data/docs/LuarocksPackageUpload.md +1 -0
  20. data/docs/MavenPackageUpload.md +1 -0
  21. data/docs/NpmPackageUpload.md +1 -0
  22. data/docs/NugetPackageUpload.md +1 -0
  23. data/docs/P2PackageUpload.md +1 -0
  24. data/docs/Package.md +1 -0
  25. data/docs/PackageCopy.md +1 -0
  26. data/docs/PackageMove.md +1 -0
  27. data/docs/PackageQuarantine.md +1 -0
  28. data/docs/PackageResync.md +1 -0
  29. data/docs/PackageTag.md +1 -0
  30. data/docs/PythonPackageUpload.md +1 -0
  31. data/docs/RawPackageUpload.md +1 -0
  32. data/docs/RpmPackageUpload.md +1 -0
  33. data/docs/RubyPackageUpload.md +1 -0
  34. data/docs/Service.md +1 -0
  35. data/docs/StatusBasic.md +1 -1
  36. data/docs/SwiftPackageUpload.md +1 -0
  37. data/docs/TerraformPackageUpload.md +1 -0
  38. data/docs/VagrantPackageUpload.md +1 -0
  39. data/lib/cloudsmith-api/api/audit_log_api.rb +1 -1
  40. data/lib/cloudsmith-api/api/badges_api.rb +1 -1
  41. data/lib/cloudsmith-api/api/distros_api.rb +1 -1
  42. data/lib/cloudsmith-api/api/entitlements_api.rb +1 -1
  43. data/lib/cloudsmith-api/api/files_api.rb +1 -1
  44. data/lib/cloudsmith-api/api/formats_api.rb +1 -1
  45. data/lib/cloudsmith-api/api/metrics_api.rb +1 -1
  46. data/lib/cloudsmith-api/api/namespaces_api.rb +1 -1
  47. data/lib/cloudsmith-api/api/orgs_api.rb +1 -1
  48. data/lib/cloudsmith-api/api/packages_api.rb +1 -1
  49. data/lib/cloudsmith-api/api/quota_api.rb +1 -1
  50. data/lib/cloudsmith-api/api/rates_api.rb +1 -1
  51. data/lib/cloudsmith-api/api/repos_api.rb +1 -1
  52. data/lib/cloudsmith-api/api/status_api.rb +1 -1
  53. data/lib/cloudsmith-api/api/storage_regions_api.rb +1 -1
  54. data/lib/cloudsmith-api/api/user_api.rb +1 -1
  55. data/lib/cloudsmith-api/api/users_api.rb +1 -1
  56. data/lib/cloudsmith-api/api/vulnerabilities_api.rb +1 -1
  57. data/lib/cloudsmith-api/api/webhooks_api.rb +1 -1
  58. data/lib/cloudsmith-api/api_client.rb +1 -1
  59. data/lib/cloudsmith-api/api_error.rb +1 -1
  60. data/lib/cloudsmith-api/configuration.rb +1 -1
  61. data/lib/cloudsmith-api/models/allocated_limit.rb +1 -1
  62. data/lib/cloudsmith-api/models/allocated_limit_raw.rb +1 -1
  63. data/lib/cloudsmith-api/models/alpine_package_upload.rb +12 -2
  64. data/lib/cloudsmith-api/models/alpine_package_upload_request.rb +1 -1
  65. data/lib/cloudsmith-api/models/architecture.rb +1 -1
  66. data/lib/cloudsmith-api/models/cargo_package_upload.rb +12 -2
  67. data/lib/cloudsmith-api/models/cargo_package_upload_request.rb +1 -1
  68. data/lib/cloudsmith-api/models/cocoapods_package_upload.rb +12 -2
  69. data/lib/cloudsmith-api/models/cocoapods_package_upload_request.rb +1 -1
  70. data/lib/cloudsmith-api/models/common_bandwidth_metrics.rb +1 -1
  71. data/lib/cloudsmith-api/models/common_bandwidth_metrics_value.rb +1 -1
  72. data/lib/cloudsmith-api/models/common_downloads_metrics.rb +1 -1
  73. data/lib/cloudsmith-api/models/common_downloads_metrics_value.rb +1 -1
  74. data/lib/cloudsmith-api/models/common_metrics.rb +1 -1
  75. data/lib/cloudsmith-api/models/composer_package_upload.rb +12 -2
  76. data/lib/cloudsmith-api/models/composer_package_upload_request.rb +1 -1
  77. data/lib/cloudsmith-api/models/composer_upstream.rb +3 -3
  78. data/lib/cloudsmith-api/models/composer_upstream_request.rb +1 -1
  79. data/lib/cloudsmith-api/models/composer_upstream_request_patch.rb +1 -1
  80. data/lib/cloudsmith-api/models/conan_package_upload.rb +12 -2
  81. data/lib/cloudsmith-api/models/conan_package_upload_request.rb +1 -1
  82. data/lib/cloudsmith-api/models/conda_package_upload.rb +12 -2
  83. data/lib/cloudsmith-api/models/conda_package_upload_request.rb +1 -1
  84. data/lib/cloudsmith-api/models/cran_package_upload.rb +12 -2
  85. data/lib/cloudsmith-api/models/cran_package_upload_request.rb +1 -1
  86. data/lib/cloudsmith-api/models/cran_upstream.rb +3 -3
  87. data/lib/cloudsmith-api/models/cran_upstream_request.rb +1 -1
  88. data/lib/cloudsmith-api/models/cran_upstream_request_patch.rb +1 -1
  89. data/lib/cloudsmith-api/models/dart_package_upload.rb +12 -2
  90. data/lib/cloudsmith-api/models/dart_package_upload_request.rb +1 -1
  91. data/lib/cloudsmith-api/models/dart_upstream.rb +3 -3
  92. data/lib/cloudsmith-api/models/dart_upstream_request.rb +1 -1
  93. data/lib/cloudsmith-api/models/dart_upstream_request_patch.rb +1 -1
  94. data/lib/cloudsmith-api/models/deb_package_upload.rb +12 -2
  95. data/lib/cloudsmith-api/models/deb_package_upload_request.rb +1 -1
  96. data/lib/cloudsmith-api/models/deb_upstream.rb +3 -3
  97. data/lib/cloudsmith-api/models/deb_upstream_request.rb +1 -1
  98. data/lib/cloudsmith-api/models/deb_upstream_request_patch.rb +1 -1
  99. data/lib/cloudsmith-api/models/distribution.rb +1 -1
  100. data/lib/cloudsmith-api/models/distribution_full.rb +1 -1
  101. data/lib/cloudsmith-api/models/distribution_version.rb +1 -1
  102. data/lib/cloudsmith-api/models/docker_package_upload.rb +12 -2
  103. data/lib/cloudsmith-api/models/docker_package_upload_request.rb +1 -1
  104. data/lib/cloudsmith-api/models/docker_upstream.rb +3 -3
  105. data/lib/cloudsmith-api/models/docker_upstream_request.rb +1 -1
  106. data/lib/cloudsmith-api/models/docker_upstream_request_patch.rb +1 -1
  107. data/lib/cloudsmith-api/models/entitlement_usage_metrics.rb +1 -1
  108. data/lib/cloudsmith-api/models/error_detail.rb +1 -1
  109. data/lib/cloudsmith-api/models/eula.rb +1 -1
  110. data/lib/cloudsmith-api/models/format.rb +1 -1
  111. data/lib/cloudsmith-api/models/format_support.rb +1 -1
  112. data/lib/cloudsmith-api/models/format_support_upstream.rb +1 -1
  113. data/lib/cloudsmith-api/models/geo_ip_location.rb +1 -1
  114. data/lib/cloudsmith-api/models/go_package_upload.rb +12 -2
  115. data/lib/cloudsmith-api/models/go_package_upload_request.rb +1 -1
  116. data/lib/cloudsmith-api/models/helm_package_upload.rb +12 -2
  117. data/lib/cloudsmith-api/models/helm_package_upload_request.rb +1 -1
  118. data/lib/cloudsmith-api/models/helm_upstream.rb +3 -3
  119. data/lib/cloudsmith-api/models/helm_upstream_request.rb +1 -1
  120. data/lib/cloudsmith-api/models/helm_upstream_request_patch.rb +1 -1
  121. data/lib/cloudsmith-api/models/hex_package_upload.rb +12 -2
  122. data/lib/cloudsmith-api/models/hex_package_upload_request.rb +1 -1
  123. data/lib/cloudsmith-api/models/hex_upstream.rb +3 -3
  124. data/lib/cloudsmith-api/models/hex_upstream_request.rb +1 -1
  125. data/lib/cloudsmith-api/models/hex_upstream_request_patch.rb +1 -1
  126. data/lib/cloudsmith-api/models/history.rb +1 -1
  127. data/lib/cloudsmith-api/models/history_fieldset.rb +1 -1
  128. data/lib/cloudsmith-api/models/history_fieldset_raw.rb +1 -1
  129. data/lib/cloudsmith-api/models/luarocks_package_upload.rb +12 -2
  130. data/lib/cloudsmith-api/models/luarocks_package_upload_request.rb +1 -1
  131. data/lib/cloudsmith-api/models/maven_package_upload.rb +12 -2
  132. data/lib/cloudsmith-api/models/maven_package_upload_request.rb +1 -1
  133. data/lib/cloudsmith-api/models/maven_upstream.rb +3 -3
  134. data/lib/cloudsmith-api/models/maven_upstream_request.rb +1 -1
  135. data/lib/cloudsmith-api/models/maven_upstream_request_patch.rb +1 -1
  136. data/lib/cloudsmith-api/models/namespace.rb +1 -1
  137. data/lib/cloudsmith-api/models/namespace_audit_log.rb +1 -1
  138. data/lib/cloudsmith-api/models/nested_license_policy.rb +1 -1
  139. data/lib/cloudsmith-api/models/nested_vulnerability_policy.rb +1 -1
  140. data/lib/cloudsmith-api/models/nested_vulnerability_scan_results.rb +1 -1
  141. data/lib/cloudsmith-api/models/npm_package_upload.rb +12 -2
  142. data/lib/cloudsmith-api/models/npm_package_upload_request.rb +1 -1
  143. data/lib/cloudsmith-api/models/npm_upstream.rb +3 -3
  144. data/lib/cloudsmith-api/models/npm_upstream_request.rb +1 -1
  145. data/lib/cloudsmith-api/models/npm_upstream_request_patch.rb +1 -1
  146. data/lib/cloudsmith-api/models/nuget_package_upload.rb +12 -2
  147. data/lib/cloudsmith-api/models/nuget_package_upload_request.rb +1 -1
  148. data/lib/cloudsmith-api/models/nuget_upstream.rb +3 -3
  149. data/lib/cloudsmith-api/models/nuget_upstream_request.rb +1 -1
  150. data/lib/cloudsmith-api/models/nuget_upstream_request_patch.rb +1 -1
  151. data/lib/cloudsmith-api/models/organization.rb +1 -1
  152. data/lib/cloudsmith-api/models/organization_group_sync.rb +1 -1
  153. data/lib/cloudsmith-api/models/organization_group_sync_request.rb +1 -1
  154. data/lib/cloudsmith-api/models/organization_group_sync_status.rb +1 -1
  155. data/lib/cloudsmith-api/models/organization_invite.rb +1 -1
  156. data/lib/cloudsmith-api/models/organization_invite_extend.rb +1 -1
  157. data/lib/cloudsmith-api/models/organization_invite_request.rb +1 -1
  158. data/lib/cloudsmith-api/models/organization_invite_update.rb +1 -1
  159. data/lib/cloudsmith-api/models/organization_invite_update_request_patch.rb +1 -1
  160. data/lib/cloudsmith-api/models/organization_membership.rb +1 -1
  161. data/lib/cloudsmith-api/models/organization_package_license_policy.rb +1 -1
  162. data/lib/cloudsmith-api/models/organization_package_license_policy_request.rb +1 -1
  163. data/lib/cloudsmith-api/models/organization_package_license_policy_request_patch.rb +1 -1
  164. data/lib/cloudsmith-api/models/organization_package_vulnerability_policy.rb +1 -1
  165. data/lib/cloudsmith-api/models/organization_package_vulnerability_policy_request.rb +1 -1
  166. data/lib/cloudsmith-api/models/organization_package_vulnerability_policy_request_patch.rb +1 -1
  167. data/lib/cloudsmith-api/models/organization_team.rb +1 -1
  168. data/lib/cloudsmith-api/models/organization_team_invite.rb +1 -1
  169. data/lib/cloudsmith-api/models/organization_team_members.rb +1 -1
  170. data/lib/cloudsmith-api/models/organization_team_membership.rb +1 -1
  171. data/lib/cloudsmith-api/models/organization_team_request.rb +1 -1
  172. data/lib/cloudsmith-api/models/organization_team_request_patch.rb +1 -1
  173. data/lib/cloudsmith-api/models/p2_package_upload.rb +12 -2
  174. data/lib/cloudsmith-api/models/p2_package_upload_request.rb +1 -1
  175. data/lib/cloudsmith-api/models/package.rb +12 -2
  176. data/lib/cloudsmith-api/models/package_copy.rb +12 -2
  177. data/lib/cloudsmith-api/models/package_copy_request.rb +1 -1
  178. data/lib/cloudsmith-api/models/package_deny_policy.rb +1 -1
  179. data/lib/cloudsmith-api/models/package_deny_policy_request.rb +1 -1
  180. data/lib/cloudsmith-api/models/package_deny_policy_request_patch.rb +1 -1
  181. data/lib/cloudsmith-api/models/package_dependencies.rb +1 -1
  182. data/lib/cloudsmith-api/models/package_dependency.rb +1 -1
  183. data/lib/cloudsmith-api/models/package_file.rb +1 -1
  184. data/lib/cloudsmith-api/models/package_file_parts_upload.rb +1 -1
  185. data/lib/cloudsmith-api/models/package_file_upload.rb +1 -1
  186. data/lib/cloudsmith-api/models/package_file_upload_request.rb +1 -1
  187. data/lib/cloudsmith-api/models/package_license_policy_evaluation_request.rb +1 -1
  188. data/lib/cloudsmith-api/models/package_license_policy_evaluation_request_request.rb +1 -1
  189. data/lib/cloudsmith-api/models/package_license_policy_violation_log.rb +1 -1
  190. data/lib/cloudsmith-api/models/package_license_policy_violation_log_cursor_page.rb +1 -1
  191. data/lib/cloudsmith-api/models/package_move.rb +12 -2
  192. data/lib/cloudsmith-api/models/package_move_request.rb +1 -1
  193. data/lib/cloudsmith-api/models/package_quarantine.rb +12 -2
  194. data/lib/cloudsmith-api/models/package_quarantine_request.rb +1 -1
  195. data/lib/cloudsmith-api/models/package_resync.rb +12 -2
  196. data/lib/cloudsmith-api/models/package_status.rb +1 -1
  197. data/lib/cloudsmith-api/models/package_tag.rb +12 -2
  198. data/lib/cloudsmith-api/models/package_tag_request.rb +1 -1
  199. data/lib/cloudsmith-api/models/package_usage_metrics.rb +1 -1
  200. data/lib/cloudsmith-api/models/package_version_badge.rb +1 -1
  201. data/lib/cloudsmith-api/models/package_vulnerability.rb +1 -1
  202. data/lib/cloudsmith-api/models/package_vulnerability_policy_evaluation_request.rb +1 -1
  203. data/lib/cloudsmith-api/models/package_vulnerability_policy_evaluation_request_request.rb +1 -1
  204. data/lib/cloudsmith-api/models/package_vulnerability_policy_violation_log.rb +1 -1
  205. data/lib/cloudsmith-api/models/package_vulnerability_policy_violation_log_cursor_page.rb +1 -1
  206. data/lib/cloudsmith-api/models/provider_settings.rb +1 -1
  207. data/lib/cloudsmith-api/models/provider_settings_request.rb +1 -1
  208. data/lib/cloudsmith-api/models/provider_settings_request_patch.rb +1 -1
  209. data/lib/cloudsmith-api/models/python_package_upload.rb +12 -2
  210. data/lib/cloudsmith-api/models/python_package_upload_request.rb +1 -1
  211. data/lib/cloudsmith-api/models/python_upstream.rb +3 -3
  212. data/lib/cloudsmith-api/models/python_upstream_request.rb +1 -1
  213. data/lib/cloudsmith-api/models/python_upstream_request_patch.rb +1 -1
  214. data/lib/cloudsmith-api/models/quota.rb +1 -1
  215. data/lib/cloudsmith-api/models/quota_history.rb +1 -1
  216. data/lib/cloudsmith-api/models/rate_check.rb +1 -1
  217. data/lib/cloudsmith-api/models/raw_package_upload.rb +12 -2
  218. data/lib/cloudsmith-api/models/raw_package_upload_request.rb +1 -1
  219. data/lib/cloudsmith-api/models/repository.rb +1 -1
  220. data/lib/cloudsmith-api/models/repository_audit_log.rb +1 -1
  221. data/lib/cloudsmith-api/models/repository_create.rb +1 -1
  222. data/lib/cloudsmith-api/models/repository_create_request.rb +1 -1
  223. data/lib/cloudsmith-api/models/repository_ecdsa_key.rb +1 -1
  224. data/lib/cloudsmith-api/models/repository_ecdsa_key_create.rb +1 -1
  225. data/lib/cloudsmith-api/models/repository_geo_ip_cidr.rb +1 -1
  226. data/lib/cloudsmith-api/models/repository_geo_ip_country_code.rb +1 -1
  227. data/lib/cloudsmith-api/models/repository_geo_ip_rules.rb +1 -1
  228. data/lib/cloudsmith-api/models/repository_geo_ip_rules_request.rb +1 -1
  229. data/lib/cloudsmith-api/models/repository_geo_ip_rules_request_patch.rb +1 -1
  230. data/lib/cloudsmith-api/models/repository_geo_ip_status.rb +1 -1
  231. data/lib/cloudsmith-api/models/repository_geo_ip_test_address.rb +1 -1
  232. data/lib/cloudsmith-api/models/repository_geo_ip_test_address_response.rb +1 -1
  233. data/lib/cloudsmith-api/models/repository_geo_ip_test_address_response_dict.rb +1 -1
  234. data/lib/cloudsmith-api/models/repository_gpg_key.rb +1 -1
  235. data/lib/cloudsmith-api/models/repository_gpg_key_create.rb +1 -1
  236. data/lib/cloudsmith-api/models/repository_privilege_dict.rb +1 -1
  237. data/lib/cloudsmith-api/models/repository_privilege_input.rb +1 -1
  238. data/lib/cloudsmith-api/models/repository_privilege_input_request.rb +1 -1
  239. data/lib/cloudsmith-api/models/repository_privilege_input_request_patch.rb +1 -1
  240. data/lib/cloudsmith-api/models/repository_request_patch.rb +1 -1
  241. data/lib/cloudsmith-api/models/repository_retention_rules.rb +1 -1
  242. data/lib/cloudsmith-api/models/repository_retention_rules_request_patch.rb +1 -1
  243. data/lib/cloudsmith-api/models/repository_rsa_key.rb +1 -1
  244. data/lib/cloudsmith-api/models/repository_rsa_key_create.rb +1 -1
  245. data/lib/cloudsmith-api/models/repository_token.rb +1 -1
  246. data/lib/cloudsmith-api/models/repository_token_action.rb +1 -1
  247. data/lib/cloudsmith-api/models/repository_token_refresh.rb +1 -1
  248. data/lib/cloudsmith-api/models/repository_token_refresh_request.rb +1 -1
  249. data/lib/cloudsmith-api/models/repository_token_request.rb +1 -1
  250. data/lib/cloudsmith-api/models/repository_token_request_patch.rb +1 -1
  251. data/lib/cloudsmith-api/models/repository_token_sync.rb +1 -1
  252. data/lib/cloudsmith-api/models/repository_token_sync_request.rb +1 -1
  253. data/lib/cloudsmith-api/models/repository_transfer_region.rb +1 -1
  254. data/lib/cloudsmith-api/models/repository_transfer_region_request.rb +1 -1
  255. data/lib/cloudsmith-api/models/repository_webhook.rb +1 -1
  256. data/lib/cloudsmith-api/models/repository_webhook_request.rb +1 -1
  257. data/lib/cloudsmith-api/models/repository_webhook_request_patch.rb +1 -1
  258. data/lib/cloudsmith-api/models/resources_rate_check.rb +1 -1
  259. data/lib/cloudsmith-api/models/respository_geo_ip_enable_disable.rb +1 -1
  260. data/lib/cloudsmith-api/models/respository_geo_ip_enable_disable_request.rb +1 -1
  261. data/lib/cloudsmith-api/models/rpm_package_upload.rb +12 -2
  262. data/lib/cloudsmith-api/models/rpm_package_upload_request.rb +1 -1
  263. data/lib/cloudsmith-api/models/rpm_upstream.rb +3 -3
  264. data/lib/cloudsmith-api/models/rpm_upstream_request.rb +1 -1
  265. data/lib/cloudsmith-api/models/rpm_upstream_request_patch.rb +1 -1
  266. data/lib/cloudsmith-api/models/ruby_package_upload.rb +12 -2
  267. data/lib/cloudsmith-api/models/ruby_package_upload_request.rb +1 -1
  268. data/lib/cloudsmith-api/models/ruby_upstream.rb +3 -3
  269. data/lib/cloudsmith-api/models/ruby_upstream_request.rb +1 -1
  270. data/lib/cloudsmith-api/models/ruby_upstream_request_patch.rb +1 -1
  271. data/lib/cloudsmith-api/models/service.rb +12 -2
  272. data/lib/cloudsmith-api/models/service_request.rb +1 -1
  273. data/lib/cloudsmith-api/models/service_request_patch.rb +1 -1
  274. data/lib/cloudsmith-api/models/service_teams.rb +1 -1
  275. data/lib/cloudsmith-api/models/status_basic.rb +2 -2
  276. data/lib/cloudsmith-api/models/storage_allocated_limit.rb +1 -1
  277. data/lib/cloudsmith-api/models/storage_allocated_limit_raw.rb +1 -1
  278. data/lib/cloudsmith-api/models/storage_region.rb +1 -1
  279. data/lib/cloudsmith-api/models/storage_usage.rb +1 -1
  280. data/lib/cloudsmith-api/models/storage_usage_raw.rb +1 -1
  281. data/lib/cloudsmith-api/models/swift_package_upload.rb +12 -2
  282. data/lib/cloudsmith-api/models/swift_package_upload_request.rb +1 -1
  283. data/lib/cloudsmith-api/models/swift_upstream.rb +3 -3
  284. data/lib/cloudsmith-api/models/swift_upstream_request.rb +1 -1
  285. data/lib/cloudsmith-api/models/swift_upstream_request_patch.rb +1 -1
  286. data/lib/cloudsmith-api/models/tags.rb +1 -1
  287. data/lib/cloudsmith-api/models/terraform_package_upload.rb +12 -2
  288. data/lib/cloudsmith-api/models/terraform_package_upload_request.rb +1 -1
  289. data/lib/cloudsmith-api/models/usage.rb +1 -1
  290. data/lib/cloudsmith-api/models/usage_fieldset.rb +1 -1
  291. data/lib/cloudsmith-api/models/usage_limits.rb +1 -1
  292. data/lib/cloudsmith-api/models/usage_limits_raw.rb +1 -1
  293. data/lib/cloudsmith-api/models/usage_raw.rb +1 -1
  294. data/lib/cloudsmith-api/models/user_auth_token.rb +1 -1
  295. data/lib/cloudsmith-api/models/user_auth_token_request.rb +1 -1
  296. data/lib/cloudsmith-api/models/user_brief.rb +1 -1
  297. data/lib/cloudsmith-api/models/user_profile.rb +1 -1
  298. data/lib/cloudsmith-api/models/vagrant_package_upload.rb +12 -2
  299. data/lib/cloudsmith-api/models/vagrant_package_upload_request.rb +1 -1
  300. data/lib/cloudsmith-api/models/vulnerability.rb +1 -1
  301. data/lib/cloudsmith-api/models/vulnerability_scan.rb +1 -1
  302. data/lib/cloudsmith-api/models/vulnerability_scan_results.rb +1 -1
  303. data/lib/cloudsmith-api/models/vulnerability_scan_results_list.rb +1 -1
  304. data/lib/cloudsmith-api/models/vulnerability_scan_version.rb +1 -1
  305. data/lib/cloudsmith-api/models/webhook_template.rb +1 -1
  306. data/lib/cloudsmith-api/version.rb +2 -2
  307. data/lib/cloudsmith-api.rb +1 -1
  308. data/spec/api/audit_log_api_spec.rb +1 -1
  309. data/spec/api/badges_api_spec.rb +1 -1
  310. data/spec/api/distros_api_spec.rb +1 -1
  311. data/spec/api/entitlements_api_spec.rb +1 -1
  312. data/spec/api/files_api_spec.rb +1 -1
  313. data/spec/api/formats_api_spec.rb +1 -1
  314. data/spec/api/metrics_api_spec.rb +1 -1
  315. data/spec/api/namespaces_api_spec.rb +1 -1
  316. data/spec/api/orgs_api_spec.rb +1 -1
  317. data/spec/api/packages_api_spec.rb +1 -1
  318. data/spec/api/quota_api_spec.rb +1 -1
  319. data/spec/api/rates_api_spec.rb +1 -1
  320. data/spec/api/repos_api_spec.rb +1 -1
  321. data/spec/api/status_api_spec.rb +1 -1
  322. data/spec/api/storage_regions_api_spec.rb +1 -1
  323. data/spec/api/user_api_spec.rb +1 -1
  324. data/spec/api/users_api_spec.rb +1 -1
  325. data/spec/api/vulnerabilities_api_spec.rb +1 -1
  326. data/spec/api/webhooks_api_spec.rb +1 -1
  327. data/spec/api_client_spec.rb +1 -1
  328. data/spec/configuration_spec.rb +1 -1
  329. data/spec/models/allocated_limit_raw_spec.rb +1 -1
  330. data/spec/models/allocated_limit_spec.rb +1 -1
  331. data/spec/models/alpine_package_upload_request_spec.rb +1 -1
  332. data/spec/models/alpine_package_upload_spec.rb +7 -1
  333. data/spec/models/architecture_spec.rb +1 -1
  334. data/spec/models/cargo_package_upload_request_spec.rb +1 -1
  335. data/spec/models/cargo_package_upload_spec.rb +7 -1
  336. data/spec/models/cocoapods_package_upload_request_spec.rb +1 -1
  337. data/spec/models/cocoapods_package_upload_spec.rb +7 -1
  338. data/spec/models/common_bandwidth_metrics_spec.rb +1 -1
  339. data/spec/models/common_bandwidth_metrics_value_spec.rb +1 -1
  340. data/spec/models/common_downloads_metrics_spec.rb +1 -1
  341. data/spec/models/common_downloads_metrics_value_spec.rb +1 -1
  342. data/spec/models/common_metrics_spec.rb +1 -1
  343. data/spec/models/composer_package_upload_request_spec.rb +1 -1
  344. data/spec/models/composer_package_upload_spec.rb +7 -1
  345. data/spec/models/composer_upstream_request_patch_spec.rb +1 -1
  346. data/spec/models/composer_upstream_request_spec.rb +1 -1
  347. data/spec/models/composer_upstream_spec.rb +2 -2
  348. data/spec/models/conan_package_upload_request_spec.rb +1 -1
  349. data/spec/models/conan_package_upload_spec.rb +7 -1
  350. data/spec/models/conda_package_upload_request_spec.rb +1 -1
  351. data/spec/models/conda_package_upload_spec.rb +7 -1
  352. data/spec/models/cran_package_upload_request_spec.rb +1 -1
  353. data/spec/models/cran_package_upload_spec.rb +7 -1
  354. data/spec/models/cran_upstream_request_patch_spec.rb +1 -1
  355. data/spec/models/cran_upstream_request_spec.rb +1 -1
  356. data/spec/models/cran_upstream_spec.rb +2 -2
  357. data/spec/models/dart_package_upload_request_spec.rb +1 -1
  358. data/spec/models/dart_package_upload_spec.rb +7 -1
  359. data/spec/models/dart_upstream_request_patch_spec.rb +1 -1
  360. data/spec/models/dart_upstream_request_spec.rb +1 -1
  361. data/spec/models/dart_upstream_spec.rb +2 -2
  362. data/spec/models/deb_package_upload_request_spec.rb +1 -1
  363. data/spec/models/deb_package_upload_spec.rb +7 -1
  364. data/spec/models/deb_upstream_request_patch_spec.rb +1 -1
  365. data/spec/models/deb_upstream_request_spec.rb +1 -1
  366. data/spec/models/deb_upstream_spec.rb +2 -2
  367. data/spec/models/distribution_full_spec.rb +1 -1
  368. data/spec/models/distribution_spec.rb +1 -1
  369. data/spec/models/distribution_version_spec.rb +1 -1
  370. data/spec/models/docker_package_upload_request_spec.rb +1 -1
  371. data/spec/models/docker_package_upload_spec.rb +7 -1
  372. data/spec/models/docker_upstream_request_patch_spec.rb +1 -1
  373. data/spec/models/docker_upstream_request_spec.rb +1 -1
  374. data/spec/models/docker_upstream_spec.rb +2 -2
  375. data/spec/models/entitlement_usage_metrics_spec.rb +1 -1
  376. data/spec/models/error_detail_spec.rb +1 -1
  377. data/spec/models/eula_spec.rb +1 -1
  378. data/spec/models/format_spec.rb +1 -1
  379. data/spec/models/format_support_spec.rb +1 -1
  380. data/spec/models/format_support_upstream_spec.rb +1 -1
  381. data/spec/models/geo_ip_location_spec.rb +1 -1
  382. data/spec/models/go_package_upload_request_spec.rb +1 -1
  383. data/spec/models/go_package_upload_spec.rb +7 -1
  384. data/spec/models/helm_package_upload_request_spec.rb +1 -1
  385. data/spec/models/helm_package_upload_spec.rb +7 -1
  386. data/spec/models/helm_upstream_request_patch_spec.rb +1 -1
  387. data/spec/models/helm_upstream_request_spec.rb +1 -1
  388. data/spec/models/helm_upstream_spec.rb +2 -2
  389. data/spec/models/hex_package_upload_request_spec.rb +1 -1
  390. data/spec/models/hex_package_upload_spec.rb +7 -1
  391. data/spec/models/hex_upstream_request_patch_spec.rb +1 -1
  392. data/spec/models/hex_upstream_request_spec.rb +1 -1
  393. data/spec/models/hex_upstream_spec.rb +2 -2
  394. data/spec/models/history_fieldset_raw_spec.rb +1 -1
  395. data/spec/models/history_fieldset_spec.rb +1 -1
  396. data/spec/models/history_spec.rb +1 -1
  397. data/spec/models/luarocks_package_upload_request_spec.rb +1 -1
  398. data/spec/models/luarocks_package_upload_spec.rb +7 -1
  399. data/spec/models/maven_package_upload_request_spec.rb +1 -1
  400. data/spec/models/maven_package_upload_spec.rb +7 -1
  401. data/spec/models/maven_upstream_request_patch_spec.rb +1 -1
  402. data/spec/models/maven_upstream_request_spec.rb +1 -1
  403. data/spec/models/maven_upstream_spec.rb +2 -2
  404. data/spec/models/namespace_audit_log_spec.rb +1 -1
  405. data/spec/models/namespace_spec.rb +1 -1
  406. data/spec/models/nested_license_policy_spec.rb +1 -1
  407. data/spec/models/nested_vulnerability_policy_spec.rb +1 -1
  408. data/spec/models/nested_vulnerability_scan_results_spec.rb +1 -1
  409. data/spec/models/npm_package_upload_request_spec.rb +1 -1
  410. data/spec/models/npm_package_upload_spec.rb +7 -1
  411. data/spec/models/npm_upstream_request_patch_spec.rb +1 -1
  412. data/spec/models/npm_upstream_request_spec.rb +1 -1
  413. data/spec/models/npm_upstream_spec.rb +2 -2
  414. data/spec/models/nuget_package_upload_request_spec.rb +1 -1
  415. data/spec/models/nuget_package_upload_spec.rb +7 -1
  416. data/spec/models/nuget_upstream_request_patch_spec.rb +1 -1
  417. data/spec/models/nuget_upstream_request_spec.rb +1 -1
  418. data/spec/models/nuget_upstream_spec.rb +2 -2
  419. data/spec/models/organization_group_sync_request_spec.rb +1 -1
  420. data/spec/models/organization_group_sync_spec.rb +1 -1
  421. data/spec/models/organization_group_sync_status_spec.rb +1 -1
  422. data/spec/models/organization_invite_extend_spec.rb +1 -1
  423. data/spec/models/organization_invite_request_spec.rb +1 -1
  424. data/spec/models/organization_invite_spec.rb +1 -1
  425. data/spec/models/organization_invite_update_request_patch_spec.rb +1 -1
  426. data/spec/models/organization_invite_update_spec.rb +1 -1
  427. data/spec/models/organization_membership_spec.rb +1 -1
  428. data/spec/models/organization_package_license_policy_request_patch_spec.rb +1 -1
  429. data/spec/models/organization_package_license_policy_request_spec.rb +1 -1
  430. data/spec/models/organization_package_license_policy_spec.rb +1 -1
  431. data/spec/models/organization_package_vulnerability_policy_request_patch_spec.rb +1 -1
  432. data/spec/models/organization_package_vulnerability_policy_request_spec.rb +1 -1
  433. data/spec/models/organization_package_vulnerability_policy_spec.rb +1 -1
  434. data/spec/models/organization_spec.rb +1 -1
  435. data/spec/models/organization_team_invite_spec.rb +1 -1
  436. data/spec/models/organization_team_members_spec.rb +1 -1
  437. data/spec/models/organization_team_membership_spec.rb +1 -1
  438. data/spec/models/organization_team_request_patch_spec.rb +1 -1
  439. data/spec/models/organization_team_request_spec.rb +1 -1
  440. data/spec/models/organization_team_spec.rb +1 -1
  441. data/spec/models/p2_package_upload_request_spec.rb +1 -1
  442. data/spec/models/p2_package_upload_spec.rb +7 -1
  443. data/spec/models/package_copy_request_spec.rb +1 -1
  444. data/spec/models/package_copy_spec.rb +7 -1
  445. data/spec/models/package_deny_policy_request_patch_spec.rb +1 -1
  446. data/spec/models/package_deny_policy_request_spec.rb +1 -1
  447. data/spec/models/package_deny_policy_spec.rb +1 -1
  448. data/spec/models/package_dependencies_spec.rb +1 -1
  449. data/spec/models/package_dependency_spec.rb +1 -1
  450. data/spec/models/package_file_parts_upload_spec.rb +1 -1
  451. data/spec/models/package_file_spec.rb +1 -1
  452. data/spec/models/package_file_upload_request_spec.rb +1 -1
  453. data/spec/models/package_file_upload_spec.rb +1 -1
  454. data/spec/models/package_license_policy_evaluation_request_request_spec.rb +1 -1
  455. data/spec/models/package_license_policy_evaluation_request_spec.rb +1 -1
  456. data/spec/models/package_license_policy_violation_log_cursor_page_spec.rb +1 -1
  457. data/spec/models/package_license_policy_violation_log_spec.rb +1 -1
  458. data/spec/models/package_move_request_spec.rb +1 -1
  459. data/spec/models/package_move_spec.rb +7 -1
  460. data/spec/models/package_quarantine_request_spec.rb +1 -1
  461. data/spec/models/package_quarantine_spec.rb +7 -1
  462. data/spec/models/package_resync_spec.rb +7 -1
  463. data/spec/models/package_spec.rb +7 -1
  464. data/spec/models/package_status_spec.rb +1 -1
  465. data/spec/models/package_tag_request_spec.rb +1 -1
  466. data/spec/models/package_tag_spec.rb +7 -1
  467. data/spec/models/package_usage_metrics_spec.rb +1 -1
  468. data/spec/models/package_version_badge_spec.rb +1 -1
  469. data/spec/models/package_vulnerability_policy_evaluation_request_request_spec.rb +1 -1
  470. data/spec/models/package_vulnerability_policy_evaluation_request_spec.rb +1 -1
  471. data/spec/models/package_vulnerability_policy_violation_log_cursor_page_spec.rb +1 -1
  472. data/spec/models/package_vulnerability_policy_violation_log_spec.rb +1 -1
  473. data/spec/models/package_vulnerability_spec.rb +1 -1
  474. data/spec/models/provider_settings_request_patch_spec.rb +1 -1
  475. data/spec/models/provider_settings_request_spec.rb +1 -1
  476. data/spec/models/provider_settings_spec.rb +1 -1
  477. data/spec/models/python_package_upload_request_spec.rb +1 -1
  478. data/spec/models/python_package_upload_spec.rb +7 -1
  479. data/spec/models/python_upstream_request_patch_spec.rb +1 -1
  480. data/spec/models/python_upstream_request_spec.rb +1 -1
  481. data/spec/models/python_upstream_spec.rb +2 -2
  482. data/spec/models/quota_history_spec.rb +1 -1
  483. data/spec/models/quota_spec.rb +1 -1
  484. data/spec/models/rate_check_spec.rb +1 -1
  485. data/spec/models/raw_package_upload_request_spec.rb +1 -1
  486. data/spec/models/raw_package_upload_spec.rb +7 -1
  487. data/spec/models/repository_audit_log_spec.rb +1 -1
  488. data/spec/models/repository_create_request_spec.rb +1 -1
  489. data/spec/models/repository_create_spec.rb +1 -1
  490. data/spec/models/repository_ecdsa_key_create_spec.rb +1 -1
  491. data/spec/models/repository_ecdsa_key_spec.rb +1 -1
  492. data/spec/models/repository_geo_ip_cidr_spec.rb +1 -1
  493. data/spec/models/repository_geo_ip_country_code_spec.rb +1 -1
  494. data/spec/models/repository_geo_ip_rules_request_patch_spec.rb +1 -1
  495. data/spec/models/repository_geo_ip_rules_request_spec.rb +1 -1
  496. data/spec/models/repository_geo_ip_rules_spec.rb +1 -1
  497. data/spec/models/repository_geo_ip_status_spec.rb +1 -1
  498. data/spec/models/repository_geo_ip_test_address_response_dict_spec.rb +1 -1
  499. data/spec/models/repository_geo_ip_test_address_response_spec.rb +1 -1
  500. data/spec/models/repository_geo_ip_test_address_spec.rb +1 -1
  501. data/spec/models/repository_gpg_key_create_spec.rb +1 -1
  502. data/spec/models/repository_gpg_key_spec.rb +1 -1
  503. data/spec/models/repository_privilege_dict_spec.rb +1 -1
  504. data/spec/models/repository_privilege_input_request_patch_spec.rb +1 -1
  505. data/spec/models/repository_privilege_input_request_spec.rb +1 -1
  506. data/spec/models/repository_privilege_input_spec.rb +1 -1
  507. data/spec/models/repository_request_patch_spec.rb +1 -1
  508. data/spec/models/repository_retention_rules_request_patch_spec.rb +1 -1
  509. data/spec/models/repository_retention_rules_spec.rb +1 -1
  510. data/spec/models/repository_rsa_key_create_spec.rb +1 -1
  511. data/spec/models/repository_rsa_key_spec.rb +1 -1
  512. data/spec/models/repository_spec.rb +1 -1
  513. data/spec/models/repository_token_action_spec.rb +1 -1
  514. data/spec/models/repository_token_refresh_request_spec.rb +1 -1
  515. data/spec/models/repository_token_refresh_spec.rb +1 -1
  516. data/spec/models/repository_token_request_patch_spec.rb +1 -1
  517. data/spec/models/repository_token_request_spec.rb +1 -1
  518. data/spec/models/repository_token_spec.rb +1 -1
  519. data/spec/models/repository_token_sync_request_spec.rb +1 -1
  520. data/spec/models/repository_token_sync_spec.rb +1 -1
  521. data/spec/models/repository_transfer_region_request_spec.rb +1 -1
  522. data/spec/models/repository_transfer_region_spec.rb +1 -1
  523. data/spec/models/repository_webhook_request_patch_spec.rb +1 -1
  524. data/spec/models/repository_webhook_request_spec.rb +1 -1
  525. data/spec/models/repository_webhook_spec.rb +1 -1
  526. data/spec/models/resources_rate_check_spec.rb +1 -1
  527. data/spec/models/respository_geo_ip_enable_disable_request_spec.rb +1 -1
  528. data/spec/models/respository_geo_ip_enable_disable_spec.rb +1 -1
  529. data/spec/models/rpm_package_upload_request_spec.rb +1 -1
  530. data/spec/models/rpm_package_upload_spec.rb +7 -1
  531. data/spec/models/rpm_upstream_request_patch_spec.rb +1 -1
  532. data/spec/models/rpm_upstream_request_spec.rb +1 -1
  533. data/spec/models/rpm_upstream_spec.rb +2 -2
  534. data/spec/models/ruby_package_upload_request_spec.rb +1 -1
  535. data/spec/models/ruby_package_upload_spec.rb +7 -1
  536. data/spec/models/ruby_upstream_request_patch_spec.rb +1 -1
  537. data/spec/models/ruby_upstream_request_spec.rb +1 -1
  538. data/spec/models/ruby_upstream_spec.rb +2 -2
  539. data/spec/models/service_request_patch_spec.rb +1 -1
  540. data/spec/models/service_request_spec.rb +1 -1
  541. data/spec/models/service_spec.rb +7 -1
  542. data/spec/models/service_teams_spec.rb +1 -1
  543. data/spec/models/status_basic_spec.rb +1 -1
  544. data/spec/models/storage_allocated_limit_raw_spec.rb +1 -1
  545. data/spec/models/storage_allocated_limit_spec.rb +1 -1
  546. data/spec/models/storage_region_spec.rb +1 -1
  547. data/spec/models/storage_usage_raw_spec.rb +1 -1
  548. data/spec/models/storage_usage_spec.rb +1 -1
  549. data/spec/models/swift_package_upload_request_spec.rb +1 -1
  550. data/spec/models/swift_package_upload_spec.rb +7 -1
  551. data/spec/models/swift_upstream_request_patch_spec.rb +1 -1
  552. data/spec/models/swift_upstream_request_spec.rb +1 -1
  553. data/spec/models/swift_upstream_spec.rb +2 -2
  554. data/spec/models/tags_spec.rb +1 -1
  555. data/spec/models/terraform_package_upload_request_spec.rb +1 -1
  556. data/spec/models/terraform_package_upload_spec.rb +7 -1
  557. data/spec/models/usage_fieldset_spec.rb +1 -1
  558. data/spec/models/usage_limits_raw_spec.rb +1 -1
  559. data/spec/models/usage_limits_spec.rb +1 -1
  560. data/spec/models/usage_raw_spec.rb +1 -1
  561. data/spec/models/usage_spec.rb +1 -1
  562. data/spec/models/user_auth_token_request_spec.rb +1 -1
  563. data/spec/models/user_auth_token_spec.rb +1 -1
  564. data/spec/models/user_brief_spec.rb +1 -1
  565. data/spec/models/user_profile_spec.rb +1 -1
  566. data/spec/models/vagrant_package_upload_request_spec.rb +1 -1
  567. data/spec/models/vagrant_package_upload_spec.rb +7 -1
  568. data/spec/models/vulnerability_scan_results_list_spec.rb +1 -1
  569. data/spec/models/vulnerability_scan_results_spec.rb +1 -1
  570. data/spec/models/vulnerability_scan_spec.rb +1 -1
  571. data/spec/models/vulnerability_scan_version_spec.rb +1 -1
  572. data/spec/models/vulnerability_spec.rb +1 -1
  573. data/spec/models/webhook_template_spec.rb +1 -1
  574. data/spec/spec_helper.rb +1 -1
  575. data/vendor/bundle/ruby/2.6.0/cache/hashdiff-1.1.2.gem +0 -0
  576. data/vendor/bundle/ruby/2.6.0/cache/json-2.7.6.gem +0 -0
  577. data/vendor/bundle/ruby/2.6.0/cache/rexml-3.3.9.gem +0 -0
  578. data/vendor/bundle/ruby/2.6.0/cache/rspec-core-3.13.2.gem +0 -0
  579. data/vendor/bundle/ruby/2.6.0/cache/sys-uname-1.3.1.gem +0 -0
  580. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/autotest-fsevent-0.2.21/gem_make.out +1 -1
  581. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/bigdecimal-3.1.8/gem_make.out +2 -2
  582. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/bigdecimal-3.1.8/mkmf.log +5 -5
  583. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/ffi-1.17.0/gem_make.out +2 -2
  584. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/ffi-1.17.0/mkmf.log +1 -1
  585. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-2.7.6/gem_make.out +29 -0
  586. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-2.7.6/json/ext/generator.so +0 -0
  587. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-2.7.6/json/ext/parser.so +0 -0
  588. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/{json-2.7.2 → json-2.7.6}/mkmf.log +17 -2
  589. data/vendor/bundle/ruby/2.6.0/gems/bigdecimal-3.1.8/ext/bigdecimal/Makefile +2 -2
  590. data/vendor/bundle/ruby/2.6.0/gems/ffi-1.17.0/ext/ffi_c/Makefile +2 -2
  591. data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/changelog.md +6 -0
  592. data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/version.rb +1 -1
  593. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/BSDL +22 -0
  594. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/CHANGES.md +54 -17
  595. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/LEGAL +60 -0
  596. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/README.md +13 -165
  597. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/fbuffer/fbuffer.h +25 -62
  598. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/generator/Makefile +4 -5
  599. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/ext/json/ext/generator/extconf.rb +10 -0
  600. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/generator/generator.c +504 -667
  601. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/generator/generator.h +16 -75
  602. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/ext/json/ext/generator/generator.o +0 -0
  603. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/ext/json/ext/generator/generator.so +0 -0
  604. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/parser/Makefile +4 -5
  605. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/parser/extconf.rb +3 -1
  606. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/parser/parser.c +279 -253
  607. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/parser/parser.h +4 -40
  608. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/ext/json/ext/parser/parser.o +0 -0
  609. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/parser/parser.rl +208 -182
  610. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/ext/json/ext/parser/parser.so +0 -0
  611. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/json.gemspec +61 -0
  612. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/bigdecimal.rb +1 -1
  613. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/complex.rb +1 -1
  614. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/core.rb +1 -1
  615. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/date.rb +1 -1
  616. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/date_time.rb +1 -1
  617. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/exception.rb +1 -1
  618. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/ostruct.rb +1 -1
  619. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/range.rb +1 -1
  620. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/rational.rb +1 -1
  621. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/regexp.rb +1 -1
  622. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/struct.rb +1 -1
  623. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/symbol.rb +1 -2
  624. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/time.rb +3 -10
  625. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/common.rb +79 -43
  626. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/lib/json/ext/generator/state.rb +135 -0
  627. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/lib/json/ext/generator.so +0 -0
  628. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/lib/json/ext/parser.so +0 -0
  629. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/lib/json/ext.rb +25 -0
  630. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/generic_object.rb +1 -1
  631. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/pure/generator.rb +115 -29
  632. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/pure/parser.rb +27 -33
  633. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/pure.rb +1 -0
  634. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.6/lib/json/version.rb +5 -0
  635. data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json.rb +1 -1
  636. data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/NEWS.md +21 -0
  637. data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/baseparser.rb +8 -3
  638. data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/rexml.rb +1 -1
  639. data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/source.rb +8 -2
  640. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/Changelog.md +9 -1
  641. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/fork_runner.rb +2 -0
  642. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/configuration.rb +7 -2
  643. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/configuration_options.rb +2 -0
  644. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/did_you_mean.rb +6 -0
  645. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/exception_presenter.rb +6 -0
  646. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/html_snippet_extractor.rb +2 -0
  647. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/metadata.rb +1 -1
  648. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/option_parser.rb +2 -0
  649. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/rake_task.rb +2 -0
  650. data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/version.rb +1 -1
  651. data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/CHANGES.md +3 -0
  652. data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/lib/sys/uname.rb +1 -1
  653. data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/lib/sys/unix/uname.rb +0 -1
  654. data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/spec/sys_platform_spec.rb +1 -1
  655. data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/spec/sys_uname_spec.rb +1 -1
  656. data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/sys-uname.gemspec +1 -1
  657. data/vendor/bundle/ruby/2.6.0/specifications/{hashdiff-1.1.1.gemspec → hashdiff-1.1.2.gemspec} +3 -3
  658. data/vendor/bundle/ruby/2.6.0/specifications/{json-2.7.2.gemspec → json-2.7.6.gemspec} +0 -0
  659. data/vendor/bundle/ruby/2.6.0/specifications/{rexml-3.3.8.gemspec → rexml-3.3.9.gemspec} +4 -4
  660. data/vendor/bundle/ruby/2.6.0/specifications/{rspec-core-3.13.1.gemspec → rspec-core-3.13.2.gemspec} +5 -5
  661. data/vendor/bundle/ruby/2.6.0/specifications/{sys-uname-1.3.0.gemspec → sys-uname-1.3.1.gemspec} +3 -3
  662. metadata +250 -251
  663. data/vendor/bundle/ruby/2.6.0/cache/hashdiff-1.1.1.gem +0 -0
  664. data/vendor/bundle/ruby/2.6.0/cache/json-2.7.2.gem +0 -0
  665. data/vendor/bundle/ruby/2.6.0/cache/rexml-3.3.8.gem +0 -0
  666. data/vendor/bundle/ruby/2.6.0/cache/rspec-core-3.13.1.gem +0 -0
  667. data/vendor/bundle/ruby/2.6.0/cache/sys-uname-1.3.0.gem +0 -0
  668. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-2.7.2/gem_make.out +0 -13
  669. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-2.7.2/json/ext/generator.so +0 -0
  670. data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-2.7.2/json/ext/parser.so +0 -0
  671. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/Makefile +0 -202
  672. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/generator/depend +0 -1
  673. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/generator/extconf.rb +0 -4
  674. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/generator/generator.o +0 -0
  675. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/generator/generator.so +0 -0
  676. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/parser/depend +0 -1
  677. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/parser/parser.o +0 -0
  678. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/ext/parser/parser.so +0 -0
  679. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/ext/json/extconf.rb +0 -3
  680. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/json.gemspec +0 -68
  681. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/lib/json/ext/generator.so +0 -0
  682. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/lib/json/ext/parser.so +0 -0
  683. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/lib/json/ext.rb +0 -15
  684. data/vendor/bundle/ruby/2.6.0/gems/json-2.7.2/lib/json/version.rb +0 -9
  685. /data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/{json-2.7.2 → json-2.7.6}/gem.build_complete +0 -0
  686. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/.github/workflows/ci.yml +0 -0
  687. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/.gitignore +0 -0
  688. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/.rspec +0 -0
  689. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/.rubocop.yml +0 -0
  690. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/.travis.yml +0 -0
  691. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/.yardopts +0 -0
  692. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/Gemfile +0 -0
  693. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/LICENSE +0 -0
  694. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/README.md +0 -0
  695. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/Rakefile +0 -0
  696. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/hashdiff.gemspec +0 -0
  697. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/compare_hashes.rb +0 -0
  698. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/diff.rb +0 -0
  699. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/lcs.rb +0 -0
  700. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/lcs_compare_arrays.rb +0 -0
  701. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/linear_compare_array.rb +0 -0
  702. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/patch.rb +0 -0
  703. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff/util.rb +0 -0
  704. /data/vendor/bundle/ruby/2.6.0/gems/{hashdiff-1.1.1 → hashdiff-1.1.2}/lib/hashdiff.rb +0 -0
  705. /data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2/LICENSE → json-2.7.6/COPYING} +0 -0
  706. /data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/generator/.sitearchdir.-.json.-.ext.time +0 -0
  707. /data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/ext/json/ext/parser/.sitearchdir.-.json.-.ext.time +0 -0
  708. /data/vendor/bundle/ruby/2.6.0/gems/{json-2.7.2 → json-2.7.6}/lib/json/add/set.rb +0 -0
  709. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/LICENSE.txt +0 -0
  710. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/README.md +0 -0
  711. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/context.rdoc +0 -0
  712. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/rdoc/child.rdoc +0 -0
  713. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/rdoc/document.rdoc +0 -0
  714. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/rdoc/element.rdoc +0 -0
  715. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/rdoc/node.rdoc +0 -0
  716. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/rdoc/parent.rdoc +0 -0
  717. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/tocs/child_toc.rdoc +0 -0
  718. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/tocs/document_toc.rdoc +0 -0
  719. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/tocs/element_toc.rdoc +0 -0
  720. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/tocs/master_toc.rdoc +0 -0
  721. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/tocs/node_toc.rdoc +0 -0
  722. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tasks/tocs/parent_toc.rdoc +0 -0
  723. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/doc/rexml/tutorial.rdoc +0 -0
  724. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/attlistdecl.rb +0 -0
  725. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/attribute.rb +0 -0
  726. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/cdata.rb +0 -0
  727. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/child.rb +0 -0
  728. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/comment.rb +0 -0
  729. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/doctype.rb +0 -0
  730. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/document.rb +0 -0
  731. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/dtd/attlistdecl.rb +0 -0
  732. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/dtd/dtd.rb +0 -0
  733. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/dtd/elementdecl.rb +0 -0
  734. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/dtd/entitydecl.rb +0 -0
  735. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/dtd/notationdecl.rb +0 -0
  736. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/element.rb +0 -0
  737. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/encoding.rb +0 -0
  738. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/entity.rb +0 -0
  739. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/formatters/default.rb +0 -0
  740. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/formatters/pretty.rb +0 -0
  741. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/formatters/transitive.rb +0 -0
  742. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/functions.rb +0 -0
  743. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/instruction.rb +0 -0
  744. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/light/node.rb +0 -0
  745. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/namespace.rb +0 -0
  746. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/node.rb +0 -0
  747. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/output.rb +0 -0
  748. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parent.rb +0 -0
  749. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parseexception.rb +0 -0
  750. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/lightparser.rb +0 -0
  751. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/pullparser.rb +0 -0
  752. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/sax2parser.rb +0 -0
  753. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/streamparser.rb +0 -0
  754. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/treeparser.rb +0 -0
  755. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/ultralightparser.rb +0 -0
  756. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/parsers/xpathparser.rb +0 -0
  757. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/quickpath.rb +0 -0
  758. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/sax2listener.rb +0 -0
  759. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/security.rb +0 -0
  760. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/streamlistener.rb +0 -0
  761. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/text.rb +0 -0
  762. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/undefinednamespaceexception.rb +0 -0
  763. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/validation/relaxng.rb +0 -0
  764. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/validation/validation.rb +0 -0
  765. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/validation/validationexception.rb +0 -0
  766. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/xmldecl.rb +0 -0
  767. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/xmltokens.rb +0 -0
  768. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/xpath.rb +0 -0
  769. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml/xpath_parser.rb +0 -0
  770. /data/vendor/bundle/ruby/2.6.0/gems/{rexml-3.3.8 → rexml-3.3.9}/lib/rexml.rb +0 -0
  771. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/.document +0 -0
  772. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/.yardopts +0 -0
  773. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/LICENSE.md +0 -0
  774. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/README.md +0 -0
  775. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/exe/rspec +0 -0
  776. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/autorun.rb +0 -0
  777. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/backtrace_formatter.rb +0 -0
  778. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/coordinator.rb +0 -0
  779. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/example_minimizer.rb +0 -0
  780. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/server.rb +0 -0
  781. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/shell_command.rb +0 -0
  782. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/shell_runner.rb +0 -0
  783. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/bisect/utilities.rb +0 -0
  784. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/drb.rb +0 -0
  785. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/dsl.rb +0 -0
  786. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/example.rb +0 -0
  787. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/example_group.rb +0 -0
  788. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/example_status_persister.rb +0 -0
  789. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/filter_manager.rb +0 -0
  790. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/flat_map.rb +0 -0
  791. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/base_bisect_formatter.rb +0 -0
  792. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/base_formatter.rb +0 -0
  793. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/base_text_formatter.rb +0 -0
  794. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/bisect_drb_formatter.rb +0 -0
  795. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/bisect_progress_formatter.rb +0 -0
  796. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/console_codes.rb +0 -0
  797. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/deprecation_formatter.rb +0 -0
  798. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/documentation_formatter.rb +0 -0
  799. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/failure_list_formatter.rb +0 -0
  800. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/fallback_message_formatter.rb +0 -0
  801. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/helpers.rb +0 -0
  802. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/html_formatter.rb +0 -0
  803. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/html_printer.rb +0 -0
  804. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/json_formatter.rb +0 -0
  805. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/profile_formatter.rb +0 -0
  806. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/progress_formatter.rb +0 -0
  807. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/protocol.rb +0 -0
  808. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/snippet_extractor.rb +0 -0
  809. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters/syntax_highlighter.rb +0 -0
  810. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/formatters.rb +0 -0
  811. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/hooks.rb +0 -0
  812. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/invocations.rb +0 -0
  813. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/memoized_helpers.rb +0 -0
  814. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/metadata_filter.rb +0 -0
  815. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/minitest_assertions_adapter.rb +0 -0
  816. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/mocking_adapters/flexmock.rb +0 -0
  817. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/mocking_adapters/mocha.rb +0 -0
  818. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/mocking_adapters/null.rb +0 -0
  819. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/mocking_adapters/rr.rb +0 -0
  820. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/mocking_adapters/rspec.rb +0 -0
  821. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/notifications.rb +0 -0
  822. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/ordering.rb +0 -0
  823. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/output_wrapper.rb +0 -0
  824. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/pending.rb +0 -0
  825. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/profiler.rb +0 -0
  826. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/project_initializer/.rspec +0 -0
  827. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/project_initializer/spec/spec_helper.rb +0 -0
  828. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/project_initializer.rb +0 -0
  829. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/reporter.rb +0 -0
  830. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/ruby_project.rb +0 -0
  831. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/runner.rb +0 -0
  832. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/sandbox.rb +0 -0
  833. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/set.rb +0 -0
  834. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/shared_context.rb +0 -0
  835. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/shared_example_group.rb +0 -0
  836. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/shell_escape.rb +0 -0
  837. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/test_unit_assertions_adapter.rb +0 -0
  838. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/warnings.rb +0 -0
  839. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core/world.rb +0 -0
  840. /data/vendor/bundle/ruby/2.6.0/gems/{rspec-core-3.13.1 → rspec-core-3.13.2}/lib/rspec/core.rb +0 -0
  841. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/Gemfile +0 -0
  842. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/LICENSE +0 -0
  843. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/MANIFEST.md +0 -0
  844. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/README.md +0 -0
  845. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/Rakefile +0 -0
  846. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/certs/djberg96_pub.pem +0 -0
  847. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/doc/uname.rdoc +0 -0
  848. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/examples/uname_test.rb +0 -0
  849. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/lib/sys/platform.rb +0 -0
  850. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/lib/sys/windows/uname.rb +0 -0
  851. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/lib/sys-uname.rb +0 -0
  852. /data/vendor/bundle/ruby/2.6.0/gems/{sys-uname-1.3.0 → sys-uname-1.3.1}/spec/spec_helper.rb +0 -0
@@ -1,332 +1,306 @@
1
1
  #include "../fbuffer/fbuffer.h"
2
2
  #include "generator.h"
3
3
 
4
- static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject,
5
- mHash, mArray,
6
- #ifdef RUBY_INTEGER_UNIFICATION
7
- mInteger,
8
- #else
9
- mFixnum, mBignum,
4
+ #ifndef RB_UNLIKELY
5
+ #define RB_UNLIKELY(cond) (cond)
10
6
  #endif
11
- mFloat, mString, mString_Extend,
12
- mTrueClass, mFalseClass, mNilClass, eGeneratorError,
13
- eNestingError;
14
7
 
15
- static ID i_to_s, i_to_json, i_new, i_indent, i_space, i_space_before,
16
- i_object_nl, i_array_nl, i_max_nesting, i_allow_nan, i_ascii_only,
17
- i_pack, i_unpack, i_create_id, i_extend, i_key_p,
18
- i_aref, i_send, i_respond_to_p, i_match, i_keys, i_depth,
19
- i_buffer_initial_length, i_dup, i_script_safe, i_escape_slash, i_strict;
8
+ static VALUE mJSON, cState, mString_Extend, eGeneratorError, eNestingError, Encoding_UTF_8;
20
9
 
21
- /*
22
- * Copyright 2001-2004 Unicode, Inc.
10
+ static ID i_to_s, i_to_json, i_new, i_pack, i_unpack, i_create_id, i_extend, i_encode;
11
+
12
+ /* Converts in_string to a JSON string (without the wrapping '"'
13
+ * characters) in FBuffer out_buffer.
23
14
  *
24
- * Disclaimer
15
+ * Character are JSON-escaped according to:
25
16
  *
26
- * This source code is provided as is by Unicode, Inc. No claims are
27
- * made as to fitness for any particular purpose. No warranties of any
28
- * kind are expressed or implied. The recipient agrees to determine
29
- * applicability of information provided. If this file has been
30
- * purchased on magnetic or optical media from Unicode, Inc., the
31
- * sole remedy for any claim will be exchange of defective media
32
- * within 90 days of receipt.
17
+ * - Always: ASCII control characters (0x00-0x1F), dquote, and
18
+ * backslash.
33
19
  *
34
- * Limitations on Rights to Redistribute This Code
20
+ * - If out_ascii_only: non-ASCII characters (>0x7F)
35
21
  *
36
- * Unicode, Inc. hereby grants the right to freely use the information
37
- * supplied in this file in the creation of products supporting the
38
- * Unicode Standard, and to make copies of this file in any form
39
- * for internal or external distribution as long as this notice
40
- * remains attached.
22
+ * - If out_script_safe: forwardslash, line separator (U+2028), and
23
+ * paragraph separator (U+2029)
24
+ *
25
+ * Everything else (should be UTF-8) is just passed through and
26
+ * appended to the result.
41
27
  */
28
+ static void convert_UTF8_to_JSON(FBuffer *out_buffer, VALUE str, const char escape_table[256], bool out_script_safe)
29
+ {
30
+ const char *hexdig = "0123456789abcdef";
31
+ char scratch[12] = { '\\', 'u', 0, 0, 0, 0, '\\', 'u' };
42
32
 
43
- /*
44
- * Index into the table below with the first byte of a UTF-8 sequence to
45
- * get the number of trailing bytes that are supposed to follow it.
46
- * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is
47
- * left as-is for anyone who may want to do such conversion, which was
48
- * allowed in earlier algorithms.
49
- */
50
- static const char trailingBytesForUTF8[256] = {
51
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
52
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
53
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
54
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
55
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
56
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
57
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
58
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
59
- };
33
+ const char *ptr = RSTRING_PTR(str);
34
+ unsigned long len = RSTRING_LEN(str);
60
35
 
61
- /*
62
- * Magic values subtracted from a buffer value during UTF8 conversion.
63
- * This table contains as many values as there might be trailing bytes
64
- * in a UTF-8 sequence.
65
- */
66
- static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
67
- 0x03C82080UL, 0xFA082080UL, 0x82082080UL };
36
+ unsigned long beg = 0, pos = 0;
68
37
 
69
- /*
70
- * Utility routine to tell whether a sequence of bytes is legal UTF-8.
71
- * This must be called with the length pre-determined by the first byte.
72
- * If not calling this from ConvertUTF8to*, then the length can be set by:
73
- * length = trailingBytesForUTF8[*source]+1;
74
- * and the sequence is illegal right away if there aren't that many bytes
75
- * available.
76
- * If presented with a length > 4, this returns 0. The Unicode
77
- * definition of UTF-8 goes up to 4-byte sequences.
78
- */
79
- static unsigned char isLegalUTF8(const UTF8 *source, unsigned long length)
80
- {
81
- UTF8 a;
82
- const UTF8 *srcptr = source+length;
83
- switch (length) {
84
- default: return 0;
85
- /* Everything else falls through when "1"... */
86
- case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0;
87
- case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0;
88
- case 2: if ((a = (*--srcptr)) > 0xBF) return 0;
89
-
90
- switch (*source) {
91
- /* no fall-through in this inner switch */
92
- case 0xE0: if (a < 0xA0) return 0; break;
93
- case 0xED: if (a > 0x9F) return 0; break;
94
- case 0xF0: if (a < 0x90) return 0; break;
95
- case 0xF4: if (a > 0x8F) return 0; break;
96
- default: if (a < 0x80) return 0;
38
+ #define FLUSH_POS(bytes) if (pos > beg) { fbuffer_append(out_buffer, &ptr[beg], pos - beg); } pos += bytes; beg = pos;
39
+
40
+ while (pos < len) {
41
+ unsigned char ch = ptr[pos];
42
+ unsigned char ch_len = escape_table[ch];
43
+ /* JSON encoding */
44
+
45
+ if (RB_UNLIKELY(ch_len)) {
46
+ switch (ch_len) {
47
+ case 0:
48
+ pos++;
49
+ break;
50
+ case 1: {
51
+ FLUSH_POS(1);
52
+ switch (ch) {
53
+ case '"': fbuffer_append(out_buffer, "\\\"", 2); break;
54
+ case '\\': fbuffer_append(out_buffer, "\\\\", 2); break;
55
+ case '/': fbuffer_append(out_buffer, "\\/", 2); break;
56
+ case '\b': fbuffer_append(out_buffer, "\\b", 2); break;
57
+ case '\f': fbuffer_append(out_buffer, "\\f", 2); break;
58
+ case '\n': fbuffer_append(out_buffer, "\\n", 2); break;
59
+ case '\r': fbuffer_append(out_buffer, "\\r", 2); break;
60
+ case '\t': fbuffer_append(out_buffer, "\\t", 2); break;
61
+ default: {
62
+ scratch[2] = hexdig[ch >> 12];
63
+ scratch[3] = hexdig[(ch >> 8) & 0xf];
64
+ scratch[4] = hexdig[(ch >> 4) & 0xf];
65
+ scratch[5] = hexdig[ch & 0xf];
66
+ fbuffer_append(out_buffer, scratch, 6);
67
+ break;
68
+ }
97
69
  }
70
+ break;
71
+ }
72
+ case 3: {
73
+ unsigned char b2 = ptr[pos + 1];
74
+ if (RB_UNLIKELY(out_script_safe && b2 == 0x80)) {
75
+ unsigned char b3 = ptr[pos + 2];
76
+ if (b3 == 0xA8) {
77
+ FLUSH_POS(3);
78
+ fbuffer_append(out_buffer, "\\u2028", 6);
79
+ break;
80
+ } else if (b3 == 0xA9) {
81
+ FLUSH_POS(3);
82
+ fbuffer_append(out_buffer, "\\u2029", 6);
83
+ break;
84
+ }
85
+ }
86
+ // fallthrough
87
+ }
88
+ default:
89
+ pos += ch_len;
90
+ break;
91
+ }
92
+ } else {
93
+ pos++;
94
+ }
95
+ }
96
+ #undef FLUSH_POS
98
97
 
99
- case 1: if (*source >= 0x80 && *source < 0xC2) return 0;
98
+ if (beg < len) {
99
+ fbuffer_append(out_buffer, &ptr[beg], len - beg);
100
100
  }
101
- if (*source > 0xF4) return 0;
102
- return 1;
103
- }
104
101
 
105
- /* Escapes the UTF16 character and stores the result in the buffer buf. */
106
- static void unicode_escape(char *buf, UTF16 character)
107
- {
108
- const char *digits = "0123456789abcdef";
102
+ RB_GC_GUARD(str);
103
+ }
104
+
105
+ static const char escape_table[256] = {
106
+ // ASCII Control Characters
107
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
108
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
109
+ // ASCII Characters
110
+ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, // '"'
111
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
112
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
113
+ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, // '\\'
114
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
115
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
116
+ // Continuation byte
117
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
118
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
119
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
120
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
121
+ // First byte of a 2-byte code point
122
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
123
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
124
+ // First byte of a 4-byte code point
125
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
126
+ //First byte of a 4+byte code point
127
+ 4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
128
+ };
109
129
 
110
- buf[2] = digits[character >> 12];
111
- buf[3] = digits[(character >> 8) & 0xf];
112
- buf[4] = digits[(character >> 4) & 0xf];
113
- buf[5] = digits[character & 0xf];
114
- }
130
+ static const char script_safe_escape_table[256] = {
131
+ // ASCII Control Characters
132
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
133
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
134
+ // ASCII Characters
135
+ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1, // '"' and '/'
136
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
137
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
138
+ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, // '\\'
139
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
140
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
141
+ // Continuation byte
142
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
143
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
144
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
145
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
146
+ // First byte of a 2-byte code point
147
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
148
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
149
+ // First byte of a 4-byte code point
150
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
151
+ //First byte of a 4+byte code point
152
+ 4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
153
+ };
115
154
 
116
- /* Escapes the UTF16 character and stores the result in the buffer buf, then
117
- * the buffer buf is appended to the FBuffer buffer. */
118
- static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16
119
- character)
155
+ static void convert_ASCII_to_JSON(FBuffer *out_buffer, VALUE str, const char escape_table[256])
120
156
  {
121
- unicode_escape(buf, character);
122
- fbuffer_append(buffer, buf, 6);
157
+ const char *hexdig = "0123456789abcdef";
158
+ char scratch[12] = { '\\', 'u', 0, 0, 0, 0, '\\', 'u' };
159
+
160
+ const char *ptr = RSTRING_PTR(str);
161
+ unsigned long len = RSTRING_LEN(str);
162
+
163
+ unsigned long beg = 0, pos;
164
+
165
+ for (pos = 0; pos < len;) {
166
+ unsigned char ch = ptr[pos];
167
+ /* JSON encoding */
168
+ if (escape_table[ch]) {
169
+ if (pos > beg) {
170
+ fbuffer_append(out_buffer, &ptr[beg], pos - beg);
171
+ }
172
+
173
+ beg = pos + 1;
174
+ switch (ch) {
175
+ case '"': fbuffer_append(out_buffer, "\\\"", 2); break;
176
+ case '\\': fbuffer_append(out_buffer, "\\\\", 2); break;
177
+ case '/': fbuffer_append(out_buffer, "\\/", 2); break;
178
+ case '\b': fbuffer_append(out_buffer, "\\b", 2); break;
179
+ case '\f': fbuffer_append(out_buffer, "\\f", 2); break;
180
+ case '\n': fbuffer_append(out_buffer, "\\n", 2); break;
181
+ case '\r': fbuffer_append(out_buffer, "\\r", 2); break;
182
+ case '\t': fbuffer_append(out_buffer, "\\t", 2); break;
183
+ default:
184
+ scratch[2] = hexdig[ch >> 12];
185
+ scratch[3] = hexdig[(ch >> 8) & 0xf];
186
+ scratch[4] = hexdig[(ch >> 4) & 0xf];
187
+ scratch[5] = hexdig[ch & 0xf];
188
+ fbuffer_append(out_buffer, scratch, 6);
189
+ }
190
+ }
191
+
192
+ pos++;
193
+ }
194
+
195
+ if (beg < len) {
196
+ fbuffer_append(out_buffer, &ptr[beg], len - beg);
197
+ }
198
+
199
+ RB_GC_GUARD(str);
123
200
  }
124
201
 
125
- /* Converts string to a JSON string in FBuffer buffer, where all but the ASCII
126
- * and control characters are JSON escaped. */
127
- static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string, char script_safe)
202
+ static void convert_UTF8_to_ASCII_only_JSON(FBuffer *out_buffer, VALUE str, const char escape_table[256], bool out_script_safe)
128
203
  {
129
- const UTF8 *source = (UTF8 *) RSTRING_PTR(string);
130
- const UTF8 *sourceEnd = source + RSTRING_LEN(string);
131
- char buf[6] = { '\\', 'u' };
204
+ const char *hexdig = "0123456789abcdef";
205
+ char scratch[12] = { '\\', 'u', 0, 0, 0, 0, '\\', 'u' };
132
206
 
133
- while (source < sourceEnd) {
134
- UTF32 ch = 0;
135
- unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
136
- if (source + extraBytesToRead >= sourceEnd) {
137
- rb_raise(rb_path2class("JSON::GeneratorError"),
138
- "partial character in source, but hit end");
139
- }
140
- if (!isLegalUTF8(source, extraBytesToRead+1)) {
141
- rb_raise(rb_path2class("JSON::GeneratorError"),
142
- "source sequence is illegal/malformed utf-8");
143
- }
144
- /*
145
- * The cases all fall through. See "Note A" below.
146
- */
147
- switch (extraBytesToRead) {
148
- case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
149
- case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
150
- case 3: ch += *source++; ch <<= 6;
151
- case 2: ch += *source++; ch <<= 6;
152
- case 1: ch += *source++; ch <<= 6;
153
- case 0: ch += *source++;
154
- }
155
- ch -= offsetsFromUTF8[extraBytesToRead];
156
-
157
- if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
158
- /* UTF-16 surrogate values are illegal in UTF-32 */
159
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
160
- #if UNI_STRICT_CONVERSION
161
- source -= (extraBytesToRead+1); /* return to the illegal value itself */
162
- rb_raise(rb_path2class("JSON::GeneratorError"),
163
- "source sequence is illegal/malformed utf-8");
164
- #else
165
- unicode_escape_to_buffer(buffer, buf, UNI_REPLACEMENT_CHAR);
166
- #endif
167
- } else {
168
- /* normal case */
169
- if (ch >= 0x20 && ch <= 0x7f) {
207
+ const char *ptr = RSTRING_PTR(str);
208
+ unsigned long len = RSTRING_LEN(str);
209
+
210
+ unsigned long beg = 0, pos = 0;
211
+
212
+ #define FLUSH_POS(bytes) if (pos > beg) { fbuffer_append(out_buffer, &ptr[beg], pos - beg); } pos += bytes; beg = pos;
213
+
214
+ while (pos < len) {
215
+ unsigned char ch = ptr[pos];
216
+ unsigned char ch_len = escape_table[ch];
217
+
218
+ if (RB_UNLIKELY(ch_len)) {
219
+ switch (ch_len) {
220
+ case 0:
221
+ pos++;
222
+ break;
223
+ case 1: {
224
+ FLUSH_POS(1);
170
225
  switch (ch) {
171
- case '\\':
172
- fbuffer_append(buffer, "\\\\", 2);
173
- break;
174
- case '"':
175
- fbuffer_append(buffer, "\\\"", 2);
176
- break;
177
- case '/':
178
- if(script_safe) {
179
- fbuffer_append(buffer, "\\/", 2);
180
- break;
181
- }
182
- default:
183
- fbuffer_append_char(buffer, (char)ch);
226
+ case '"': fbuffer_append(out_buffer, "\\\"", 2); break;
227
+ case '\\': fbuffer_append(out_buffer, "\\\\", 2); break;
228
+ case '/': fbuffer_append(out_buffer, "\\/", 2); break;
229
+ case '\b': fbuffer_append(out_buffer, "\\b", 2); break;
230
+ case '\f': fbuffer_append(out_buffer, "\\f", 2); break;
231
+ case '\n': fbuffer_append(out_buffer, "\\n", 2); break;
232
+ case '\r': fbuffer_append(out_buffer, "\\r", 2); break;
233
+ case '\t': fbuffer_append(out_buffer, "\\t", 2); break;
234
+ default: {
235
+ scratch[2] = hexdig[ch >> 12];
236
+ scratch[3] = hexdig[(ch >> 8) & 0xf];
237
+ scratch[4] = hexdig[(ch >> 4) & 0xf];
238
+ scratch[5] = hexdig[ch & 0xf];
239
+ fbuffer_append(out_buffer, scratch, 6);
184
240
  break;
241
+ }
185
242
  }
186
- } else {
187
- switch (ch) {
188
- case '\n':
189
- fbuffer_append(buffer, "\\n", 2);
190
- break;
191
- case '\r':
192
- fbuffer_append(buffer, "\\r", 2);
193
- break;
194
- case '\t':
195
- fbuffer_append(buffer, "\\t", 2);
196
- break;
197
- case '\f':
198
- fbuffer_append(buffer, "\\f", 2);
243
+ break;
244
+ }
245
+ default: {
246
+ uint32_t wchar = 0;
247
+ switch(ch_len) {
248
+ case 2:
249
+ wchar = ptr[pos] & 0x1F;
199
250
  break;
200
- case '\b':
201
- fbuffer_append(buffer, "\\b", 2);
251
+ case 3:
252
+ wchar = ptr[pos] & 0x0F;
202
253
  break;
203
- default:
204
- unicode_escape_to_buffer(buffer, buf, (UTF16) ch);
254
+ case 4:
255
+ wchar = ptr[pos] & 0x07;
205
256
  break;
206
257
  }
207
- }
208
- }
209
- } else if (ch > UNI_MAX_UTF16) {
210
- #if UNI_STRICT_CONVERSION
211
- source -= (extraBytesToRead+1); /* return to the start */
212
- rb_raise(rb_path2class("JSON::GeneratorError"),
213
- "source sequence is illegal/malformed utf8");
214
- #else
215
- unicode_escape_to_buffer(buffer, buf, UNI_REPLACEMENT_CHAR);
216
- #endif
217
- } else {
218
- /* target is a character in range 0xFFFF - 0x10FFFF. */
219
- ch -= halfBase;
220
- unicode_escape_to_buffer(buffer, buf, (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START));
221
- unicode_escape_to_buffer(buffer, buf, (UTF16)((ch & halfMask) + UNI_SUR_LOW_START));
222
- }
223
- }
224
- RB_GC_GUARD(string);
225
- }
226
-
227
- /* Converts string to a JSON string in FBuffer buffer, where only the
228
- * characters required by the JSON standard are JSON escaped. The remaining
229
- * characters (should be UTF8) are just passed through and appended to the
230
- * result. */
231
- static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string, char script_safe)
232
- {
233
- const char *ptr = RSTRING_PTR(string), *p;
234
- unsigned long len = RSTRING_LEN(string), start = 0, end = 0;
235
- const char *escape = NULL;
236
- int escape_len;
237
- unsigned char c;
238
- char buf[6] = { '\\', 'u' };
239
- int ascii_only = rb_enc_str_asciionly_p(string);
240
-
241
- for (start = 0, end = 0; end < len;) {
242
- p = ptr + end;
243
- c = (unsigned char) *p;
244
- if (c < 0x20) {
245
- switch (c) {
246
- case '\n':
247
- escape = "\\n";
248
- escape_len = 2;
249
- break;
250
- case '\r':
251
- escape = "\\r";
252
- escape_len = 2;
253
- break;
254
- case '\t':
255
- escape = "\\t";
256
- escape_len = 2;
257
- break;
258
- case '\f':
259
- escape = "\\f";
260
- escape_len = 2;
261
- break;
262
- case '\b':
263
- escape = "\\b";
264
- escape_len = 2;
265
- break;
266
- default:
267
- unicode_escape(buf, (UTF16) *p);
268
- escape = buf;
269
- escape_len = 6;
270
- break;
271
- }
272
- } else {
273
- switch (c) {
274
- case '\\':
275
- escape = "\\\\";
276
- escape_len = 2;
277
- break;
278
- case '"':
279
- escape = "\\\"";
280
- escape_len = 2;
281
- break;
282
- case '/':
283
- if(script_safe) {
284
- escape = "\\/";
285
- escape_len = 2;
286
- break;
258
+
259
+ for (short i = 1; i < ch_len; i++) {
260
+ wchar = (wchar << 6) | (ptr[pos+i] & 0x3F);
287
261
  }
288
- default:
289
- {
290
- unsigned short clen = 1;
291
- if (!ascii_only) {
292
- clen += trailingBytesForUTF8[c];
293
- if (end + clen > len) {
294
- rb_raise(rb_path2class("JSON::GeneratorError"),
295
- "partial character in source, but hit end");
296
- }
297
-
298
- if (script_safe && c == 0xE2) {
299
- unsigned char c2 = (unsigned char) *(p+1);
300
- unsigned char c3 = (unsigned char) *(p+2);
301
- if (c2 == 0x80 && (c3 == 0xA8 || c3 == 0xA9)) {
302
- fbuffer_append(buffer, ptr + start, end - start);
303
- start = end = (end + clen);
304
- if (c3 == 0xA8) {
305
- fbuffer_append(buffer, "\\u2028", 6);
306
- } else {
307
- fbuffer_append(buffer, "\\u2029", 6);
308
- }
309
- continue;
310
- }
311
- }
312
-
313
- if (!isLegalUTF8((UTF8 *) p, clen)) {
314
- rb_raise(rb_path2class("JSON::GeneratorError"),
315
- "source sequence is illegal/malformed utf-8");
316
- }
317
- }
318
- end += clen;
262
+
263
+ FLUSH_POS(ch_len);
264
+
265
+ if (wchar <= 0xFFFF) {
266
+ scratch[2] = hexdig[wchar >> 12];
267
+ scratch[3] = hexdig[(wchar >> 8) & 0xf];
268
+ scratch[4] = hexdig[(wchar >> 4) & 0xf];
269
+ scratch[5] = hexdig[wchar & 0xf];
270
+ fbuffer_append(out_buffer, scratch, 6);
271
+ } else {
272
+ uint16_t hi, lo;
273
+ wchar -= 0x10000;
274
+ hi = 0xD800 + (uint16_t)(wchar >> 10);
275
+ lo = 0xDC00 + (uint16_t)(wchar & 0x3FF);
276
+
277
+ scratch[2] = hexdig[hi >> 12];
278
+ scratch[3] = hexdig[(hi >> 8) & 0xf];
279
+ scratch[4] = hexdig[(hi >> 4) & 0xf];
280
+ scratch[5] = hexdig[hi & 0xf];
281
+
282
+ scratch[8] = hexdig[lo >> 12];
283
+ scratch[9] = hexdig[(lo >> 8) & 0xf];
284
+ scratch[10] = hexdig[(lo >> 4) & 0xf];
285
+ scratch[11] = hexdig[lo & 0xf];
286
+
287
+ fbuffer_append(out_buffer, scratch, 12);
319
288
  }
320
- continue;
289
+
321
290
  break;
291
+ }
322
292
  }
293
+ } else {
294
+ pos++;
323
295
  }
324
- fbuffer_append(buffer, ptr + start, end - start);
325
- fbuffer_append(buffer, escape, escape_len);
326
- start = ++end;
327
- escape = NULL;
328
296
  }
329
- fbuffer_append(buffer, ptr + start, end - start);
297
+ #undef FLUSH_POS
298
+
299
+ if (beg < len) {
300
+ fbuffer_append(out_buffer, &ptr[beg], len - beg);
301
+ }
302
+
303
+ RB_GC_GUARD(str);
330
304
  }
331
305
 
332
306
  static char *fstrndup(const char *ptr, unsigned long len) {
@@ -429,7 +403,9 @@ static char *fstrndup(const char *ptr, unsigned long len) {
429
403
  */
430
404
  static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self)
431
405
  {
432
- GENERATE_JSON(object);
406
+ rb_check_arity(argc, 0, 1);
407
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
408
+ return cState_partial_generate(Vstate, self, generate_json_object);
433
409
  }
434
410
 
435
411
  /*
@@ -441,7 +417,9 @@ static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self)
441
417
  * produced JSON string output further.
442
418
  */
443
419
  static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self) {
444
- GENERATE_JSON(array);
420
+ rb_check_arity(argc, 0, 1);
421
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
422
+ return cState_partial_generate(Vstate, self, generate_json_array);
445
423
  }
446
424
 
447
425
  #ifdef RUBY_INTEGER_UNIFICATION
@@ -452,7 +430,9 @@ static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self) {
452
430
  */
453
431
  static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self)
454
432
  {
455
- GENERATE_JSON(integer);
433
+ rb_check_arity(argc, 0, 1);
434
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
435
+ return cState_partial_generate(Vstate, self, generate_json_integer);
456
436
  }
457
437
 
458
438
  #else
@@ -463,7 +443,9 @@ static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self)
463
443
  */
464
444
  static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self)
465
445
  {
466
- GENERATE_JSON(fixnum);
446
+ rb_check_arity(argc, 0, 1);
447
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
448
+ return cState_partial_generate(Vstate, self, generate_json_fixnum);
467
449
  }
468
450
 
469
451
  /*
@@ -473,7 +455,9 @@ static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self)
473
455
  */
474
456
  static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self)
475
457
  {
476
- GENERATE_JSON(bignum);
458
+ rb_check_arity(argc, 0, 1);
459
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
460
+ return cState_partial_generate(Vstate, self, generate_json_bignum);
477
461
  }
478
462
  #endif
479
463
 
@@ -484,7 +468,9 @@ static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self)
484
468
  */
485
469
  static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self)
486
470
  {
487
- GENERATE_JSON(float);
471
+ rb_check_arity(argc, 0, 1);
472
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
473
+ return cState_partial_generate(Vstate, self, generate_json_float);
488
474
  }
489
475
 
490
476
  /*
@@ -507,7 +493,9 @@ static VALUE mString_included_s(VALUE self, VALUE modul) {
507
493
  */
508
494
  static VALUE mString_to_json(int argc, VALUE *argv, VALUE self)
509
495
  {
510
- GENERATE_JSON(string);
496
+ rb_check_arity(argc, 0, 1);
497
+ VALUE Vstate = cState_from_state_s(cState, argc == 1 ? argv[0] : Qnil);
498
+ return cState_partial_generate(Vstate, self, generate_json_string);
511
499
  }
512
500
 
513
501
  /*
@@ -562,7 +550,8 @@ static VALUE mString_Extend_json_create(VALUE self, VALUE o)
562
550
  */
563
551
  static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self)
564
552
  {
565
- GENERATE_JSON(true);
553
+ rb_check_arity(argc, 0, 1);
554
+ return rb_utf8_str_new("true", 4);
566
555
  }
567
556
 
568
557
  /*
@@ -572,7 +561,8 @@ static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self)
572
561
  */
573
562
  static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self)
574
563
  {
575
- GENERATE_JSON(false);
564
+ rb_check_arity(argc, 0, 1);
565
+ return rb_utf8_str_new("false", 5);
576
566
  }
577
567
 
578
568
  /*
@@ -582,7 +572,8 @@ static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self)
582
572
  */
583
573
  static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self)
584
574
  {
585
- GENERATE_JSON(null);
575
+ rb_check_arity(argc, 0, 1);
576
+ return rb_utf8_str_new("null", 4);
586
577
  }
587
578
 
588
579
  /*
@@ -599,7 +590,7 @@ static VALUE mObject_to_json(int argc, VALUE *argv, VALUE self)
599
590
  rb_scan_args(argc, argv, "01", &state);
600
591
  Check_Type(string, T_STRING);
601
592
  state = cState_from_state_s(cState, state);
602
- return cState_partial_generate(state, string);
593
+ return cState_partial_generate(state, string, generate_json_string);
603
594
  }
604
595
 
605
596
  static void State_free(void *ptr)
@@ -610,9 +601,6 @@ static void State_free(void *ptr)
610
601
  if (state->space_before) ruby_xfree(state->space_before);
611
602
  if (state->object_nl) ruby_xfree(state->object_nl);
612
603
  if (state->array_nl) ruby_xfree(state->array_nl);
613
- if (state->array_delim) fbuffer_free(state->array_delim);
614
- if (state->object_delim) fbuffer_free(state->object_delim);
615
- if (state->object_delim2) fbuffer_free(state->object_delim2);
616
604
  ruby_xfree(state);
617
605
  }
618
606
 
@@ -625,9 +613,6 @@ static size_t State_memsize(const void *ptr)
625
613
  if (state->space_before) size += state->space_before_len + 1;
626
614
  if (state->object_nl) size += state->object_nl_len + 1;
627
615
  if (state->array_nl) size += state->array_nl_len + 1;
628
- if (state->array_delim) size += FBUFFER_CAPA(state->array_delim);
629
- if (state->object_delim) size += FBUFFER_CAPA(state->object_delim);
630
- if (state->object_delim2) size += FBUFFER_CAPA(state->object_delim2);
631
616
  return size;
632
617
  }
633
618
 
@@ -636,194 +621,20 @@ static size_t State_memsize(const void *ptr)
636
621
  # define RUBY_TYPED_FROZEN_SHAREABLE 0
637
622
  #endif
638
623
 
639
- #ifdef NEW_TYPEDDATA_WRAPPER
640
624
  static const rb_data_type_t JSON_Generator_State_type = {
641
625
  "JSON/Generator/State",
642
626
  {NULL, State_free, State_memsize,},
643
- #ifdef RUBY_TYPED_FREE_IMMEDIATELY
644
627
  0, 0,
645
- RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
646
- #endif
628
+ RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
647
629
  };
648
- #endif
649
630
 
650
631
  static VALUE cState_s_allocate(VALUE klass)
651
632
  {
652
633
  JSON_Generator_State *state;
653
- return TypedData_Make_Struct(klass, JSON_Generator_State,
654
- &JSON_Generator_State_type, state);
655
- }
656
-
657
- /*
658
- * call-seq: configure(opts)
659
- *
660
- * Configure this State instance with the Hash _opts_, and return
661
- * itself.
662
- */
663
- static VALUE cState_configure(VALUE self, VALUE opts)
664
- {
665
- VALUE tmp;
666
- GET_STATE(self);
667
- tmp = rb_check_convert_type(opts, T_HASH, "Hash", "to_hash");
668
- if (NIL_P(tmp)) tmp = rb_convert_type(opts, T_HASH, "Hash", "to_h");
669
- opts = tmp;
670
- tmp = rb_hash_aref(opts, ID2SYM(i_indent));
671
- if (RTEST(tmp)) {
672
- unsigned long len;
673
- Check_Type(tmp, T_STRING);
674
- len = RSTRING_LEN(tmp);
675
- state->indent = fstrndup(RSTRING_PTR(tmp), len + 1);
676
- state->indent_len = len;
677
- }
678
- tmp = rb_hash_aref(opts, ID2SYM(i_space));
679
- if (RTEST(tmp)) {
680
- unsigned long len;
681
- Check_Type(tmp, T_STRING);
682
- len = RSTRING_LEN(tmp);
683
- state->space = fstrndup(RSTRING_PTR(tmp), len + 1);
684
- state->space_len = len;
685
- }
686
- tmp = rb_hash_aref(opts, ID2SYM(i_space_before));
687
- if (RTEST(tmp)) {
688
- unsigned long len;
689
- Check_Type(tmp, T_STRING);
690
- len = RSTRING_LEN(tmp);
691
- state->space_before = fstrndup(RSTRING_PTR(tmp), len + 1);
692
- state->space_before_len = len;
693
- }
694
- tmp = rb_hash_aref(opts, ID2SYM(i_array_nl));
695
- if (RTEST(tmp)) {
696
- unsigned long len;
697
- Check_Type(tmp, T_STRING);
698
- len = RSTRING_LEN(tmp);
699
- state->array_nl = fstrndup(RSTRING_PTR(tmp), len + 1);
700
- state->array_nl_len = len;
701
- }
702
- tmp = rb_hash_aref(opts, ID2SYM(i_object_nl));
703
- if (RTEST(tmp)) {
704
- unsigned long len;
705
- Check_Type(tmp, T_STRING);
706
- len = RSTRING_LEN(tmp);
707
- state->object_nl = fstrndup(RSTRING_PTR(tmp), len + 1);
708
- state->object_nl_len = len;
709
- }
710
- tmp = ID2SYM(i_max_nesting);
634
+ VALUE obj = TypedData_Make_Struct(klass, JSON_Generator_State, &JSON_Generator_State_type, state);
711
635
  state->max_nesting = 100;
712
- if (option_given_p(opts, tmp)) {
713
- VALUE max_nesting = rb_hash_aref(opts, tmp);
714
- if (RTEST(max_nesting)) {
715
- Check_Type(max_nesting, T_FIXNUM);
716
- state->max_nesting = FIX2LONG(max_nesting);
717
- } else {
718
- state->max_nesting = 0;
719
- }
720
- }
721
- tmp = ID2SYM(i_depth);
722
- state->depth = 0;
723
- if (option_given_p(opts, tmp)) {
724
- VALUE depth = rb_hash_aref(opts, tmp);
725
- if (RTEST(depth)) {
726
- Check_Type(depth, T_FIXNUM);
727
- state->depth = FIX2LONG(depth);
728
- } else {
729
- state->depth = 0;
730
- }
731
- }
732
- tmp = ID2SYM(i_buffer_initial_length);
733
- if (option_given_p(opts, tmp)) {
734
- VALUE buffer_initial_length = rb_hash_aref(opts, tmp);
735
- if (RTEST(buffer_initial_length)) {
736
- long initial_length;
737
- Check_Type(buffer_initial_length, T_FIXNUM);
738
- initial_length = FIX2LONG(buffer_initial_length);
739
- if (initial_length > 0) state->buffer_initial_length = initial_length;
740
- }
741
- }
742
- tmp = rb_hash_aref(opts, ID2SYM(i_allow_nan));
743
- state->allow_nan = RTEST(tmp);
744
- tmp = rb_hash_aref(opts, ID2SYM(i_ascii_only));
745
- state->ascii_only = RTEST(tmp);
746
- tmp = rb_hash_aref(opts, ID2SYM(i_script_safe));
747
- state->script_safe = RTEST(tmp);
748
- if (!state->script_safe) {
749
- tmp = rb_hash_aref(opts, ID2SYM(i_escape_slash));
750
- state->script_safe = RTEST(tmp);
751
- }
752
- tmp = rb_hash_aref(opts, ID2SYM(i_strict));
753
- state->strict = RTEST(tmp);
754
- return self;
755
- }
756
-
757
- static void set_state_ivars(VALUE hash, VALUE state)
758
- {
759
- VALUE ivars = rb_obj_instance_variables(state);
760
- int i = 0;
761
- for (i = 0; i < RARRAY_LEN(ivars); i++) {
762
- VALUE key = rb_funcall(rb_ary_entry(ivars, i), i_to_s, 0);
763
- long key_len = RSTRING_LEN(key);
764
- VALUE value = rb_iv_get(state, StringValueCStr(key));
765
- rb_hash_aset(hash, rb_str_intern(rb_str_substr(key, 1, key_len - 1)), value);
766
- }
767
- }
768
-
769
- /*
770
- * call-seq: to_h
771
- *
772
- * Returns the configuration instance variables as a hash, that can be
773
- * passed to the configure method.
774
- */
775
- static VALUE cState_to_h(VALUE self)
776
- {
777
- VALUE result = rb_hash_new();
778
- GET_STATE(self);
779
- set_state_ivars(result, self);
780
- rb_hash_aset(result, ID2SYM(i_indent), rb_str_new(state->indent, state->indent_len));
781
- rb_hash_aset(result, ID2SYM(i_space), rb_str_new(state->space, state->space_len));
782
- rb_hash_aset(result, ID2SYM(i_space_before), rb_str_new(state->space_before, state->space_before_len));
783
- rb_hash_aset(result, ID2SYM(i_object_nl), rb_str_new(state->object_nl, state->object_nl_len));
784
- rb_hash_aset(result, ID2SYM(i_array_nl), rb_str_new(state->array_nl, state->array_nl_len));
785
- rb_hash_aset(result, ID2SYM(i_allow_nan), state->allow_nan ? Qtrue : Qfalse);
786
- rb_hash_aset(result, ID2SYM(i_ascii_only), state->ascii_only ? Qtrue : Qfalse);
787
- rb_hash_aset(result, ID2SYM(i_max_nesting), LONG2FIX(state->max_nesting));
788
- rb_hash_aset(result, ID2SYM(i_script_safe), state->script_safe ? Qtrue : Qfalse);
789
- rb_hash_aset(result, ID2SYM(i_strict), state->strict ? Qtrue : Qfalse);
790
- rb_hash_aset(result, ID2SYM(i_depth), LONG2FIX(state->depth));
791
- rb_hash_aset(result, ID2SYM(i_buffer_initial_length), LONG2FIX(state->buffer_initial_length));
792
- return result;
793
- }
794
-
795
- /*
796
- * call-seq: [](name)
797
- *
798
- * Returns the value returned by method +name+.
799
- */
800
- static VALUE cState_aref(VALUE self, VALUE name)
801
- {
802
- name = rb_funcall(name, i_to_s, 0);
803
- if (RTEST(rb_funcall(self, i_respond_to_p, 1, name))) {
804
- return rb_funcall(self, i_send, 1, name);
805
- } else {
806
- return rb_attr_get(self, rb_intern_str(rb_str_concat(rb_str_new2("@"), name)));
807
- }
808
- }
809
-
810
- /*
811
- * call-seq: []=(name, value)
812
- *
813
- * Sets the attribute name to value.
814
- */
815
- static VALUE cState_aset(VALUE self, VALUE name, VALUE value)
816
- {
817
- VALUE name_writer;
818
-
819
- name = rb_funcall(name, i_to_s, 0);
820
- name_writer = rb_str_cat2(rb_str_dup(name), "=");
821
- if (RTEST(rb_funcall(self, i_respond_to_p, 1, name_writer))) {
822
- return rb_funcall(self, i_send, 2, name_writer, value);
823
- } else {
824
- rb_ivar_set(self, rb_intern_str(rb_str_concat(rb_str_new2("@"), name)), value);
825
- }
826
- return Qnil;
636
+ state->buffer_initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT;
637
+ return obj;
827
638
  }
828
639
 
829
640
  struct hash_foreach_arg {
@@ -841,39 +652,44 @@ json_object_i(VALUE key, VALUE val, VALUE _arg)
841
652
  JSON_Generator_State *state = arg->state;
842
653
  VALUE Vstate = arg->Vstate;
843
654
 
844
- char *object_nl = state->object_nl;
845
- long object_nl_len = state->object_nl_len;
846
- char *indent = state->indent;
847
- long indent_len = state->indent_len;
848
- char *delim = FBUFFER_PTR(state->object_delim);
849
- long delim_len = FBUFFER_LEN(state->object_delim);
850
- char *delim2 = FBUFFER_PTR(state->object_delim2);
851
- long delim2_len = FBUFFER_LEN(state->object_delim2);
852
655
  long depth = state->depth;
853
656
  int j;
854
- VALUE klass, key_to_s;
855
657
 
856
- if (arg->iter > 0) fbuffer_append(buffer, delim, delim_len);
857
- if (object_nl) {
858
- fbuffer_append(buffer, object_nl, object_nl_len);
658
+ if (arg->iter > 0) fbuffer_append_char(buffer, ',');
659
+ if (RB_UNLIKELY(state->object_nl)) {
660
+ fbuffer_append(buffer, state->object_nl, state->object_nl_len);
859
661
  }
860
- if (indent) {
662
+ if (RB_UNLIKELY(state->indent)) {
861
663
  for (j = 0; j < depth; j++) {
862
- fbuffer_append(buffer, indent, indent_len);
664
+ fbuffer_append(buffer, state->indent, state->indent_len);
863
665
  }
864
666
  }
865
667
 
866
- klass = CLASS_OF(key);
867
- if (klass == rb_cString) {
868
- key_to_s = key;
869
- } else if (klass == rb_cSymbol) {
870
- key_to_s = rb_sym2str(key);
668
+ VALUE key_to_s;
669
+ switch(rb_type(key)) {
670
+ case T_STRING:
671
+ if (RB_LIKELY(RBASIC_CLASS(key) == rb_cString)) {
672
+ key_to_s = key;
673
+ } else {
674
+ key_to_s = rb_funcall(key, i_to_s, 0);
675
+ }
676
+ break;
677
+ case T_SYMBOL:
678
+ key_to_s = rb_sym2str(key);
679
+ break;
680
+ default:
681
+ key_to_s = rb_convert_type(key, T_STRING, "String", "to_s");
682
+ break;
683
+ }
684
+
685
+ if (RB_LIKELY(RBASIC_CLASS(key_to_s) == rb_cString)) {
686
+ generate_json_string(buffer, Vstate, state, key_to_s);
871
687
  } else {
872
- key_to_s = rb_funcall(key, i_to_s, 0);
688
+ generate_json(buffer, Vstate, state, key_to_s);
873
689
  }
874
- Check_Type(key_to_s, T_STRING);
875
- generate_json(buffer, Vstate, state, key_to_s);
876
- fbuffer_append(buffer, delim2, delim2_len);
690
+ if (RB_UNLIKELY(state->space_before)) fbuffer_append(buffer, state->space_before, state->space_before_len);
691
+ fbuffer_append_char(buffer, ':');
692
+ if (RB_UNLIKELY(state->space)) fbuffer_append(buffer, state->space, state->space_len);
877
693
  generate_json(buffer, Vstate, state, val);
878
694
 
879
695
  arg->iter++;
@@ -882,10 +698,6 @@ json_object_i(VALUE key, VALUE val, VALUE _arg)
882
698
 
883
699
  static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
884
700
  {
885
- char *object_nl = state->object_nl;
886
- long object_nl_len = state->object_nl_len;
887
- char *indent = state->indent;
888
- long indent_len = state->indent_len;
889
701
  long max_nesting = state->max_nesting;
890
702
  long depth = ++state->depth;
891
703
  int j;
@@ -903,11 +715,11 @@ static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_S
903
715
  rb_hash_foreach(obj, json_object_i, (VALUE)&arg);
904
716
 
905
717
  depth = --state->depth;
906
- if (object_nl) {
907
- fbuffer_append(buffer, object_nl, object_nl_len);
908
- if (indent) {
718
+ if (RB_UNLIKELY(state->object_nl)) {
719
+ fbuffer_append(buffer, state->object_nl, state->object_nl_len);
720
+ if (RB_UNLIKELY(state->indent)) {
909
721
  for (j = 0; j < depth; j++) {
910
- fbuffer_append(buffer, indent, indent_len);
722
+ fbuffer_append(buffer, state->indent, state->indent_len);
911
723
  }
912
724
  }
913
725
  }
@@ -916,62 +728,90 @@ static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_S
916
728
 
917
729
  static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
918
730
  {
919
- char *array_nl = state->array_nl;
920
- long array_nl_len = state->array_nl_len;
921
- char *indent = state->indent;
922
- long indent_len = state->indent_len;
923
731
  long max_nesting = state->max_nesting;
924
- char *delim = FBUFFER_PTR(state->array_delim);
925
- long delim_len = FBUFFER_LEN(state->array_delim);
926
732
  long depth = ++state->depth;
927
733
  int i, j;
928
734
  if (max_nesting != 0 && depth > max_nesting) {
929
735
  rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth);
930
736
  }
931
737
  fbuffer_append_char(buffer, '[');
932
- if (array_nl) fbuffer_append(buffer, array_nl, array_nl_len);
738
+ if (RB_UNLIKELY(state->array_nl)) fbuffer_append(buffer, state->array_nl, state->array_nl_len);
933
739
  for(i = 0; i < RARRAY_LEN(obj); i++) {
934
- if (i > 0) fbuffer_append(buffer, delim, delim_len);
935
- if (indent) {
740
+ if (i > 0) {
741
+ fbuffer_append_char(buffer, ',');
742
+ if (RB_UNLIKELY(state->array_nl)) fbuffer_append(buffer, state->array_nl, state->array_nl_len);
743
+ }
744
+ if (RB_UNLIKELY(state->indent)) {
936
745
  for (j = 0; j < depth; j++) {
937
- fbuffer_append(buffer, indent, indent_len);
746
+ fbuffer_append(buffer, state->indent, state->indent_len);
938
747
  }
939
748
  }
940
- generate_json(buffer, Vstate, state, rb_ary_entry(obj, i));
749
+ generate_json(buffer, Vstate, state, RARRAY_AREF(obj, i));
941
750
  }
942
751
  state->depth = --depth;
943
- if (array_nl) {
944
- fbuffer_append(buffer, array_nl, array_nl_len);
945
- if (indent) {
752
+ if (RB_UNLIKELY(state->array_nl)) {
753
+ fbuffer_append(buffer, state->array_nl, state->array_nl_len);
754
+ if (RB_UNLIKELY(state->indent)) {
946
755
  for (j = 0; j < depth; j++) {
947
- fbuffer_append(buffer, indent, indent_len);
756
+ fbuffer_append(buffer, state->indent, state->indent_len);
948
757
  }
949
758
  }
950
759
  }
951
760
  fbuffer_append_char(buffer, ']');
952
761
  }
953
762
 
954
- #ifdef HAVE_RUBY_ENCODING_H
955
- static int enc_utf8_compatible_p(rb_encoding *enc)
763
+ static int usascii_encindex, utf8_encindex, binary_encindex;
764
+
765
+ static inline int enc_utf8_compatible_p(int enc_idx)
956
766
  {
957
- if (enc == rb_usascii_encoding()) return 1;
958
- if (enc == rb_utf8_encoding()) return 1;
767
+ if (enc_idx == usascii_encindex) return 1;
768
+ if (enc_idx == utf8_encindex) return 1;
959
769
  return 0;
960
770
  }
961
- #endif
771
+
772
+ static inline VALUE ensure_valid_encoding(VALUE str)
773
+ {
774
+ int encindex = RB_ENCODING_GET(str);
775
+ VALUE utf8_string;
776
+ if (RB_UNLIKELY(!enc_utf8_compatible_p(encindex))) {
777
+ if (encindex == binary_encindex) {
778
+ // For historical reason, we silently reinterpret binary strings as UTF-8 if it would work.
779
+ // TODO: Deprecate in 2.8.0
780
+ // TODO: Remove in 3.0.0
781
+ utf8_string = rb_enc_associate_index(rb_str_dup(str), utf8_encindex);
782
+ switch (rb_enc_str_coderange(utf8_string)) {
783
+ case ENC_CODERANGE_7BIT:
784
+ case ENC_CODERANGE_VALID:
785
+ return utf8_string;
786
+ break;
787
+ }
788
+ }
789
+
790
+ str = rb_funcall(str, i_encode, 1, Encoding_UTF_8);
791
+ }
792
+ return str;
793
+ }
962
794
 
963
795
  static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
964
796
  {
797
+ obj = ensure_valid_encoding(obj);
798
+
965
799
  fbuffer_append_char(buffer, '"');
966
- #ifdef HAVE_RUBY_ENCODING_H
967
- if (!enc_utf8_compatible_p(rb_enc_get(obj))) {
968
- obj = rb_str_export_to_enc(obj, rb_utf8_encoding());
969
- }
970
- #endif
971
- if (state->ascii_only) {
972
- convert_UTF8_to_JSON_ASCII(buffer, obj, state->script_safe);
973
- } else {
974
- convert_UTF8_to_JSON(buffer, obj, state->script_safe);
800
+
801
+ switch(rb_enc_str_coderange(obj)) {
802
+ case ENC_CODERANGE_7BIT:
803
+ convert_ASCII_to_JSON(buffer, obj, state->script_safe ? script_safe_escape_table : escape_table);
804
+ break;
805
+ case ENC_CODERANGE_VALID:
806
+ if (RB_UNLIKELY(state->ascii_only)) {
807
+ convert_UTF8_to_ASCII_only_JSON(buffer, obj, state->script_safe ? script_safe_escape_table : escape_table, state->script_safe);
808
+ } else {
809
+ convert_UTF8_to_JSON(buffer, obj, state->script_safe ? script_safe_escape_table : escape_table, state->script_safe);
810
+ }
811
+ break;
812
+ default:
813
+ rb_raise(rb_path2class("JSON::GeneratorError"), "source sequence is illegal/malformed utf-8");
814
+ break;
975
815
  }
976
816
  fbuffer_append_char(buffer, '"');
977
817
  }
@@ -1011,6 +851,7 @@ static void generate_json_integer(FBuffer *buffer, VALUE Vstate, JSON_Generator_
1011
851
  generate_json_bignum(buffer, Vstate, state, obj);
1012
852
  }
1013
853
  #endif
854
+
1014
855
  static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
1015
856
  {
1016
857
  double value = RFLOAT_VALUE(obj);
@@ -1018,9 +859,9 @@ static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_St
1018
859
  VALUE tmp = rb_funcall(obj, i_to_s, 0);
1019
860
  if (!allow_nan) {
1020
861
  if (isinf(value)) {
1021
- rb_raise(eGeneratorError, "%"PRIsVALUE" not allowed in JSON", RB_OBJ_STRING(tmp));
862
+ rb_raise(eGeneratorError, "%"PRIsVALUE" not allowed in JSON", tmp);
1022
863
  } else if (isnan(value)) {
1023
- rb_raise(eGeneratorError, "%"PRIsVALUE" not allowed in JSON", RB_OBJ_STRING(tmp));
864
+ rb_raise(eGeneratorError, "%"PRIsVALUE" not allowed in JSON", tmp);
1024
865
  }
1025
866
  }
1026
867
  fbuffer_append_str(buffer, tmp);
@@ -1029,35 +870,56 @@ static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_St
1029
870
  static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
1030
871
  {
1031
872
  VALUE tmp;
1032
- VALUE klass = CLASS_OF(obj);
1033
- if (klass == rb_cHash) {
1034
- generate_json_object(buffer, Vstate, state, obj);
1035
- } else if (klass == rb_cArray) {
1036
- generate_json_array(buffer, Vstate, state, obj);
1037
- } else if (klass == rb_cString) {
1038
- generate_json_string(buffer, Vstate, state, obj);
1039
- } else if (obj == Qnil) {
873
+ if (obj == Qnil) {
1040
874
  generate_json_null(buffer, Vstate, state, obj);
1041
875
  } else if (obj == Qfalse) {
1042
876
  generate_json_false(buffer, Vstate, state, obj);
1043
877
  } else if (obj == Qtrue) {
1044
878
  generate_json_true(buffer, Vstate, state, obj);
1045
- } else if (FIXNUM_P(obj)) {
1046
- generate_json_fixnum(buffer, Vstate, state, obj);
1047
- } else if (RB_TYPE_P(obj, T_BIGNUM)) {
1048
- generate_json_bignum(buffer, Vstate, state, obj);
1049
- } else if (klass == rb_cFloat) {
1050
- generate_json_float(buffer, Vstate, state, obj);
1051
- } else if (state->strict) {
1052
- rb_raise(eGeneratorError, "%"PRIsVALUE" not allowed in JSON", RB_OBJ_STRING(CLASS_OF(obj)));
1053
- } else if (rb_respond_to(obj, i_to_json)) {
1054
- tmp = rb_funcall(obj, i_to_json, 1, Vstate);
1055
- Check_Type(tmp, T_STRING);
1056
- fbuffer_append_str(buffer, tmp);
879
+ } else if (RB_SPECIAL_CONST_P(obj)) {
880
+ if (RB_FIXNUM_P(obj)) {
881
+ generate_json_fixnum(buffer, Vstate, state, obj);
882
+ } else if (RB_FLONUM_P(obj)) {
883
+ generate_json_float(buffer, Vstate, state, obj);
884
+ } else {
885
+ goto general;
886
+ }
1057
887
  } else {
1058
- tmp = rb_funcall(obj, i_to_s, 0);
1059
- Check_Type(tmp, T_STRING);
1060
- generate_json_string(buffer, Vstate, state, tmp);
888
+ VALUE klass = RBASIC_CLASS(obj);
889
+ switch (RB_BUILTIN_TYPE(obj)) {
890
+ case T_BIGNUM:
891
+ generate_json_bignum(buffer, Vstate, state, obj);
892
+ break;
893
+ case T_HASH:
894
+ if (klass != rb_cHash) goto general;
895
+ generate_json_object(buffer, Vstate, state, obj);
896
+ break;
897
+ case T_ARRAY:
898
+ if (klass != rb_cArray) goto general;
899
+ generate_json_array(buffer, Vstate, state, obj);
900
+ break;
901
+ case T_STRING:
902
+ if (klass != rb_cString) goto general;
903
+ generate_json_string(buffer, Vstate, state, obj);
904
+ break;
905
+ case T_FLOAT:
906
+ if (klass != rb_cFloat) goto general;
907
+ generate_json_float(buffer, Vstate, state, obj);
908
+ break;
909
+ default:
910
+ general:
911
+ if (state->strict) {
912
+ rb_raise(eGeneratorError, "%"PRIsVALUE" not allowed in JSON", CLASS_OF(obj));
913
+ } else if (rb_respond_to(obj, i_to_json)) {
914
+ tmp = rb_funcall(obj, i_to_json, 1, Vstate);
915
+ Check_Type(tmp, T_STRING);
916
+ fbuffer_append_str(buffer, tmp);
917
+ } else {
918
+ tmp = rb_funcall(obj, i_to_s, 0);
919
+ Check_Type(tmp, T_STRING);
920
+ generate_json_string(buffer, Vstate, state, tmp);
921
+ }
922
+ }
1061
923
  }
1062
924
  }
1063
925
 
@@ -1067,28 +929,6 @@ static FBuffer *cState_prepare_buffer(VALUE self)
1067
929
  GET_STATE(self);
1068
930
  buffer = fbuffer_alloc(state->buffer_initial_length);
1069
931
 
1070
- if (state->object_delim) {
1071
- fbuffer_clear(state->object_delim);
1072
- } else {
1073
- state->object_delim = fbuffer_alloc(16);
1074
- }
1075
- fbuffer_append_char(state->object_delim, ',');
1076
- if (state->object_delim2) {
1077
- fbuffer_clear(state->object_delim2);
1078
- } else {
1079
- state->object_delim2 = fbuffer_alloc(16);
1080
- }
1081
- if (state->space_before) fbuffer_append(state->object_delim2, state->space_before, state->space_before_len);
1082
- fbuffer_append_char(state->object_delim2, ':');
1083
- if (state->space) fbuffer_append(state->object_delim2, state->space, state->space_len);
1084
-
1085
- if (state->array_delim) {
1086
- fbuffer_clear(state->array_delim);
1087
- } else {
1088
- state->array_delim = fbuffer_alloc(16);
1089
- }
1090
- fbuffer_append_char(state->array_delim, ',');
1091
- if (state->array_nl) fbuffer_append(state->array_delim, state->array_nl, state->array_nl_len);
1092
932
  return buffer;
1093
933
  }
1094
934
 
@@ -1097,13 +937,14 @@ struct generate_json_data {
1097
937
  VALUE vstate;
1098
938
  JSON_Generator_State *state;
1099
939
  VALUE obj;
940
+ void (*func)(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
1100
941
  };
1101
942
 
1102
943
  static VALUE generate_json_try(VALUE d)
1103
944
  {
1104
945
  struct generate_json_data *data = (struct generate_json_data *)d;
1105
946
 
1106
- generate_json(data->buffer, data->vstate, data->state, data->obj);
947
+ data->func(data->buffer, data->vstate, data->state, data->obj);
1107
948
 
1108
949
  return Qnil;
1109
950
  }
@@ -1118,7 +959,7 @@ static VALUE generate_json_rescue(VALUE d, VALUE exc)
1118
959
  return Qundef;
1119
960
  }
1120
961
 
1121
- static VALUE cState_partial_generate(VALUE self, VALUE obj)
962
+ static VALUE cState_partial_generate(VALUE self, VALUE obj, void (*func)(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj))
1122
963
  {
1123
964
  FBuffer *buffer = cState_prepare_buffer(self);
1124
965
  GET_STATE(self);
@@ -1127,7 +968,8 @@ static VALUE cState_partial_generate(VALUE self, VALUE obj)
1127
968
  .buffer = buffer,
1128
969
  .vstate = self,
1129
970
  .state = state,
1130
- .obj = obj
971
+ .obj = obj,
972
+ .func = func
1131
973
  };
1132
974
  rb_rescue(generate_json_try, (VALUE)&data, generate_json_rescue, (VALUE)&data);
1133
975
 
@@ -1143,40 +985,15 @@ static VALUE cState_partial_generate(VALUE self, VALUE obj)
1143
985
  */
1144
986
  static VALUE cState_generate(VALUE self, VALUE obj)
1145
987
  {
1146
- VALUE result = cState_partial_generate(self, obj);
988
+ VALUE result = cState_partial_generate(self, obj, generate_json);
1147
989
  GET_STATE(self);
1148
990
  (void)state;
1149
991
  return result;
1150
992
  }
1151
993
 
1152
- /*
1153
- * call-seq: new(opts = {})
1154
- *
1155
- * Instantiates a new State object, configured by _opts_.
1156
- *
1157
- * _opts_ can have the following keys:
1158
- *
1159
- * * *indent*: a string used to indent levels (default: ''),
1160
- * * *space*: a string that is put after, a : or , delimiter (default: ''),
1161
- * * *space_before*: a string that is put before a : pair delimiter (default: ''),
1162
- * * *object_nl*: a string that is put at the end of a JSON object (default: ''),
1163
- * * *array_nl*: a string that is put at the end of a JSON array (default: ''),
1164
- * * *allow_nan*: true if NaN, Infinity, and -Infinity should be
1165
- * generated, otherwise an exception is thrown, if these values are
1166
- * encountered. This options defaults to false.
1167
- * * *ascii_only*: true if only ASCII characters should be generated. This
1168
- * option defaults to false.
1169
- * * *buffer_initial_length*: sets the initial length of the generator's
1170
- * internal buffer.
1171
- */
1172
994
  static VALUE cState_initialize(int argc, VALUE *argv, VALUE self)
1173
995
  {
1174
- VALUE opts;
1175
- GET_STATE(self);
1176
- state->max_nesting = 100;
1177
- state->buffer_initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT;
1178
- rb_scan_args(argc, argv, "01", &opts);
1179
- if (!NIL_P(opts)) cState_configure(self, opts);
996
+ rb_warn("The json gem extension was loaded with the stdlib ruby code. You should upgrade rubygems with `gem update --system`");
1180
997
  return self;
1181
998
  }
1182
999
 
@@ -1201,9 +1018,6 @@ static VALUE cState_init_copy(VALUE obj, VALUE orig)
1201
1018
  objState->space_before = fstrndup(origState->space_before, origState->space_before_len);
1202
1019
  objState->object_nl = fstrndup(origState->object_nl, origState->object_nl_len);
1203
1020
  objState->array_nl = fstrndup(origState->array_nl, origState->array_nl_len);
1204
- if (origState->array_delim) objState->array_delim = fbuffer_dup(origState->array_delim);
1205
- if (origState->object_delim) objState->object_delim = fbuffer_dup(origState->object_delim);
1206
- if (origState->object_delim2) objState->object_delim2 = fbuffer_dup(origState->object_delim2);
1207
1021
  return obj;
1208
1022
  }
1209
1023
 
@@ -1442,7 +1256,8 @@ static VALUE cState_max_nesting_set(VALUE self, VALUE depth)
1442
1256
  {
1443
1257
  GET_STATE(self);
1444
1258
  Check_Type(depth, T_FIXNUM);
1445
- return state->max_nesting = FIX2LONG(depth);
1259
+ state->max_nesting = FIX2LONG(depth);
1260
+ return Qnil;
1446
1261
  }
1447
1262
 
1448
1263
  /*
@@ -1513,6 +1328,18 @@ static VALUE cState_allow_nan_p(VALUE self)
1513
1328
  return state->allow_nan ? Qtrue : Qfalse;
1514
1329
  }
1515
1330
 
1331
+ /*
1332
+ * call-seq: allow_nan=(enable)
1333
+ *
1334
+ * This sets whether or not to serialize NaN, Infinity, and -Infinity
1335
+ */
1336
+ static VALUE cState_allow_nan_set(VALUE self, VALUE enable)
1337
+ {
1338
+ GET_STATE(self);
1339
+ state->allow_nan = RTEST(enable);
1340
+ return Qnil;
1341
+ }
1342
+
1516
1343
  /*
1517
1344
  * call-seq: ascii_only?
1518
1345
  *
@@ -1525,6 +1352,18 @@ static VALUE cState_ascii_only_p(VALUE self)
1525
1352
  return state->ascii_only ? Qtrue : Qfalse;
1526
1353
  }
1527
1354
 
1355
+ /*
1356
+ * call-seq: ascii_only=(enable)
1357
+ *
1358
+ * This sets whether only ASCII characters should be generated.
1359
+ */
1360
+ static VALUE cState_ascii_only_set(VALUE self, VALUE enable)
1361
+ {
1362
+ GET_STATE(self);
1363
+ state->ascii_only = RTEST(enable);
1364
+ return Qnil;
1365
+ }
1366
+
1528
1367
  /*
1529
1368
  * call-seq: depth
1530
1369
  *
@@ -1592,8 +1431,8 @@ void Init_generator(void)
1592
1431
  rb_require("json/common");
1593
1432
 
1594
1433
  mJSON = rb_define_module("JSON");
1595
- mExt = rb_define_module_under(mJSON, "Ext");
1596
- mGenerator = rb_define_module_under(mExt, "Generator");
1434
+ VALUE mExt = rb_define_module_under(mJSON, "Ext");
1435
+ VALUE mGenerator = rb_define_module_under(mExt, "Generator");
1597
1436
 
1598
1437
  eGeneratorError = rb_path2class("JSON::GeneratorError");
1599
1438
  eNestingError = rb_path2class("JSON::NestingError");
@@ -1604,6 +1443,8 @@ void Init_generator(void)
1604
1443
  rb_define_alloc_func(cState, cState_s_allocate);
1605
1444
  rb_define_singleton_method(cState, "from_state", cState_from_state_s, 1);
1606
1445
  rb_define_method(cState, "initialize", cState_initialize, -1);
1446
+ rb_define_alias(cState, "initialize", "initialize"); // avoid method redefinition warnings
1447
+
1607
1448
  rb_define_method(cState, "initialize_copy", cState_init_copy, 1);
1608
1449
  rb_define_method(cState, "indent", cState_indent, 0);
1609
1450
  rb_define_method(cState, "indent=", cState_indent_set, 1);
@@ -1628,76 +1469,72 @@ void Init_generator(void)
1628
1469
  rb_define_method(cState, "strict=", cState_strict_set, 1);
1629
1470
  rb_define_method(cState, "check_circular?", cState_check_circular_p, 0);
1630
1471
  rb_define_method(cState, "allow_nan?", cState_allow_nan_p, 0);
1472
+ rb_define_method(cState, "allow_nan=", cState_allow_nan_set, 1);
1631
1473
  rb_define_method(cState, "ascii_only?", cState_ascii_only_p, 0);
1474
+ rb_define_method(cState, "ascii_only=", cState_ascii_only_set, 1);
1632
1475
  rb_define_method(cState, "depth", cState_depth, 0);
1633
1476
  rb_define_method(cState, "depth=", cState_depth_set, 1);
1634
1477
  rb_define_method(cState, "buffer_initial_length", cState_buffer_initial_length, 0);
1635
1478
  rb_define_method(cState, "buffer_initial_length=", cState_buffer_initial_length_set, 1);
1636
- rb_define_method(cState, "configure", cState_configure, 1);
1637
- rb_define_alias(cState, "merge", "configure");
1638
- rb_define_method(cState, "to_h", cState_to_h, 0);
1639
- rb_define_alias(cState, "to_hash", "to_h");
1640
- rb_define_method(cState, "[]", cState_aref, 1);
1641
- rb_define_method(cState, "[]=", cState_aset, 2);
1642
1479
  rb_define_method(cState, "generate", cState_generate, 1);
1643
1480
 
1644
- mGeneratorMethods = rb_define_module_under(mGenerator, "GeneratorMethods");
1645
- mObject = rb_define_module_under(mGeneratorMethods, "Object");
1481
+ VALUE mGeneratorMethods = rb_define_module_under(mGenerator, "GeneratorMethods");
1482
+
1483
+ VALUE mObject = rb_define_module_under(mGeneratorMethods, "Object");
1646
1484
  rb_define_method(mObject, "to_json", mObject_to_json, -1);
1647
- mHash = rb_define_module_under(mGeneratorMethods, "Hash");
1485
+
1486
+ VALUE mHash = rb_define_module_under(mGeneratorMethods, "Hash");
1648
1487
  rb_define_method(mHash, "to_json", mHash_to_json, -1);
1649
- mArray = rb_define_module_under(mGeneratorMethods, "Array");
1488
+
1489
+ VALUE mArray = rb_define_module_under(mGeneratorMethods, "Array");
1650
1490
  rb_define_method(mArray, "to_json", mArray_to_json, -1);
1491
+
1651
1492
  #ifdef RUBY_INTEGER_UNIFICATION
1652
- mInteger = rb_define_module_under(mGeneratorMethods, "Integer");
1493
+ VALUE mInteger = rb_define_module_under(mGeneratorMethods, "Integer");
1653
1494
  rb_define_method(mInteger, "to_json", mInteger_to_json, -1);
1654
1495
  #else
1655
- mFixnum = rb_define_module_under(mGeneratorMethods, "Fixnum");
1496
+ VALUE mFixnum = rb_define_module_under(mGeneratorMethods, "Fixnum");
1656
1497
  rb_define_method(mFixnum, "to_json", mFixnum_to_json, -1);
1657
- mBignum = rb_define_module_under(mGeneratorMethods, "Bignum");
1498
+
1499
+ VALUE mBignum = rb_define_module_under(mGeneratorMethods, "Bignum");
1658
1500
  rb_define_method(mBignum, "to_json", mBignum_to_json, -1);
1659
1501
  #endif
1660
- mFloat = rb_define_module_under(mGeneratorMethods, "Float");
1502
+ VALUE mFloat = rb_define_module_under(mGeneratorMethods, "Float");
1661
1503
  rb_define_method(mFloat, "to_json", mFloat_to_json, -1);
1662
- mString = rb_define_module_under(mGeneratorMethods, "String");
1504
+
1505
+ VALUE mString = rb_define_module_under(mGeneratorMethods, "String");
1663
1506
  rb_define_singleton_method(mString, "included", mString_included_s, 1);
1664
1507
  rb_define_method(mString, "to_json", mString_to_json, -1);
1665
1508
  rb_define_method(mString, "to_json_raw", mString_to_json_raw, -1);
1666
1509
  rb_define_method(mString, "to_json_raw_object", mString_to_json_raw_object, 0);
1510
+
1667
1511
  mString_Extend = rb_define_module_under(mString, "Extend");
1668
1512
  rb_define_method(mString_Extend, "json_create", mString_Extend_json_create, 1);
1669
- mTrueClass = rb_define_module_under(mGeneratorMethods, "TrueClass");
1513
+
1514
+ VALUE mTrueClass = rb_define_module_under(mGeneratorMethods, "TrueClass");
1670
1515
  rb_define_method(mTrueClass, "to_json", mTrueClass_to_json, -1);
1671
- mFalseClass = rb_define_module_under(mGeneratorMethods, "FalseClass");
1516
+
1517
+ VALUE mFalseClass = rb_define_module_under(mGeneratorMethods, "FalseClass");
1672
1518
  rb_define_method(mFalseClass, "to_json", mFalseClass_to_json, -1);
1673
- mNilClass = rb_define_module_under(mGeneratorMethods, "NilClass");
1519
+
1520
+ VALUE mNilClass = rb_define_module_under(mGeneratorMethods, "NilClass");
1674
1521
  rb_define_method(mNilClass, "to_json", mNilClass_to_json, -1);
1675
1522
 
1523
+ rb_global_variable(&Encoding_UTF_8);
1524
+ Encoding_UTF_8 = rb_const_get(rb_path2class("Encoding"), rb_intern("UTF_8"));
1525
+
1676
1526
  i_to_s = rb_intern("to_s");
1677
1527
  i_to_json = rb_intern("to_json");
1678
1528
  i_new = rb_intern("new");
1679
- i_indent = rb_intern("indent");
1680
- i_space = rb_intern("space");
1681
- i_space_before = rb_intern("space_before");
1682
- i_object_nl = rb_intern("object_nl");
1683
- i_array_nl = rb_intern("array_nl");
1684
- i_max_nesting = rb_intern("max_nesting");
1685
- i_script_safe = rb_intern("script_safe");
1686
- i_escape_slash = rb_intern("escape_slash");
1687
- i_strict = rb_intern("strict");
1688
- i_allow_nan = rb_intern("allow_nan");
1689
- i_ascii_only = rb_intern("ascii_only");
1690
- i_depth = rb_intern("depth");
1691
- i_buffer_initial_length = rb_intern("buffer_initial_length");
1692
1529
  i_pack = rb_intern("pack");
1693
1530
  i_unpack = rb_intern("unpack");
1694
1531
  i_create_id = rb_intern("create_id");
1695
1532
  i_extend = rb_intern("extend");
1696
- i_key_p = rb_intern("key?");
1697
- i_aref = rb_intern("[]");
1698
- i_send = rb_intern("__send__");
1699
- i_respond_to_p = rb_intern("respond_to?");
1700
- i_match = rb_intern("match");
1701
- i_keys = rb_intern("keys");
1702
- i_dup = rb_intern("dup");
1533
+ i_encode = rb_intern("encode");
1534
+
1535
+ usascii_encindex = rb_usascii_encindex();
1536
+ utf8_encindex = rb_utf8_encindex();
1537
+ binary_encindex = rb_ascii8bit_encindex();
1538
+
1539
+ rb_require("json/ext/generator/state");
1703
1540
  }