cybrid_api_id_ruby 0.122.33 → 0.122.38

Sign up to get free protection for your applications and to get access to all the features.
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]