oj 2.18.5 → 3.16.11

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 (166) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1452 -0
  3. data/README.md +53 -221
  4. data/RELEASE_NOTES.md +61 -0
  5. data/ext/oj/buf.h +54 -72
  6. data/ext/oj/cache.c +329 -0
  7. data/ext/oj/cache.h +22 -0
  8. data/ext/oj/cache8.c +61 -63
  9. data/ext/oj/cache8.h +12 -39
  10. data/ext/oj/circarray.c +38 -67
  11. data/ext/oj/circarray.h +16 -42
  12. data/ext/oj/code.c +214 -0
  13. data/ext/oj/code.h +40 -0
  14. data/ext/oj/compat.c +194 -110
  15. data/ext/oj/custom.c +1074 -0
  16. data/ext/oj/debug.c +126 -0
  17. data/ext/oj/dump.c +1276 -2494
  18. data/ext/oj/dump.h +110 -0
  19. data/ext/oj/dump_compat.c +897 -0
  20. data/ext/oj/dump_leaf.c +162 -0
  21. data/ext/oj/dump_object.c +710 -0
  22. data/ext/oj/dump_strict.c +399 -0
  23. data/ext/oj/encode.h +7 -42
  24. data/ext/oj/encoder.c +43 -0
  25. data/ext/oj/err.c +28 -53
  26. data/ext/oj/err.h +49 -46
  27. data/ext/oj/extconf.rb +33 -32
  28. data/ext/oj/fast.c +1082 -1098
  29. data/ext/oj/intern.c +313 -0
  30. data/ext/oj/intern.h +22 -0
  31. data/ext/oj/mem.c +318 -0
  32. data/ext/oj/mem.h +53 -0
  33. data/ext/oj/mimic_json.c +919 -0
  34. data/ext/oj/object.c +545 -625
  35. data/ext/oj/odd.c +158 -168
  36. data/ext/oj/odd.h +32 -58
  37. data/ext/oj/oj.c +1727 -2080
  38. data/ext/oj/oj.h +334 -259
  39. data/ext/oj/parse.c +974 -753
  40. data/ext/oj/parse.h +97 -90
  41. data/ext/oj/parser.c +1600 -0
  42. data/ext/oj/parser.h +103 -0
  43. data/ext/oj/rails.c +1478 -0
  44. data/ext/oj/rails.h +18 -0
  45. data/ext/oj/reader.c +136 -163
  46. data/ext/oj/reader.h +76 -112
  47. data/ext/oj/resolve.c +45 -94
  48. data/ext/oj/resolve.h +7 -34
  49. data/ext/oj/rxclass.c +144 -0
  50. data/ext/oj/rxclass.h +26 -0
  51. data/ext/oj/saj.c +445 -511
  52. data/ext/oj/saj2.c +584 -0
  53. data/ext/oj/saj2.h +23 -0
  54. data/ext/oj/scp.c +82 -143
  55. data/ext/oj/simd.h +10 -0
  56. data/ext/oj/sparse.c +749 -644
  57. data/ext/oj/stream_writer.c +329 -0
  58. data/ext/oj/strict.c +114 -112
  59. data/ext/oj/string_writer.c +517 -0
  60. data/ext/oj/trace.c +72 -0
  61. data/ext/oj/trace.h +55 -0
  62. data/ext/oj/usual.c +1218 -0
  63. data/ext/oj/usual.h +69 -0
  64. data/ext/oj/util.c +136 -0
  65. data/ext/oj/util.h +20 -0
  66. data/ext/oj/val_stack.c +75 -72
  67. data/ext/oj/val_stack.h +94 -127
  68. data/ext/oj/validate.c +46 -0
  69. data/ext/oj/wab.c +586 -0
  70. data/lib/oj/active_support_helper.rb +1 -3
  71. data/lib/oj/bag.rb +8 -1
  72. data/lib/oj/easy_hash.rb +21 -13
  73. data/lib/oj/error.rb +10 -12
  74. data/lib/oj/json.rb +188 -0
  75. data/lib/oj/mimic.rb +165 -26
  76. data/lib/oj/saj.rb +20 -6
  77. data/lib/oj/schandler.rb +5 -4
  78. data/lib/oj/state.rb +135 -0
  79. data/lib/oj/version.rb +2 -3
  80. data/lib/oj.rb +3 -31
  81. data/pages/Advanced.md +22 -0
  82. data/pages/Compatibility.md +25 -0
  83. data/pages/Custom.md +23 -0
  84. data/pages/Encoding.md +65 -0
  85. data/pages/InstallOptions.md +20 -0
  86. data/pages/JsonGem.md +94 -0
  87. data/pages/Modes.md +161 -0
  88. data/pages/Options.md +337 -0
  89. data/pages/Parser.md +309 -0
  90. data/pages/Rails.md +167 -0
  91. data/pages/Security.md +20 -0
  92. data/pages/WAB.md +13 -0
  93. metadata +126 -163
  94. data/ext/oj/hash.c +0 -163
  95. data/ext/oj/hash.h +0 -46
  96. data/ext/oj/hash_test.c +0 -512
  97. data/test/_test_active.rb +0 -76
  98. data/test/_test_active_mimic.rb +0 -96
  99. data/test/_test_mimic_rails.rb +0 -126
  100. data/test/activesupport_datetime_test.rb +0 -23
  101. data/test/bug.rb +0 -51
  102. data/test/bug2.rb +0 -10
  103. data/test/bug3.rb +0 -46
  104. data/test/bug_fast.rb +0 -32
  105. data/test/bug_load.rb +0 -24
  106. data/test/crash.rb +0 -111
  107. data/test/curl/curl_oj.rb +0 -46
  108. data/test/curl/get_oj.rb +0 -24
  109. data/test/curl/just_curl.rb +0 -31
  110. data/test/curl/just_oj.rb +0 -51
  111. data/test/example.rb +0 -11
  112. data/test/files.rb +0 -29
  113. data/test/foo.rb +0 -24
  114. data/test/helper.rb +0 -27
  115. data/test/io.rb +0 -48
  116. data/test/isolated/shared.rb +0 -310
  117. data/test/isolated/test_mimic_after.rb +0 -13
  118. data/test/isolated/test_mimic_alone.rb +0 -12
  119. data/test/isolated/test_mimic_as_json.rb +0 -45
  120. data/test/isolated/test_mimic_before.rb +0 -13
  121. data/test/isolated/test_mimic_define.rb +0 -28
  122. data/test/isolated/test_mimic_rails_after.rb +0 -22
  123. data/test/isolated/test_mimic_rails_before.rb +0 -21
  124. data/test/isolated/test_mimic_rails_datetime.rb +0 -27
  125. data/test/isolated/test_mimic_redefine.rb +0 -15
  126. data/test/mod.rb +0 -16
  127. data/test/perf.rb +0 -107
  128. data/test/perf_compat.rb +0 -128
  129. data/test/perf_fast.rb +0 -164
  130. data/test/perf_file.rb +0 -64
  131. data/test/perf_object.rb +0 -138
  132. data/test/perf_saj.rb +0 -109
  133. data/test/perf_scp.rb +0 -151
  134. data/test/perf_simple.rb +0 -287
  135. data/test/perf_strict.rb +0 -128
  136. data/test/rails.rb +0 -50
  137. data/test/russian.rb +0 -18
  138. data/test/sample/change.rb +0 -14
  139. data/test/sample/dir.rb +0 -19
  140. data/test/sample/doc.rb +0 -36
  141. data/test/sample/file.rb +0 -48
  142. data/test/sample/group.rb +0 -16
  143. data/test/sample/hasprops.rb +0 -16
  144. data/test/sample/layer.rb +0 -12
  145. data/test/sample/line.rb +0 -20
  146. data/test/sample/oval.rb +0 -10
  147. data/test/sample/rect.rb +0 -10
  148. data/test/sample/shape.rb +0 -35
  149. data/test/sample/text.rb +0 -20
  150. data/test/sample.rb +0 -55
  151. data/test/sample_json.rb +0 -37
  152. data/test/struct.rb +0 -29
  153. data/test/test_compat.rb +0 -398
  154. data/test/test_debian.rb +0 -53
  155. data/test/test_fast.rb +0 -458
  156. data/test/test_file.rb +0 -245
  157. data/test/test_gc.rb +0 -49
  158. data/test/test_hash.rb +0 -29
  159. data/test/test_object.rb +0 -745
  160. data/test/test_saj.rb +0 -186
  161. data/test/test_scp.rb +0 -396
  162. data/test/test_serializer.rb +0 -59
  163. data/test/test_strict.rb +0 -254
  164. data/test/test_various.rb +0 -1383
  165. data/test/test_writer.rb +0 -308
  166. data/test/write_timebars.rb +0 -31
data/ext/oj/debug.c ADDED
@@ -0,0 +1,126 @@
1
+ // Copyright (c) 2021, Peter Ohler, All rights reserved.
2
+
3
+ #include "parser.h"
4
+
5
+ static void add_null(struct _ojParser *p) {
6
+ switch (p->stack[p->depth]) {
7
+ case TOP_FUN: printf("*** add_null at top\n"); break;
8
+ case ARRAY_FUN: printf("*** add_null to array\n"); break;
9
+ case OBJECT_FUN: printf("*** add_null with '%s'\n", buf_str(&p->key)); break;
10
+ }
11
+ }
12
+
13
+ static void add_true(struct _ojParser *p) {
14
+ switch (p->stack[p->depth]) {
15
+ case TOP_FUN: printf("*** add_true at top\n"); break;
16
+ case ARRAY_FUN: printf("*** add_true to array\n"); break;
17
+ case OBJECT_FUN: printf("*** add_true with '%s'\n", buf_str(&p->key)); break;
18
+ }
19
+ }
20
+
21
+ static void add_false(struct _ojParser *p) {
22
+ switch (p->stack[p->depth]) {
23
+ case TOP_FUN: printf("*** add_false at top\n"); break;
24
+ case ARRAY_FUN: printf("*** add_false to array\n"); break;
25
+ case OBJECT_FUN: printf("*** add_false with '%s'\n", buf_str(&p->key)); break;
26
+ }
27
+ }
28
+
29
+ static void add_int(struct _ojParser *p) {
30
+ switch (p->stack[p->depth]) {
31
+ case TOP_FUN: printf("*** add_int %lld at top\n", (long long)p->num.fixnum); break;
32
+ case ARRAY_FUN: printf("*** add_int %lld to array\n", (long long)p->num.fixnum); break;
33
+ case OBJECT_FUN: printf("*** add_int %lld with '%s'\n", (long long)p->num.fixnum, buf_str(&p->key)); break;
34
+ }
35
+ }
36
+
37
+ static void add_float(struct _ojParser *p) {
38
+ switch (p->stack[p->depth]) {
39
+ case TOP_FUN: printf("*** add_float %Lf at top\n", p->num.dub); break;
40
+ case ARRAY_FUN: printf("*** add_float %Lf to array\n", p->num.dub); break;
41
+ case OBJECT_FUN: printf("*** add_float %Lf with '%s'\n", p->num.dub, buf_str(&p->key)); break;
42
+ }
43
+ }
44
+
45
+ static void add_big(struct _ojParser *p) {
46
+ switch (p->stack[p->depth]) {
47
+ case TOP_FUN: printf("*** add_big %s at top\n", buf_str(&p->buf)); break;
48
+ case ARRAY_FUN: printf("*** add_big %s to array\n", buf_str(&p->buf)); break;
49
+ case OBJECT_FUN: printf("*** add_big %s with '%s'\n", buf_str(&p->buf), buf_str(&p->key)); break;
50
+ }
51
+ }
52
+
53
+ static void add_str(struct _ojParser *p) {
54
+ switch (p->stack[p->depth]) {
55
+ case TOP_FUN: printf("*** add_str '%s' at top\n", buf_str(&p->buf)); break;
56
+ case ARRAY_FUN: printf("*** add_str '%s' to array\n", buf_str(&p->buf)); break;
57
+ case OBJECT_FUN: printf("*** add_str '%s' with '%s'\n", buf_str(&p->buf), buf_str(&p->key)); break;
58
+ }
59
+ }
60
+
61
+ static void open_array(struct _ojParser *p) {
62
+ switch (p->stack[p->depth]) {
63
+ case TOP_FUN: printf("*** open_array at top\n"); break;
64
+ case ARRAY_FUN: printf("*** open_array to array\n"); break;
65
+ case OBJECT_FUN: printf("*** open_array with '%s'\n", buf_str(&p->key)); break;
66
+ }
67
+ }
68
+
69
+ static void close_array(struct _ojParser *p) {
70
+ printf("*** close_array\n");
71
+ }
72
+
73
+ static void open_object(struct _ojParser *p) {
74
+ switch (p->stack[p->depth]) {
75
+ case TOP_FUN: printf("*** open_object at top\n"); break;
76
+ case ARRAY_FUN: printf("*** open_object to array\n"); break;
77
+ case OBJECT_FUN: printf("*** open_object with '%s'\n", buf_str(&p->key)); break;
78
+ }
79
+ }
80
+
81
+ static void close_object(struct _ojParser *p) {
82
+ printf("*** close_object\n");
83
+ }
84
+
85
+ static VALUE option(ojParser p, const char *key, VALUE value) {
86
+ rb_raise(rb_eArgError, "%s is not an option for the debug delegate", key);
87
+ return Qnil;
88
+ }
89
+
90
+ static VALUE result(struct _ojParser *p) {
91
+ return Qnil;
92
+ }
93
+
94
+ static void start(struct _ojParser *p) {
95
+ printf("*** start\n");
96
+ }
97
+
98
+ static void dfree(struct _ojParser *p) {
99
+ }
100
+
101
+ static void mark(struct _ojParser *p) {
102
+ }
103
+
104
+ void oj_set_parser_debug(ojParser p) {
105
+ Funcs end = p->funcs + 3;
106
+ Funcs f;
107
+
108
+ for (f = p->funcs; f < end; f++) {
109
+ f->add_null = add_null;
110
+ f->add_true = add_true;
111
+ f->add_false = add_false;
112
+ f->add_int = add_int;
113
+ f->add_float = add_float;
114
+ f->add_big = add_big;
115
+ f->add_str = add_str;
116
+ f->open_array = open_array;
117
+ f->close_array = close_array;
118
+ f->open_object = open_object;
119
+ f->close_object = close_object;
120
+ }
121
+ p->option = option;
122
+ p->result = result;
123
+ p->free = dfree;
124
+ p->mark = mark;
125
+ p->start = start;
126
+ }