cybrid_api_id_ruby 0.122.32 → 0.122.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -3
  3. data/README.md +5 -5
  4. data/cybrid_api_id_ruby.gemspec +1 -1
  5. data/lib/cybrid_api_id_ruby/api/bank_applications_idp_api.rb +1 -1
  6. data/lib/cybrid_api_id_ruby/api/customer_tokens_idp_api.rb +1 -1
  7. data/lib/cybrid_api_id_ruby/api/organization_applications_idp_api.rb +1 -1
  8. data/lib/cybrid_api_id_ruby/api/users_idp_api.rb +1 -1
  9. data/lib/cybrid_api_id_ruby/api_client.rb +1 -1
  10. data/lib/cybrid_api_id_ruby/api_error.rb +1 -1
  11. data/lib/cybrid_api_id_ruby/configuration.rb +1 -1
  12. data/lib/cybrid_api_id_ruby/models/application_idp_model.rb +1 -1
  13. data/lib/cybrid_api_id_ruby/models/application_list_idp_model.rb +1 -1
  14. data/lib/cybrid_api_id_ruby/models/application_with_secret_all_of_idp_model.rb +1 -1
  15. data/lib/cybrid_api_id_ruby/models/application_with_secret_idp_model.rb +1 -1
  16. data/lib/cybrid_api_id_ruby/models/customer_token_idp_model.rb +1 -1
  17. data/lib/cybrid_api_id_ruby/models/error_response_idp_model.rb +1 -1
  18. data/lib/cybrid_api_id_ruby/models/post_bank_application_idp_model.rb +1 -1
  19. data/lib/cybrid_api_id_ruby/models/post_customer_token_idp_model.rb +1 -1
  20. data/lib/cybrid_api_id_ruby/models/post_organization_application_idp_model.rb +1 -1
  21. data/lib/cybrid_api_id_ruby/models/post_user_idp_model.rb +1 -1
  22. data/lib/cybrid_api_id_ruby/models/user_idp_model.rb +1 -1
  23. data/lib/cybrid_api_id_ruby/models/user_list_idp_model.rb +1 -1
  24. data/lib/cybrid_api_id_ruby/version.rb +2 -2
  25. data/lib/cybrid_api_id_ruby.rb +1 -1
  26. data/spec/api/bank_applications_idp_api_spec.rb +1 -1
  27. data/spec/api/customer_tokens_idp_api_spec.rb +1 -1
  28. data/spec/api/organization_applications_idp_api_spec.rb +1 -1
  29. data/spec/api/users_idp_api_spec.rb +1 -1
  30. data/spec/api_client_spec.rb +1 -1
  31. data/spec/configuration_spec.rb +1 -1
  32. data/spec/models/application_idp_model_spec.rb +1 -1
  33. data/spec/models/application_list_idp_model_spec.rb +1 -1
  34. data/spec/models/application_with_secret_all_of_idp_model_spec.rb +1 -1
  35. data/spec/models/application_with_secret_idp_model_spec.rb +1 -1
  36. data/spec/models/customer_token_idp_model_spec.rb +1 -1
  37. data/spec/models/error_response_idp_model_spec.rb +1 -1
  38. data/spec/models/post_bank_application_idp_model_spec.rb +1 -1
  39. data/spec/models/post_customer_token_idp_model_spec.rb +1 -1
  40. data/spec/models/post_organization_application_idp_model_spec.rb +1 -1
  41. data/spec/models/post_user_idp_model_spec.rb +1 -1
  42. data/spec/models/user_idp_model_spec.rb +1 -1
  43. data/spec/models/user_list_idp_model_spec.rb +1 -1
  44. data/spec/spec_helper.rb +1 -1
  45. data/vendor/bundle/ruby/3.3.0/cache/psych-5.2.0.gem +0 -0
  46. data/vendor/bundle/ruby/3.3.0/cache/stringio-3.1.2.gem +0 -0
  47. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/byebug-11.1.3/gem_make.out +5 -5
  48. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/jaro_winkler-1.5.6/gem_make.out +5 -5
  49. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.1.2 → psych-5.2.0}/gem_make.out +18 -18
  50. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.1.2 → psych-5.2.0}/psych.so +0 -0
  51. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/racc-1.8.1/gem_make.out +5 -5
  52. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{stringio-3.1.1 → stringio-3.1.2}/gem_make.out +18 -18
  53. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/stringio-3.1.2/stringio.so +0 -0
  54. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych.c +1 -1
  55. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_emitter.c +154 -120
  56. data/vendor/bundle/ruby/3.3.0/gems/psych-5.2.0/ext/psych/psych_parser.c +565 -0
  57. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/node.rb +1 -1
  58. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/scalar_scanner.rb +10 -9
  59. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/versions.rb +1 -1
  60. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors/to_ruby.rb +1 -1
  61. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors/yaml_tree.rb +7 -10
  62. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych.rb +19 -3
  63. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych.so +0 -0
  64. data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/NEWS.md +19 -0
  65. data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/ext/stringio/stringio.c +23 -13
  66. data/vendor/bundle/ruby/3.3.0/gems/stringio-3.1.2/lib/stringio.so +0 -0
  67. data/vendor/bundle/ruby/3.3.0/specifications/{psych-5.1.2.gemspec → psych-5.2.0.gemspec} +5 -5
  68. data/vendor/bundle/ruby/3.3.0/specifications/{stringio-3.1.1.gemspec → stringio-3.1.2.gemspec} +4 -4
  69. metadata +79 -79
  70. data/vendor/bundle/ruby/3.3.0/cache/psych-5.1.2.gem +0 -0
  71. data/vendor/bundle/ruby/3.3.0/cache/stringio-3.1.1.gem +0 -0
  72. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/stringio-3.1.1/stringio.so +0 -0
  73. data/vendor/bundle/ruby/3.3.0/gems/psych-5.1.2/ext/psych/psych_parser.c +0 -565
  74. data/vendor/bundle/ruby/3.3.0/gems/stringio-3.1.1/lib/stringio.so +0 -0
  75. /data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.1.2 → psych-5.2.0}/gem.build_complete +0 -0
  76. /data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.1.2 → psych-5.2.0}/mkmf.log +0 -0
  77. /data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{stringio-3.1.1 → stringio-3.1.2}/gem.build_complete +0 -0
  78. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/CONTRIBUTING.md +0 -0
  79. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/LICENSE +0 -0
  80. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/README.md +0 -0
  81. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/Makefile +0 -0
  82. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/depend +0 -0
  83. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/extconf.rb +0 -0
  84. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych.h +0 -0
  85. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_emitter.h +0 -0
  86. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_parser.h +0 -0
  87. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_to_ruby.c +0 -0
  88. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_to_ruby.h +0 -0
  89. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_yaml_tree.c +0 -0
  90. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/ext/psych/psych_yaml_tree.h +0 -0
  91. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/class_loader.rb +0 -0
  92. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/coder.rb +0 -0
  93. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/core_ext.rb +0 -0
  94. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/exception.rb +0 -0
  95. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/handler.rb +0 -0
  96. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/handlers/document_stream.rb +0 -0
  97. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/handlers/recorder.rb +0 -0
  98. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/json/ruby_events.rb +0 -0
  99. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/json/stream.rb +0 -0
  100. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/json/tree_builder.rb +0 -0
  101. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/json/yaml_events.rb +0 -0
  102. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/alias.rb +0 -0
  103. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/document.rb +0 -0
  104. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/mapping.rb +0 -0
  105. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/scalar.rb +0 -0
  106. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/sequence.rb +0 -0
  107. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes/stream.rb +0 -0
  108. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/nodes.rb +0 -0
  109. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/omap.rb +0 -0
  110. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/parser.rb +0 -0
  111. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/set.rb +0 -0
  112. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/stream.rb +0 -0
  113. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/streaming.rb +0 -0
  114. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/syntax_error.rb +0 -0
  115. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/tree_builder.rb +0 -0
  116. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors/depth_first.rb +0 -0
  117. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors/emitter.rb +0 -0
  118. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors/json_tree.rb +0 -0
  119. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors/visitor.rb +0 -0
  120. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/visitors.rb +0 -0
  121. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.1.2 → psych-5.2.0}/lib/psych/y.rb +0 -0
  122. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/.document +0 -0
  123. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/.rdoc_options +0 -0
  124. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/COPYING +0 -0
  125. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/LICENSE.txt +0 -0
  126. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/README.md +0 -0
  127. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/docs/io.rb +0 -0
  128. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/ext/stringio/.document +0 -0
  129. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/ext/stringio/Makefile +0 -0
  130. /data/vendor/bundle/ruby/3.3.0/gems/{stringio-3.1.1 → stringio-3.1.2}/ext/stringio/extconf.rb +0 -0
@@ -0,0 +1,565 @@
1
+ #include <psych.h>
2
+
3
+ VALUE cPsychParser;
4
+
5
+ static ID id_read;
6
+ static ID id_path;
7
+ static ID id_empty;
8
+ static ID id_start_stream;
9
+ static ID id_end_stream;
10
+ static ID id_start_document;
11
+ static ID id_end_document;
12
+ static ID id_alias;
13
+ static ID id_scalar;
14
+ static ID id_start_sequence;
15
+ static ID id_end_sequence;
16
+ static ID id_start_mapping;
17
+ static ID id_end_mapping;
18
+ static ID id_event_location;
19
+
20
+ #define PSYCH_TRANSCODE(_str, _yaml_enc, _internal_enc) \
21
+ do { \
22
+ rb_enc_associate_index((_str), (_yaml_enc)); \
23
+ if(_internal_enc) \
24
+ (_str) = rb_str_export_to_enc((_str), (_internal_enc)); \
25
+ } while (0)
26
+
27
+ static int io_reader(void * data, unsigned char *buf, size_t size, size_t *read)
28
+ {
29
+ VALUE io = (VALUE)data;
30
+ VALUE string = rb_funcall(io, id_read, 1, SIZET2NUM(size));
31
+
32
+ *read = 0;
33
+
34
+ if(! NIL_P(string)) {
35
+ void * str = (void *)StringValuePtr(string);
36
+ *read = (size_t)RSTRING_LEN(string);
37
+ memcpy(buf, str, *read);
38
+ }
39
+
40
+ return 1;
41
+ }
42
+
43
+ static void dealloc(void * ptr)
44
+ {
45
+ yaml_parser_t * parser;
46
+
47
+ parser = (yaml_parser_t *)ptr;
48
+ yaml_parser_delete(parser);
49
+ xfree(parser);
50
+ }
51
+
52
+ #if 0
53
+ static size_t memsize(const void *ptr)
54
+ {
55
+ const yaml_parser_t *parser = ptr;
56
+ /* TODO: calculate parser's size */
57
+ return 0;
58
+ }
59
+ #endif
60
+
61
+ static const rb_data_type_t psych_parser_type = {
62
+ "Psych/parser",
63
+ {0, dealloc, 0,},
64
+ 0, 0,
65
+ #ifdef RUBY_TYPED_FREE_IMMEDIATELY
66
+ RUBY_TYPED_FREE_IMMEDIATELY,
67
+ #endif
68
+ };
69
+
70
+ static VALUE allocate(VALUE klass)
71
+ {
72
+ yaml_parser_t * parser;
73
+ VALUE obj = TypedData_Make_Struct(klass, yaml_parser_t, &psych_parser_type, parser);
74
+
75
+ yaml_parser_initialize(parser);
76
+
77
+ return obj;
78
+ }
79
+
80
+ static VALUE make_exception(yaml_parser_t * parser, VALUE path)
81
+ {
82
+ if (parser->error == YAML_MEMORY_ERROR) {
83
+ return rb_eNoMemError;
84
+ } else {
85
+ size_t line, column;
86
+ VALUE ePsychSyntaxError;
87
+
88
+ line = parser->context_mark.line + 1;
89
+ column = parser->context_mark.column + 1;
90
+
91
+ ePsychSyntaxError = rb_const_get(mPsych, rb_intern("SyntaxError"));
92
+
93
+ return rb_funcall(ePsychSyntaxError, rb_intern("new"), 6,
94
+ path,
95
+ SIZET2NUM(line),
96
+ SIZET2NUM(column),
97
+ SIZET2NUM(parser->problem_offset),
98
+ parser->problem ? rb_usascii_str_new2(parser->problem) : Qnil,
99
+ parser->context ? rb_usascii_str_new2(parser->context) : Qnil);
100
+ }
101
+ }
102
+
103
+ static VALUE transcode_string(VALUE src, int * parser_encoding)
104
+ {
105
+ int utf8 = rb_utf8_encindex();
106
+ int utf16le = rb_enc_find_index("UTF-16LE");
107
+ int utf16be = rb_enc_find_index("UTF-16BE");
108
+ int source_encoding = rb_enc_get_index(src);
109
+
110
+ if (source_encoding == utf8) {
111
+ *parser_encoding = YAML_UTF8_ENCODING;
112
+ return src;
113
+ }
114
+
115
+ if (source_encoding == utf16le) {
116
+ *parser_encoding = YAML_UTF16LE_ENCODING;
117
+ return src;
118
+ }
119
+
120
+ if (source_encoding == utf16be) {
121
+ *parser_encoding = YAML_UTF16BE_ENCODING;
122
+ return src;
123
+ }
124
+
125
+ src = rb_str_export_to_enc(src, rb_utf8_encoding());
126
+ RB_GC_GUARD(src);
127
+
128
+ *parser_encoding = YAML_UTF8_ENCODING;
129
+ return src;
130
+ }
131
+
132
+ static VALUE transcode_io(VALUE src, int * parser_encoding)
133
+ {
134
+ VALUE io_external_encoding;
135
+ int io_external_enc_index;
136
+
137
+ io_external_encoding = rb_funcall(src, rb_intern("external_encoding"), 0);
138
+
139
+ /* if no encoding is returned, assume ascii8bit. */
140
+ if (NIL_P(io_external_encoding)) {
141
+ io_external_enc_index = rb_ascii8bit_encindex();
142
+ } else {
143
+ io_external_enc_index = rb_to_encoding_index(io_external_encoding);
144
+ }
145
+
146
+ /* Treat US-ASCII as utf_8 */
147
+ if (io_external_enc_index == rb_usascii_encindex()) {
148
+ *parser_encoding = YAML_UTF8_ENCODING;
149
+ return src;
150
+ }
151
+
152
+ if (io_external_enc_index == rb_utf8_encindex()) {
153
+ *parser_encoding = YAML_UTF8_ENCODING;
154
+ return src;
155
+ }
156
+
157
+ if (io_external_enc_index == rb_enc_find_index("UTF-16LE")) {
158
+ *parser_encoding = YAML_UTF16LE_ENCODING;
159
+ return src;
160
+ }
161
+
162
+ if (io_external_enc_index == rb_enc_find_index("UTF-16BE")) {
163
+ *parser_encoding = YAML_UTF16BE_ENCODING;
164
+ return src;
165
+ }
166
+
167
+ /* Just guess on ASCII-8BIT */
168
+ if (io_external_enc_index == rb_ascii8bit_encindex()) {
169
+ *parser_encoding = YAML_ANY_ENCODING;
170
+ return src;
171
+ }
172
+
173
+ /* If the external encoding is something we don't know how to handle,
174
+ * fall back to YAML_ANY_ENCODING. */
175
+ *parser_encoding = YAML_ANY_ENCODING;
176
+
177
+ return src;
178
+ }
179
+
180
+ static VALUE protected_start_stream(VALUE pointer)
181
+ {
182
+ VALUE *args = (VALUE *)pointer;
183
+ return rb_funcall(args[0], id_start_stream, 1, args[1]);
184
+ }
185
+
186
+ static VALUE protected_start_document(VALUE pointer)
187
+ {
188
+ VALUE *args = (VALUE *)pointer;
189
+ return rb_funcall3(args[0], id_start_document, 3, args + 1);
190
+ }
191
+
192
+ static VALUE protected_end_document(VALUE pointer)
193
+ {
194
+ VALUE *args = (VALUE *)pointer;
195
+ return rb_funcall(args[0], id_end_document, 1, args[1]);
196
+ }
197
+
198
+ static VALUE protected_alias(VALUE pointer)
199
+ {
200
+ VALUE *args = (VALUE *)pointer;
201
+ return rb_funcall(args[0], id_alias, 1, args[1]);
202
+ }
203
+
204
+ static VALUE protected_scalar(VALUE pointer)
205
+ {
206
+ VALUE *args = (VALUE *)pointer;
207
+ return rb_funcall3(args[0], id_scalar, 6, args + 1);
208
+ }
209
+
210
+ static VALUE protected_start_sequence(VALUE pointer)
211
+ {
212
+ VALUE *args = (VALUE *)pointer;
213
+ return rb_funcall3(args[0], id_start_sequence, 4, args + 1);
214
+ }
215
+
216
+ static VALUE protected_end_sequence(VALUE handler)
217
+ {
218
+ return rb_funcall(handler, id_end_sequence, 0);
219
+ }
220
+
221
+ static VALUE protected_start_mapping(VALUE pointer)
222
+ {
223
+ VALUE *args = (VALUE *)pointer;
224
+ return rb_funcall3(args[0], id_start_mapping, 4, args + 1);
225
+ }
226
+
227
+ static VALUE protected_end_mapping(VALUE handler)
228
+ {
229
+ return rb_funcall(handler, id_end_mapping, 0);
230
+ }
231
+
232
+ static VALUE protected_empty(VALUE handler)
233
+ {
234
+ return rb_funcall(handler, id_empty, 0);
235
+ }
236
+
237
+ static VALUE protected_end_stream(VALUE handler)
238
+ {
239
+ return rb_funcall(handler, id_end_stream, 0);
240
+ }
241
+
242
+ static VALUE protected_event_location(VALUE pointer)
243
+ {
244
+ VALUE *args = (VALUE *)pointer;
245
+ return rb_funcall3(args[0], id_event_location, 4, args + 1);
246
+ }
247
+
248
+ static VALUE parse(VALUE self, VALUE handler, VALUE yaml, VALUE path)
249
+ {
250
+ yaml_parser_t * parser;
251
+ yaml_event_t event;
252
+ int done = 0;
253
+ int state = 0;
254
+ int parser_encoding = YAML_ANY_ENCODING;
255
+ int encoding = rb_utf8_encindex();
256
+ rb_encoding * internal_enc = rb_default_internal_encoding();
257
+
258
+ TypedData_Get_Struct(self, yaml_parser_t, &psych_parser_type, parser);
259
+
260
+ yaml_parser_delete(parser);
261
+ yaml_parser_initialize(parser);
262
+
263
+ if (rb_respond_to(yaml, id_read)) {
264
+ yaml = transcode_io(yaml, &parser_encoding);
265
+ yaml_parser_set_encoding(parser, parser_encoding);
266
+ yaml_parser_set_input(parser, io_reader, (void *)yaml);
267
+ } else {
268
+ StringValue(yaml);
269
+ yaml = transcode_string(yaml, &parser_encoding);
270
+ yaml_parser_set_encoding(parser, parser_encoding);
271
+ yaml_parser_set_input_string(
272
+ parser,
273
+ (const unsigned char *)RSTRING_PTR(yaml),
274
+ (size_t)RSTRING_LEN(yaml)
275
+ );
276
+ }
277
+
278
+ while(!done) {
279
+ VALUE event_args[5];
280
+ VALUE start_line, start_column, end_line, end_column;
281
+
282
+ if(parser->error || !yaml_parser_parse(parser, &event)) {
283
+ VALUE exception;
284
+
285
+ exception = make_exception(parser, path);
286
+ yaml_parser_delete(parser);
287
+ yaml_parser_initialize(parser);
288
+
289
+ rb_exc_raise(exception);
290
+ }
291
+
292
+ start_line = SIZET2NUM(event.start_mark.line);
293
+ start_column = SIZET2NUM(event.start_mark.column);
294
+ end_line = SIZET2NUM(event.end_mark.line);
295
+ end_column = SIZET2NUM(event.end_mark.column);
296
+
297
+ event_args[0] = handler;
298
+ event_args[1] = start_line;
299
+ event_args[2] = start_column;
300
+ event_args[3] = end_line;
301
+ event_args[4] = end_column;
302
+ rb_protect(protected_event_location, (VALUE)event_args, &state);
303
+
304
+ switch(event.type) {
305
+ case YAML_STREAM_START_EVENT:
306
+ {
307
+ VALUE args[2];
308
+
309
+ args[0] = handler;
310
+ args[1] = INT2NUM(event.data.stream_start.encoding);
311
+ rb_protect(protected_start_stream, (VALUE)args, &state);
312
+ }
313
+ break;
314
+ case YAML_DOCUMENT_START_EVENT:
315
+ {
316
+ VALUE args[4];
317
+ /* Get a list of tag directives (if any) */
318
+ VALUE tag_directives = rb_ary_new();
319
+ /* Grab the document version */
320
+ VALUE version = event.data.document_start.version_directive ?
321
+ rb_ary_new3(
322
+ (long)2,
323
+ INT2NUM(event.data.document_start.version_directive->major),
324
+ INT2NUM(event.data.document_start.version_directive->minor)
325
+ ) : rb_ary_new();
326
+
327
+ if(event.data.document_start.tag_directives.start) {
328
+ yaml_tag_directive_t *start =
329
+ event.data.document_start.tag_directives.start;
330
+ yaml_tag_directive_t *end =
331
+ event.data.document_start.tag_directives.end;
332
+ for(; start != end; start++) {
333
+ VALUE handle = Qnil;
334
+ VALUE prefix = Qnil;
335
+ if(start->handle) {
336
+ handle = rb_str_new2((const char *)start->handle);
337
+ PSYCH_TRANSCODE(handle, encoding, internal_enc);
338
+ }
339
+
340
+ if(start->prefix) {
341
+ prefix = rb_str_new2((const char *)start->prefix);
342
+ PSYCH_TRANSCODE(prefix, encoding, internal_enc);
343
+ }
344
+
345
+ rb_ary_push(tag_directives, rb_ary_new3((long)2, handle, prefix));
346
+ }
347
+ }
348
+ args[0] = handler;
349
+ args[1] = version;
350
+ args[2] = tag_directives;
351
+ args[3] = event.data.document_start.implicit == 1 ? Qtrue : Qfalse;
352
+ rb_protect(protected_start_document, (VALUE)args, &state);
353
+ }
354
+ break;
355
+ case YAML_DOCUMENT_END_EVENT:
356
+ {
357
+ VALUE args[2];
358
+
359
+ args[0] = handler;
360
+ args[1] = event.data.document_end.implicit == 1 ? Qtrue : Qfalse;
361
+ rb_protect(protected_end_document, (VALUE)args, &state);
362
+ }
363
+ break;
364
+ case YAML_ALIAS_EVENT:
365
+ {
366
+ VALUE args[2];
367
+ VALUE alias = Qnil;
368
+ if(event.data.alias.anchor) {
369
+ alias = rb_str_new2((const char *)event.data.alias.anchor);
370
+ PSYCH_TRANSCODE(alias, encoding, internal_enc);
371
+ }
372
+
373
+ args[0] = handler;
374
+ args[1] = alias;
375
+ rb_protect(protected_alias, (VALUE)args, &state);
376
+ }
377
+ break;
378
+ case YAML_SCALAR_EVENT:
379
+ {
380
+ VALUE args[7];
381
+ VALUE anchor = Qnil;
382
+ VALUE tag = Qnil;
383
+ VALUE plain_implicit, quoted_implicit, style;
384
+ VALUE val = rb_str_new(
385
+ (const char *)event.data.scalar.value,
386
+ (long)event.data.scalar.length
387
+ );
388
+
389
+ PSYCH_TRANSCODE(val, encoding, internal_enc);
390
+
391
+ if(event.data.scalar.anchor) {
392
+ anchor = rb_str_new2((const char *)event.data.scalar.anchor);
393
+ PSYCH_TRANSCODE(anchor, encoding, internal_enc);
394
+ }
395
+
396
+ if(event.data.scalar.tag) {
397
+ tag = rb_str_new2((const char *)event.data.scalar.tag);
398
+ PSYCH_TRANSCODE(tag, encoding, internal_enc);
399
+ }
400
+
401
+ plain_implicit =
402
+ event.data.scalar.plain_implicit == 0 ? Qfalse : Qtrue;
403
+
404
+ quoted_implicit =
405
+ event.data.scalar.quoted_implicit == 0 ? Qfalse : Qtrue;
406
+
407
+ style = INT2NUM(event.data.scalar.style);
408
+
409
+ args[0] = handler;
410
+ args[1] = val;
411
+ args[2] = anchor;
412
+ args[3] = tag;
413
+ args[4] = plain_implicit;
414
+ args[5] = quoted_implicit;
415
+ args[6] = style;
416
+ rb_protect(protected_scalar, (VALUE)args, &state);
417
+ }
418
+ break;
419
+ case YAML_SEQUENCE_START_EVENT:
420
+ {
421
+ VALUE args[5];
422
+ VALUE anchor = Qnil;
423
+ VALUE tag = Qnil;
424
+ VALUE implicit, style;
425
+ if(event.data.sequence_start.anchor) {
426
+ anchor = rb_str_new2((const char *)event.data.sequence_start.anchor);
427
+ PSYCH_TRANSCODE(anchor, encoding, internal_enc);
428
+ }
429
+
430
+ tag = Qnil;
431
+ if(event.data.sequence_start.tag) {
432
+ tag = rb_str_new2((const char *)event.data.sequence_start.tag);
433
+ PSYCH_TRANSCODE(tag, encoding, internal_enc);
434
+ }
435
+
436
+ implicit =
437
+ event.data.sequence_start.implicit == 0 ? Qfalse : Qtrue;
438
+
439
+ style = INT2NUM(event.data.sequence_start.style);
440
+
441
+ args[0] = handler;
442
+ args[1] = anchor;
443
+ args[2] = tag;
444
+ args[3] = implicit;
445
+ args[4] = style;
446
+
447
+ rb_protect(protected_start_sequence, (VALUE)args, &state);
448
+ }
449
+ break;
450
+ case YAML_SEQUENCE_END_EVENT:
451
+ rb_protect(protected_end_sequence, handler, &state);
452
+ break;
453
+ case YAML_MAPPING_START_EVENT:
454
+ {
455
+ VALUE args[5];
456
+ VALUE anchor = Qnil;
457
+ VALUE tag = Qnil;
458
+ VALUE implicit, style;
459
+ if(event.data.mapping_start.anchor) {
460
+ anchor = rb_str_new2((const char *)event.data.mapping_start.anchor);
461
+ PSYCH_TRANSCODE(anchor, encoding, internal_enc);
462
+ }
463
+
464
+ if(event.data.mapping_start.tag) {
465
+ tag = rb_str_new2((const char *)event.data.mapping_start.tag);
466
+ PSYCH_TRANSCODE(tag, encoding, internal_enc);
467
+ }
468
+
469
+ implicit =
470
+ event.data.mapping_start.implicit == 0 ? Qfalse : Qtrue;
471
+
472
+ style = INT2NUM(event.data.mapping_start.style);
473
+
474
+ args[0] = handler;
475
+ args[1] = anchor;
476
+ args[2] = tag;
477
+ args[3] = implicit;
478
+ args[4] = style;
479
+
480
+ rb_protect(protected_start_mapping, (VALUE)args, &state);
481
+ }
482
+ break;
483
+ case YAML_MAPPING_END_EVENT:
484
+ rb_protect(protected_end_mapping, handler, &state);
485
+ break;
486
+ case YAML_NO_EVENT:
487
+ rb_protect(protected_empty, handler, &state);
488
+ break;
489
+ case YAML_STREAM_END_EVENT:
490
+ rb_protect(protected_end_stream, handler, &state);
491
+ done = 1;
492
+ break;
493
+ }
494
+ yaml_event_delete(&event);
495
+ if (state) rb_jump_tag(state);
496
+ }
497
+
498
+ return self;
499
+ }
500
+
501
+ /*
502
+ * call-seq:
503
+ * parser.mark # => #<Psych::Parser::Mark>
504
+ *
505
+ * Returns a Psych::Parser::Mark object that contains line, column, and index
506
+ * information.
507
+ */
508
+ static VALUE mark(VALUE self)
509
+ {
510
+ VALUE mark_klass;
511
+ VALUE args[3];
512
+ yaml_parser_t * parser;
513
+
514
+ TypedData_Get_Struct(self, yaml_parser_t, &psych_parser_type, parser);
515
+ mark_klass = rb_const_get_at(cPsychParser, rb_intern("Mark"));
516
+ args[0] = SIZET2NUM(parser->mark.index);
517
+ args[1] = SIZET2NUM(parser->mark.line);
518
+ args[2] = SIZET2NUM(parser->mark.column);
519
+
520
+ return rb_class_new_instance(3, args, mark_klass);
521
+ }
522
+
523
+ void Init_psych_parser(void)
524
+ {
525
+ #undef rb_intern
526
+ #if 0
527
+ mPsych = rb_define_module("Psych");
528
+ #endif
529
+
530
+ cPsychParser = rb_define_class_under(mPsych, "Parser", rb_cObject);
531
+ rb_define_alloc_func(cPsychParser, allocate);
532
+
533
+ /* Any encoding: Let the parser choose the encoding */
534
+ rb_define_const(cPsychParser, "ANY", INT2NUM(YAML_ANY_ENCODING));
535
+
536
+ /* UTF-8 Encoding */
537
+ rb_define_const(cPsychParser, "UTF8", INT2NUM(YAML_UTF8_ENCODING));
538
+
539
+ /* UTF-16-LE Encoding with BOM */
540
+ rb_define_const(cPsychParser, "UTF16LE", INT2NUM(YAML_UTF16LE_ENCODING));
541
+
542
+ /* UTF-16-BE Encoding with BOM */
543
+ rb_define_const(cPsychParser, "UTF16BE", INT2NUM(YAML_UTF16BE_ENCODING));
544
+
545
+ rb_require("psych/syntax_error");
546
+
547
+ rb_define_private_method(cPsychParser, "_native_parse", parse, 3);
548
+ rb_define_method(cPsychParser, "mark", mark, 0);
549
+
550
+ id_read = rb_intern("read");
551
+ id_path = rb_intern("path");
552
+ id_empty = rb_intern("empty");
553
+ id_start_stream = rb_intern("start_stream");
554
+ id_end_stream = rb_intern("end_stream");
555
+ id_start_document = rb_intern("start_document");
556
+ id_end_document = rb_intern("end_document");
557
+ id_alias = rb_intern("alias");
558
+ id_scalar = rb_intern("scalar");
559
+ id_start_sequence = rb_intern("start_sequence");
560
+ id_end_sequence = rb_intern("end_sequence");
561
+ id_start_mapping = rb_intern("start_mapping");
562
+ id_end_mapping = rb_intern("end_mapping");
563
+ id_event_location = rb_intern("event_location");
564
+ }
565
+ /* vim: set noet sws=4 sw=4: */
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- require 'stringio'
3
2
  require_relative '../class_loader'
4
3
  require_relative '../scalar_scanner'
5
4
 
@@ -56,6 +55,7 @@ module Psych
56
55
  #
57
56
  # See also Psych::Visitors::Emitter
58
57
  def yaml io = nil, options = {}
58
+ require "stringio"
59
59
  real_io = io || StringIO.new(''.encode('utf-8'))
60
60
 
61
61
  Visitors::Emitter.new(real_io, options).accept self
@@ -4,6 +4,8 @@ module Psych
4
4
  ###
5
5
  # Scan scalars for built in types
6
6
  class ScalarScanner
7
+ autoload :Date, "date"
8
+
7
9
  # Taken from http://yaml.org/type/timestamp.html
8
10
  TIME = /^-?\d{4}-\d{1,2}-\d{1,2}(?:[Tt]|\s+)\d{1,2}:\d\d:\d\d(?:\.\d*)?(?:\s*(?:Z|[-+]\d{1,2}:?(?:\d\d)?))?$/
9
11
 
@@ -11,18 +13,18 @@ module Psych
11
13
  # Base 60, [-+]inf and NaN are handled separately
12
14
  FLOAT = /^(?:[-+]?([0-9][0-9_,]*)?\.[0-9]*([eE][-+][0-9]+)?(?# base 10))$/x
13
15
 
14
- # Taken from http://yaml.org/type/int.html
15
- INTEGER_STRICT = /^(?:[-+]?0b[0-1_]+ (?# base 2)
16
- |[-+]?0[0-7_]+ (?# base 8)
17
- |[-+]?(0|[1-9][0-9_]*) (?# base 10)
18
- |[-+]?0x[0-9a-fA-F_]+ (?# base 16))$/x
16
+ # Taken from http://yaml.org/type/int.html and modified to ensure at least one numerical symbol exists
17
+ INTEGER_STRICT = /^(?:[-+]?0b[_]*[0-1][0-1_]* (?# base 2)
18
+ |[-+]?0[_]*[0-7][0-7_]* (?# base 8)
19
+ |[-+]?(0|[1-9][0-9_]*) (?# base 10)
20
+ |[-+]?0x[_]*[0-9a-fA-F][0-9a-fA-F_]* (?# base 16))$/x
19
21
 
20
22
  # Same as above, but allows commas.
21
23
  # Not to YML spec, but kept for backwards compatibility
22
- INTEGER_LEGACY = /^(?:[-+]?0b[0-1_,]+ (?# base 2)
23
- |[-+]?0[0-7_,]+ (?# base 8)
24
+ INTEGER_LEGACY = /^(?:[-+]?0b[_,]*[0-1][0-1_,]* (?# base 2)
25
+ |[-+]?0[_,]*[0-7][0-7_,]* (?# base 8)
24
26
  |[-+]?(?:0|[1-9](?:[0-9]|,[0-9]|_[0-9])*) (?# base 10)
25
- |[-+]?0x[0-9a-fA-F_,]+ (?# base 16))$/x
27
+ |[-+]?0x[_,]*[0-9a-fA-F][0-9a-fA-F_,]* (?# base 16))$/x
26
28
 
27
29
  attr_reader :class_loader
28
30
 
@@ -61,7 +63,6 @@ module Psych
61
63
  string
62
64
  end
63
65
  elsif string.match?(/^\d{4}-(?:1[012]|0\d|\d)-(?:[12]\d|3[01]|0\d|\d)$/)
64
- require 'date'
65
66
  begin
66
67
  class_loader.date.strptime(string, '%F', Date::GREGORIAN)
67
68
  rescue ArgumentError
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Psych
4
4
  # The version of Psych you are using
5
- VERSION = '5.1.2'
5
+ VERSION = '5.2.0'
6
6
 
7
7
  if RUBY_ENGINE == 'jruby'
8
8
  DEFAULT_SNAKEYAML_VERSION = '2.7'.freeze
@@ -36,7 +36,7 @@ module Psych
36
36
 
37
37
  unless @domain_types.empty? || !target.tag
38
38
  key = target.tag.sub(/^[!\/]*/, '').sub(/(,\d+)\//, '\1:')
39
- key = "tag:#{key}" unless key =~ /^(?:tag:|x-private)/
39
+ key = "tag:#{key}" unless key.match?(/^(?:tag:|x-private)/)
40
40
 
41
41
  if @domain_types.key? key
42
42
  value, block = @domain_types[key]