oj 3.16.9 → 3.16.10

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/oj/fast.c +3 -6
  4. data/ext/oj/mimic_json.c +3 -6
  5. data/ext/oj/oj.c +2 -4
  6. data/ext/oj/parse.c +15 -5
  7. data/ext/oj/parser.c +1 -1
  8. data/ext/oj/parser.h +2 -0
  9. data/ext/oj/rails.c +1 -2
  10. data/ext/oj/saj.c +3 -6
  11. data/ext/oj/scp.c +3 -6
  12. data/ext/oj/stream_writer.c +1 -7
  13. data/ext/oj/strict.c +2 -4
  14. data/ext/oj/string_writer.c +1 -3
  15. data/lib/oj/version.rb +1 -1
  16. metadata +3 -98
  17. data/test/_test_active.rb +0 -75
  18. data/test/_test_active_mimic.rb +0 -95
  19. data/test/_test_mimic_rails.rb +0 -123
  20. data/test/activerecord/result_test.rb +0 -31
  21. data/test/activesupport6/abstract_unit.rb +0 -44
  22. data/test/activesupport6/decoding_test.rb +0 -133
  23. data/test/activesupport6/encoding_test.rb +0 -542
  24. data/test/activesupport6/encoding_test_cases.rb +0 -98
  25. data/test/activesupport6/test_common.rb +0 -17
  26. data/test/activesupport6/test_helper.rb +0 -163
  27. data/test/activesupport6/time_zone_test_helpers.rb +0 -39
  28. data/test/activesupport7/abstract_unit.rb +0 -52
  29. data/test/activesupport7/decoding_test.rb +0 -125
  30. data/test/activesupport7/encoding_test.rb +0 -536
  31. data/test/activesupport7/encoding_test_cases.rb +0 -104
  32. data/test/activesupport7/time_zone_test_helpers.rb +0 -47
  33. data/test/files.rb +0 -29
  34. data/test/foo.rb +0 -26
  35. data/test/helper.rb +0 -39
  36. data/test/isolated/shared.rb +0 -309
  37. data/test/isolated/test_mimic_after.rb +0 -13
  38. data/test/isolated/test_mimic_alone.rb +0 -12
  39. data/test/isolated/test_mimic_as_json.rb +0 -45
  40. data/test/isolated/test_mimic_before.rb +0 -13
  41. data/test/isolated/test_mimic_define.rb +0 -28
  42. data/test/isolated/test_mimic_rails_after.rb +0 -22
  43. data/test/isolated/test_mimic_rails_before.rb +0 -21
  44. data/test/isolated/test_mimic_redefine.rb +0 -15
  45. data/test/json_gem/json_addition_test.rb +0 -216
  46. data/test/json_gem/json_common_interface_test.rb +0 -155
  47. data/test/json_gem/json_encoding_test.rb +0 -107
  48. data/test/json_gem/json_ext_parser_test.rb +0 -21
  49. data/test/json_gem/json_fixtures_test.rb +0 -36
  50. data/test/json_gem/json_generator_test.rb +0 -413
  51. data/test/json_gem/json_generic_object_test.rb +0 -90
  52. data/test/json_gem/json_parser_test.rb +0 -477
  53. data/test/json_gem/json_string_matching_test.rb +0 -42
  54. data/test/json_gem/test_helper.rb +0 -30
  55. data/test/mem.rb +0 -34
  56. data/test/perf.rb +0 -102
  57. data/test/perf_compat.rb +0 -128
  58. data/test/perf_dump.rb +0 -50
  59. data/test/perf_fast.rb +0 -162
  60. data/test/perf_file.rb +0 -62
  61. data/test/perf_object.rb +0 -134
  62. data/test/perf_once.rb +0 -59
  63. data/test/perf_parser.rb +0 -183
  64. data/test/perf_saj.rb +0 -101
  65. data/test/perf_scp.rb +0 -140
  66. data/test/perf_simple.rb +0 -289
  67. data/test/perf_strict.rb +0 -137
  68. data/test/perf_wab.rb +0 -129
  69. data/test/prec.rb +0 -23
  70. data/test/sample/change.rb +0 -13
  71. data/test/sample/dir.rb +0 -18
  72. data/test/sample/doc.rb +0 -35
  73. data/test/sample/file.rb +0 -47
  74. data/test/sample/group.rb +0 -15
  75. data/test/sample/hasprops.rb +0 -15
  76. data/test/sample/layer.rb +0 -11
  77. data/test/sample/line.rb +0 -20
  78. data/test/sample/oval.rb +0 -10
  79. data/test/sample/rect.rb +0 -9
  80. data/test/sample/shape.rb +0 -34
  81. data/test/sample/text.rb +0 -19
  82. data/test/sample.rb +0 -54
  83. data/test/sample_json.rb +0 -37
  84. data/test/test_compat.rb +0 -567
  85. data/test/test_custom.rb +0 -555
  86. data/test/test_debian.rb +0 -50
  87. data/test/test_fast.rb +0 -526
  88. data/test/test_file.rb +0 -250
  89. data/test/test_gc.rb +0 -60
  90. data/test/test_generate.rb +0 -21
  91. data/test/test_hash.rb +0 -39
  92. data/test/test_integer_range.rb +0 -72
  93. data/test/test_null.rb +0 -376
  94. data/test/test_object.rb +0 -1030
  95. data/test/test_parser.rb +0 -11
  96. data/test/test_parser_debug.rb +0 -27
  97. data/test/test_parser_saj.rb +0 -337
  98. data/test/test_parser_usual.rb +0 -255
  99. data/test/test_rails.rb +0 -35
  100. data/test/test_saj.rb +0 -188
  101. data/test/test_scp.rb +0 -431
  102. data/test/test_strict.rb +0 -441
  103. data/test/test_various.rb +0 -801
  104. data/test/test_wab.rb +0 -311
  105. data/test/test_writer.rb +0 -396
  106. data/test/tests.rb +0 -33
  107. data/test/tests_mimic.rb +0 -23
  108. data/test/tests_mimic_addition.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3e57c02a1fe6782596953f34b8e2a2b729a09b5d8e7128dd4633d430ca7aa0c
4
- data.tar.gz: 7698f8c0203459d62f4421f11a9c3637b04b5b808ecf87ce4ca057e2fd073762
3
+ metadata.gz: a1095d7a176bd19396bd99cf23df33564dbdf983b36a74254085700a12ce4293
4
+ data.tar.gz: ef1b5958d6edf181843066dc4b60a93e861779cfa387b88d0f866d642c3e9a6c
5
5
  SHA512:
6
- metadata.gz: 417ada5b645a6ba48e81b52bb72cec97bb4a64595a61252989346a975c1026b3cbc039cbf7cef166b5dbfbdd79554d5c9e5786da3299ce1fd3f2ec70d3ef479f
7
- data.tar.gz: ceffb29c6732b107d42091bc8754e8b4174e26e6d8eb9c4162ed8a12a65d37aa2450f9f5398d39242d92fabd46d63be5fc14e0dc003774378e4e6211b02e3f0d
6
+ metadata.gz: c396a33f0a2e64282f13a1b834c8804429f97de515dffcf1e8cba852fbe645301c9f6b0e7d64552a795c70e0262e8828f650a1ac9243391af8c07a2ecd621f35
7
+ data.tar.gz: 43ddbc0d8f2d5bea7580b0f88fa2c4981a661098f3e041aac6f8185029e2018f99ef33478ebbf62b35c31357f1d48adb25f6889b6049054add214a834e8e696a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.16.10 - 2025-02-24
4
+
5
+ - Changed oj_parser_type to be non-static.
6
+
3
7
  ## 3.16.9 - 2024-12-28
4
8
 
5
9
  - Fixed `Oj::Parser` create_id size issue #931.
@@ -64,6 +68,7 @@
64
68
  ## 3.14.3 - 2023-04-07
65
69
 
66
70
  - Fixed compat parse with optimized Hash when parsing a JSON::GenericObject.
71
+ - Deprecated Ruby <= 2.6.10
67
72
 
68
73
  ## 3.14.2 - 2023-02-10
69
74
 
data/ext/oj/fast.c CHANGED
@@ -193,8 +193,7 @@ static VALUE leaf_value(Doc doc, Leaf leaf) {
193
193
  case T_FIXNUM: leaf_fixnum_value(leaf); break;
194
194
  case T_FLOAT: leaf_float_value(leaf); break;
195
195
  case T_STRING:
196
- leaf->value = rb_str_new2(leaf->str);
197
- leaf->value = oj_encode(leaf->value);
196
+ leaf->value = rb_utf8_str_new_cstr(leaf->str);
198
197
  leaf->value_type = RUBY_VAL;
199
198
  break;
200
199
  case T_ARRAY: return leaf_array_value(doc, leaf); break;
@@ -309,8 +308,7 @@ static VALUE leaf_hash_value(Doc doc, Leaf leaf) {
309
308
  volatile VALUE key;
310
309
 
311
310
  do {
312
- key = rb_str_new2(e->key);
313
- key = oj_encode(key);
311
+ key = rb_utf8_str_new_cstr(e->key);
314
312
  rb_hash_aset(h, key, leaf_value(doc, e));
315
313
  e = e->next;
316
314
  } while (e != first);
@@ -1257,8 +1255,7 @@ static VALUE doc_local_key(VALUE self) {
1257
1255
  volatile VALUE key = Qnil;
1258
1256
 
1259
1257
  if (T_HASH == leaf->parent_type) {
1260
- key = rb_str_new2(leaf->key);
1261
- key = oj_encode(key);
1258
+ key = rb_utf8_str_new_cstr(leaf->key);
1262
1259
  } else if (T_ARRAY == leaf->parent_type) {
1263
1260
  key = LONG2NUM(leaf->index);
1264
1261
  }
data/ext/oj/mimic_json.c CHANGED
@@ -246,8 +246,7 @@ static VALUE mimic_dump(int argc, VALUE *argv, VALUE self) {
246
246
  if (0 == out.buf) {
247
247
  rb_raise(rb_eNoMemError, "Not enough memory.");
248
248
  }
249
- rstr = rb_str_new2(out.buf);
250
- rstr = oj_encode(rstr);
249
+ rstr = rb_utf8_str_new_cstr(out.buf);
251
250
  if (2 <= argc && Qnil != argv[1] && rb_respond_to(argv[1], oj_write_id)) {
252
251
  VALUE io = argv[1];
253
252
  VALUE args[1];
@@ -396,8 +395,7 @@ static VALUE mimic_generate_core(int argc, VALUE *argv, Options copts) {
396
395
  if (0 == out.buf) {
397
396
  rb_raise(rb_eNoMemError, "Not enough memory.");
398
397
  }
399
- rstr = rb_str_new2(out.buf);
400
- rstr = oj_encode(rstr);
398
+ rstr = rb_utf8_str_new_cstr(out.buf);
401
399
 
402
400
  oj_out_free(&out);
403
401
 
@@ -768,8 +766,7 @@ static VALUE mimic_object_to_json(int argc, VALUE *argv, VALUE self) {
768
766
  if (NULL == out.buf) {
769
767
  rb_raise(rb_eNoMemError, "Not enough memory.");
770
768
  }
771
- rstr = rb_str_new2(out.buf);
772
- rstr = oj_encode(rstr);
769
+ rstr = rb_utf8_str_new_cstr(out.buf);
773
770
 
774
771
  oj_out_free(&out);
775
772
 
data/ext/oj/oj.c CHANGED
@@ -1277,8 +1277,7 @@ static VALUE dump_body(VALUE a) {
1277
1277
  if (0 == arg->out->buf) {
1278
1278
  rb_raise(rb_eNoMemError, "Not enough memory.");
1279
1279
  }
1280
- rstr = rb_str_new2(arg->out->buf);
1281
- rstr = oj_encode(rstr);
1280
+ rstr = rb_utf8_str_new_cstr(arg->out->buf);
1282
1281
 
1283
1282
  return rstr;
1284
1283
  }
@@ -1378,8 +1377,7 @@ static VALUE to_json(int argc, VALUE *argv, VALUE self) {
1378
1377
  if (0 == out.buf) {
1379
1378
  rb_raise(rb_eNoMemError, "Not enough memory.");
1380
1379
  }
1381
- rstr = rb_str_new2(out.buf);
1382
- rstr = oj_encode(rstr);
1380
+ rstr = rb_utf8_str_new_cstr(out.buf);
1383
1381
 
1384
1382
  oj_out_free(&out);
1385
1383
 
data/ext/oj/parse.c CHANGED
@@ -183,9 +183,19 @@ static void unicode_to_chars(ParseInfo pi, Buf buf, uint32_t code) {
183
183
  }
184
184
  }
185
185
 
186
+ static const unsigned char end_of_scan_string[] = {
187
+ // Filled 1 at the positions of '\0', '\\', and '"'
188
+ 1, 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, 0, 1, 0, 0,
189
+ 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, 0, 0, 0, 0, 0,
190
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
191
+ 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, 0, 0, 0, 0, 0,
192
+ 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, 0, 0, 0, 0, 0,
193
+ 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, 0, 0, 0, 0, 0,
194
+ 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, 0, 0,
195
+ };
186
196
  static inline const char *scan_string_noSIMD(const char *str, const char *end) {
187
- for (; '"' != *str; str++) {
188
- if (end <= str || '\0' == *str || '\\' == *str) {
197
+ for (; str < end; str++) {
198
+ if (end_of_scan_string[(unsigned char)*str]) {
189
199
  break;
190
200
  }
191
201
  }
@@ -1123,12 +1133,12 @@ CLEANUP:
1123
1133
  // The json gem requires the error message be UTF-8 encoded. In
1124
1134
  // additional the complete JSON source must be returned. There
1125
1135
  // does not seem to be a size limit.
1126
- VALUE msg = oj_encode(rb_str_new2(pi->err.msg));
1136
+ VALUE msg = rb_utf8_str_new_cstr(pi->err.msg);
1127
1137
  VALUE args[1];
1128
1138
 
1129
1139
  if (NULL != pi->json) {
1130
- msg = rb_str_append(msg, oj_encode(rb_str_new2(" in '")));
1131
- msg = rb_str_append(msg, oj_encode(rb_str_new2(pi->json)));
1140
+ msg = rb_str_append(msg, rb_utf8_str_new_cstr(" in '"));
1141
+ msg = rb_str_append(msg, rb_utf8_str_new_cstr(pi->json));
1132
1142
  }
1133
1143
  args[0] = msg;
1134
1144
  if (pi->err.clas == oj_parse_error_class) {
data/ext/oj/parser.c CHANGED
@@ -1161,7 +1161,7 @@ static void parser_mark(void *ptr) {
1161
1161
  }
1162
1162
  }
1163
1163
 
1164
- static const rb_data_type_t oj_parser_type = {
1164
+ const rb_data_type_t oj_parser_type = {
1165
1165
  "Oj/parser",
1166
1166
  {
1167
1167
  parser_mark,
data/ext/oj/parser.h CHANGED
@@ -42,6 +42,8 @@ typedef struct _num {
42
42
 
43
43
  struct _ojParser;
44
44
 
45
+ extern const rb_data_type_t oj_parser_type;
46
+
45
47
  typedef struct _funcs {
46
48
  void (*add_null)(struct _ojParser *p);
47
49
  void (*add_true)(struct _ojParser *p);
data/ext/oj/rails.c CHANGED
@@ -933,8 +933,7 @@ static VALUE encode(VALUE obj, ROptTable ropts, Options opts, int argc, VALUE *a
933
933
  if (0 == out.buf) {
934
934
  rb_raise(rb_eNoMemError, "Not enough memory.");
935
935
  }
936
- rstr = rb_str_new2(out.buf);
937
- rstr = oj_encode(rstr);
936
+ rstr = rb_utf8_str_new_cstr(out.buf);
938
937
  }
939
938
  if (Yes == copts.circular) {
940
939
  oj_cache8_delete(out.circ_cache);
data/ext/oj/saj.c CHANGED
@@ -94,8 +94,7 @@ inline static void call_add_value(VALUE handler, VALUE value, const char *key) {
94
94
  if (0 == key) {
95
95
  k = Qnil;
96
96
  } else {
97
- k = rb_str_new2(key);
98
- k = oj_encode(k);
97
+ k = rb_utf8_str_new_cstr(key);
99
98
  }
100
99
  rb_funcall(handler, oj_add_value_id, 2, value, k);
101
100
  }
@@ -106,8 +105,7 @@ inline static void call_no_value(VALUE handler, ID method, const char *key) {
106
105
  if (0 == key) {
107
106
  k = Qnil;
108
107
  } else {
109
- k = rb_str_new2(key);
110
- k = oj_encode(k);
108
+ k = rb_utf8_str_new_cstr(key);
111
109
  }
112
110
  rb_funcall(handler, method, 1, k);
113
111
  }
@@ -257,9 +255,8 @@ static void read_str(ParseInfo pi, const char *key) {
257
255
 
258
256
  text = read_quoted_value(pi);
259
257
  if (pi->has_add_value) {
260
- VALUE s = rb_str_new2(text);
258
+ VALUE s = rb_utf8_str_new_cstr(text);
261
259
 
262
- s = oj_encode(s);
263
260
  call_add_value(pi->handler, s, key);
264
261
  }
265
262
  }
data/ext/oj/scp.c CHANGED
@@ -56,9 +56,8 @@ static void add_value(ParseInfo pi, VALUE val) {
56
56
  }
57
57
 
58
58
  static void add_cstr(ParseInfo pi, const char *str, size_t len, const char *orig) {
59
- volatile VALUE rstr = rb_str_new(str, len);
59
+ volatile VALUE rstr = rb_utf8_str_new(str, len);
60
60
 
61
- rstr = oj_encode(rstr);
62
61
  rb_funcall(pi->handler, oj_add_value_id, 1, rstr);
63
62
  }
64
63
 
@@ -87,9 +86,8 @@ static VALUE hash_key(ParseInfo pi, const char *key, size_t klen) {
87
86
  }
88
87
 
89
88
  static void hash_set_cstr(ParseInfo pi, Val kval, const char *str, size_t len, const char *orig) {
90
- volatile VALUE rstr = rb_str_new(str, len);
89
+ volatile VALUE rstr = rb_utf8_str_new(str, len);
91
90
 
92
- rstr = oj_encode(rstr);
93
91
  rb_funcall(pi->handler, oj_hash_set_id, 3, stack_peek(&pi->stack)->val, oj_calc_hash_key(pi, kval), rstr);
94
92
  }
95
93
 
@@ -107,9 +105,8 @@ static void hash_set_value(ParseInfo pi, Val kval, VALUE value) {
107
105
  }
108
106
 
109
107
  static void array_append_cstr(ParseInfo pi, const char *str, size_t len, const char *orig) {
110
- volatile VALUE rstr = rb_str_new(str, len);
108
+ volatile VALUE rstr = rb_utf8_str_new(str, len);
111
109
 
112
- rstr = oj_encode(rstr);
113
110
  rb_funcall(pi->handler, oj_array_append_id, 2, stack_peek(&pi->stack)->val, rstr);
114
111
  }
115
112
 
@@ -44,13 +44,7 @@ static void stream_writer_write(StreamWriter sw) {
44
44
  case STRING_IO:
45
45
  case STREAM_IO:
46
46
  case FILE_IO: {
47
- volatile VALUE rs = rb_str_new(sw->sw.out.buf, size);
48
-
49
- // Oddly enough, when pushing ASCII characters with UTF-8 encoding or
50
- // even ASCII-8BIT does not change the output encoding. Pushing any
51
- // non-ASCII no matter what the encoding changes the output encoding
52
- // to ASCII-8BIT if it the string is not forced to UTF-8 here.
53
- rs = oj_encode(rs);
47
+ volatile VALUE rs = rb_utf8_str_new(sw->sw.out.buf, size);
54
48
  rb_funcall(sw->stream, oj_write_id, 1, rs);
55
49
  break;
56
50
  }
data/ext/oj/strict.c CHANGED
@@ -19,8 +19,7 @@ VALUE oj_cstr_to_value(const char *str, size_t len, size_t cache_str) {
19
19
  if (len < cache_str) {
20
20
  rstr = oj_str_intern(str, len);
21
21
  } else {
22
- rstr = rb_str_new(str, len);
23
- rstr = oj_encode(rstr);
22
+ rstr = rb_utf8_str_new(str, len);
24
23
  }
25
24
  return rstr;
26
25
  }
@@ -35,8 +34,7 @@ VALUE oj_calc_hash_key(ParseInfo pi, Val parent) {
35
34
  if (Yes == pi->options.sym_key) {
36
35
  rkey = ID2SYM(rb_intern3(parent->key, parent->klen, oj_utf8_encoding));
37
36
  } else {
38
- rkey = rb_str_new(parent->key, parent->klen);
39
- rkey = oj_encode(rkey);
37
+ rkey = rb_utf8_str_new(parent->key, parent->klen);
40
38
  OBJ_FREEZE(rkey); // frozen when used as a Hash key anyway
41
39
  }
42
40
  return rkey;
@@ -469,9 +469,7 @@ static VALUE str_writer_reset(VALUE self) {
469
469
  static VALUE str_writer_to_s(VALUE self) {
470
470
  StrWriter sw;
471
471
  TypedData_Get_Struct(self, struct _strWriter, &oj_string_writer_type, sw);
472
- VALUE rstr = rb_str_new(sw->out.buf, sw->out.cur - sw->out.buf);
473
-
474
- return oj_encode(rstr);
472
+ return rb_utf8_str_new(sw->out.buf, sw->out.cur - sw->out.buf);
475
473
  }
476
474
 
477
475
  /* Document-method: as_json
data/lib/oj/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Oj
2
2
  # Current version of the module.
3
- VERSION = '3.16.9'
3
+ VERSION = '3.16.10'
4
4
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oj
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.16.9
4
+ version: 3.16.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Ohler
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-28 00:00:00.000000000 Z
10
+ date: 2025-02-25 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bigdecimal
@@ -200,98 +199,6 @@ files:
200
199
  - pages/Rails.md
201
200
  - pages/Security.md
202
201
  - pages/WAB.md
203
- - test/_test_active.rb
204
- - test/_test_active_mimic.rb
205
- - test/_test_mimic_rails.rb
206
- - test/activerecord/result_test.rb
207
- - test/activesupport6/abstract_unit.rb
208
- - test/activesupport6/decoding_test.rb
209
- - test/activesupport6/encoding_test.rb
210
- - test/activesupport6/encoding_test_cases.rb
211
- - test/activesupport6/test_common.rb
212
- - test/activesupport6/test_helper.rb
213
- - test/activesupport6/time_zone_test_helpers.rb
214
- - test/activesupport7/abstract_unit.rb
215
- - test/activesupport7/decoding_test.rb
216
- - test/activesupport7/encoding_test.rb
217
- - test/activesupport7/encoding_test_cases.rb
218
- - test/activesupport7/time_zone_test_helpers.rb
219
- - test/files.rb
220
- - test/foo.rb
221
- - test/helper.rb
222
- - test/isolated/shared.rb
223
- - test/isolated/test_mimic_after.rb
224
- - test/isolated/test_mimic_alone.rb
225
- - test/isolated/test_mimic_as_json.rb
226
- - test/isolated/test_mimic_before.rb
227
- - test/isolated/test_mimic_define.rb
228
- - test/isolated/test_mimic_rails_after.rb
229
- - test/isolated/test_mimic_rails_before.rb
230
- - test/isolated/test_mimic_redefine.rb
231
- - test/json_gem/json_addition_test.rb
232
- - test/json_gem/json_common_interface_test.rb
233
- - test/json_gem/json_encoding_test.rb
234
- - test/json_gem/json_ext_parser_test.rb
235
- - test/json_gem/json_fixtures_test.rb
236
- - test/json_gem/json_generator_test.rb
237
- - test/json_gem/json_generic_object_test.rb
238
- - test/json_gem/json_parser_test.rb
239
- - test/json_gem/json_string_matching_test.rb
240
- - test/json_gem/test_helper.rb
241
- - test/mem.rb
242
- - test/perf.rb
243
- - test/perf_compat.rb
244
- - test/perf_dump.rb
245
- - test/perf_fast.rb
246
- - test/perf_file.rb
247
- - test/perf_object.rb
248
- - test/perf_once.rb
249
- - test/perf_parser.rb
250
- - test/perf_saj.rb
251
- - test/perf_scp.rb
252
- - test/perf_simple.rb
253
- - test/perf_strict.rb
254
- - test/perf_wab.rb
255
- - test/prec.rb
256
- - test/sample.rb
257
- - test/sample/change.rb
258
- - test/sample/dir.rb
259
- - test/sample/doc.rb
260
- - test/sample/file.rb
261
- - test/sample/group.rb
262
- - test/sample/hasprops.rb
263
- - test/sample/layer.rb
264
- - test/sample/line.rb
265
- - test/sample/oval.rb
266
- - test/sample/rect.rb
267
- - test/sample/shape.rb
268
- - test/sample/text.rb
269
- - test/sample_json.rb
270
- - test/test_compat.rb
271
- - test/test_custom.rb
272
- - test/test_debian.rb
273
- - test/test_fast.rb
274
- - test/test_file.rb
275
- - test/test_gc.rb
276
- - test/test_generate.rb
277
- - test/test_hash.rb
278
- - test/test_integer_range.rb
279
- - test/test_null.rb
280
- - test/test_object.rb
281
- - test/test_parser.rb
282
- - test/test_parser_debug.rb
283
- - test/test_parser_saj.rb
284
- - test/test_parser_usual.rb
285
- - test/test_rails.rb
286
- - test/test_saj.rb
287
- - test/test_scp.rb
288
- - test/test_strict.rb
289
- - test/test_various.rb
290
- - test/test_wab.rb
291
- - test/test_writer.rb
292
- - test/tests.rb
293
- - test/tests_mimic.rb
294
- - test/tests_mimic_addition.rb
295
202
  homepage: http://www.ohler.com/oj
296
203
  licenses:
297
204
  - MIT
@@ -303,7 +210,6 @@ metadata:
303
210
  source_code_uri: https://github.com/ohler55/oj
304
211
  wiki_uri: https://github.com/ohler55/oj/wiki
305
212
  rubygems_mfa_required: 'true'
306
- post_install_message:
307
213
  rdoc_options:
308
214
  - "--title"
309
215
  - Oj
@@ -322,8 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
228
  - !ruby/object:Gem::Version
323
229
  version: '0'
324
230
  requirements: []
325
- rubygems_version: 3.5.11
326
- signing_key:
231
+ rubygems_version: 3.6.2
327
232
  specification_version: 4
328
233
  summary: A fast JSON parser and serializer.
329
234
  test_files: []
data/test/_test_active.rb DELETED
@@ -1,75 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- $LOAD_PATH << __dir__
5
- %w(lib ext test).each do |dir|
6
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
7
- end
8
-
9
- require 'minitest'
10
- require 'minitest/autorun'
11
-
12
- require 'sqlite3'
13
- require 'active_record'
14
- require 'oj'
15
-
16
- # Oj.mimic_JSON()
17
- Oj.default_options = {mode: :compat, indent: 2}
18
-
19
- # ActiveRecord::Base.logger = Logger.new(STDERR)
20
-
21
- ActiveRecord::Base.establish_connection(
22
- :adapter => 'sqlite3',
23
- :database => ':memory:'
24
- )
25
-
26
- ActiveRecord::Schema.define do
27
- create_table :users do |table|
28
- table.column :first_name, :string
29
- table.column :last_name, :string
30
- table.column :email, :string
31
- end
32
- end
33
-
34
- class User < ActiveRecord::Base
35
- end
36
-
37
- class ActiveTest < Minitest::Test
38
-
39
- def test_active
40
- User.find_or_create_by(first_name: 'John', last_name: 'Smith', email: 'john@example.com')
41
- User.find_or_create_by(first_name: 'Joan', last_name: 'Smith', email: 'joan@example.com')
42
-
43
- # Single instance.
44
- assert_equal(%|{
45
- "id":1,
46
- "first_name":"John",
47
- "last_name":"Smith",
48
- "email":"john@example.com"
49
- }
50
- |, Oj.dump(User.first))
51
-
52
- # Array of instances.
53
- assert_equal(%|[
54
- {
55
- "id":1,
56
- "first_name":"John",
57
- "last_name":"Smith",
58
- "email":"john@example.com"
59
- },
60
- {
61
- "id":2,
62
- "first_name":"Joan",
63
- "last_name":"Smith",
64
- "email":"joan@example.com"
65
- }
66
- ]
67
- |, Oj.dump(User.all))
68
-
69
- # Single instance as json. (not Oj)
70
- assert_equal(%|{"id":1,"first_name":"John","last_name":"Smith","email":"john@example.com"}|, User.first.to_json)
71
-
72
- # Array of instances as json. (not Oj)
73
- assert_equal(%|[{"id":1,"first_name":"John","last_name":"Smith","email":"john@example.com"},{"id":2,"first_name":"Joan","last_name":"Smith","email":"joan@example.com"}]|, User.all.to_json)
74
- end
75
- end
@@ -1,95 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- $LOAD_PATH << __dir__
5
- %w(lib ext test).each do |dir|
6
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
7
- end
8
-
9
- require 'minitest'
10
- require 'minitest/autorun'
11
-
12
- require 'sqlite3'
13
- require 'active_record'
14
- require 'oj'
15
-
16
- Oj.mimic_JSON()
17
- Oj.default_options = {mode: :compat, indent: 2}
18
-
19
- # ActiveRecord::Base.logger = Logger.new(STDERR)
20
-
21
- ActiveRecord::Base.establish_connection(
22
- :adapter => 'sqlite3',
23
- :database => ':memory:'
24
- )
25
-
26
- ActiveRecord::Schema.define do
27
- create_table :users do |table|
28
- table.column :first_name, :string
29
- table.column :last_name, :string
30
- table.column :email, :string
31
- end
32
- end
33
-
34
- class User < ActiveRecord::Base
35
- end
36
-
37
- class ActiveTest < Minitest::Test
38
-
39
- def test_active
40
- User.find_or_create_by(first_name: 'John', last_name: 'Smith', email: 'john@example.com')
41
- User.find_or_create_by(first_name: 'Joan', last_name: 'Smith', email: 'joan@example.com')
42
-
43
- # Single instance.
44
- assert_equal(%|{
45
- "id":1,
46
- "first_name":"John",
47
- "last_name":"Smith",
48
- "email":"john@example.com"
49
- }
50
- |, Oj.dump(User.first))
51
-
52
- # Array of instances.
53
- assert_equal(%|[
54
- {
55
- "id":1,
56
- "first_name":"John",
57
- "last_name":"Smith",
58
- "email":"john@example.com"
59
- },
60
- {
61
- "id":2,
62
- "first_name":"Joan",
63
- "last_name":"Smith",
64
- "email":"joan@example.com"
65
- }
66
- ]
67
- |, Oj.dump(User.all))
68
-
69
- # Single instance as json. (not Oj)
70
- assert_equal(%|{
71
- "id":1,
72
- "first_name":"John",
73
- "last_name":"Smith",
74
- "email":"john@example.com"
75
- }
76
- |, User.first.to_json)
77
-
78
- # Array of instances as json. (not Oj)
79
- assert_equal(%|[
80
- {
81
- "id":1,
82
- "first_name":"John",
83
- "last_name":"Smith",
84
- "email":"john@example.com"
85
- },
86
- {
87
- "id":2,
88
- "first_name":"Joan",
89
- "last_name":"Smith",
90
- "email":"joan@example.com"
91
- }
92
- ]
93
- |, User.all.to_json)
94
- end
95
- end