oj 2.18.3 → 3.13.14
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +1324 -0
- data/README.md +51 -204
- data/RELEASE_NOTES.md +61 -0
- data/ext/oj/buf.h +49 -72
- data/ext/oj/cache.c +326 -0
- data/ext/oj/cache.h +21 -0
- data/ext/oj/cache8.c +61 -64
- data/ext/oj/cache8.h +12 -39
- data/ext/oj/circarray.c +37 -68
- data/ext/oj/circarray.h +16 -42
- data/ext/oj/code.c +221 -0
- data/ext/oj/code.h +40 -0
- data/ext/oj/compat.c +231 -107
- data/ext/oj/custom.c +1125 -0
- data/ext/oj/debug.c +132 -0
- data/ext/oj/dump.c +935 -2513
- data/ext/oj/dump.h +108 -0
- data/ext/oj/dump_compat.c +936 -0
- data/ext/oj/dump_leaf.c +164 -0
- data/ext/oj/dump_object.c +761 -0
- data/ext/oj/dump_strict.c +410 -0
- data/ext/oj/encode.h +7 -42
- data/ext/oj/encoder.c +43 -0
- data/ext/oj/err.c +40 -54
- data/ext/oj/err.h +52 -46
- data/ext/oj/extconf.rb +21 -30
- data/ext/oj/fast.c +1097 -1080
- data/ext/oj/intern.c +301 -0
- data/ext/oj/intern.h +26 -0
- data/ext/oj/mimic_json.c +893 -0
- data/ext/oj/object.c +549 -620
- data/ext/oj/odd.c +155 -167
- data/ext/oj/odd.h +37 -63
- data/ext/oj/oj.c +1661 -2063
- data/ext/oj/oj.h +341 -270
- data/ext/oj/parse.c +974 -737
- data/ext/oj/parse.h +105 -97
- data/ext/oj/parser.c +1526 -0
- data/ext/oj/parser.h +90 -0
- data/ext/oj/rails.c +1504 -0
- data/ext/oj/rails.h +18 -0
- data/ext/oj/reader.c +141 -163
- data/ext/oj/reader.h +75 -113
- data/ext/oj/resolve.c +45 -93
- data/ext/oj/resolve.h +7 -34
- data/ext/oj/rxclass.c +143 -0
- data/ext/oj/rxclass.h +26 -0
- data/ext/oj/saj.c +447 -511
- data/ext/oj/saj2.c +348 -0
- data/ext/oj/scp.c +91 -138
- data/ext/oj/sparse.c +793 -644
- data/ext/oj/stream_writer.c +331 -0
- data/ext/oj/strict.c +145 -109
- data/ext/oj/string_writer.c +493 -0
- data/ext/oj/trace.c +72 -0
- data/ext/oj/trace.h +28 -0
- data/ext/oj/usual.c +1254 -0
- data/ext/oj/util.c +136 -0
- data/ext/oj/util.h +20 -0
- data/ext/oj/val_stack.c +62 -70
- data/ext/oj/val_stack.h +95 -129
- data/ext/oj/validate.c +51 -0
- data/ext/oj/wab.c +622 -0
- data/lib/oj/bag.rb +1 -0
- data/lib/oj/easy_hash.rb +17 -8
- data/lib/oj/error.rb +10 -11
- data/lib/oj/json.rb +176 -0
- data/lib/oj/mimic.rb +158 -19
- data/lib/oj/state.rb +132 -0
- data/lib/oj/version.rb +2 -2
- data/lib/oj.rb +1 -31
- data/pages/Advanced.md +22 -0
- data/pages/Compatibility.md +25 -0
- data/pages/Custom.md +23 -0
- data/pages/Encoding.md +65 -0
- data/pages/JsonGem.md +94 -0
- data/pages/Modes.md +161 -0
- data/pages/Options.md +327 -0
- data/pages/Parser.md +309 -0
- data/pages/Rails.md +167 -0
- data/pages/Security.md +20 -0
- data/pages/WAB.md +13 -0
- data/test/activerecord/result_test.rb +32 -0
- data/test/activesupport4/decoding_test.rb +108 -0
- data/test/activesupport4/encoding_test.rb +531 -0
- data/test/activesupport4/test_helper.rb +41 -0
- data/test/activesupport5/abstract_unit.rb +45 -0
- data/test/activesupport5/decoding_test.rb +133 -0
- data/test/activesupport5/encoding_test.rb +500 -0
- data/test/activesupport5/encoding_test_cases.rb +98 -0
- data/test/activesupport5/test_helper.rb +72 -0
- data/test/activesupport5/time_zone_test_helpers.rb +39 -0
- data/test/activesupport6/abstract_unit.rb +44 -0
- data/test/activesupport6/decoding_test.rb +133 -0
- data/test/activesupport6/encoding_test.rb +507 -0
- data/test/activesupport6/encoding_test_cases.rb +98 -0
- data/test/activesupport6/test_common.rb +17 -0
- data/test/activesupport6/test_helper.rb +163 -0
- data/test/activesupport6/time_zone_test_helpers.rb +39 -0
- data/test/activesupport7/abstract_unit.rb +49 -0
- data/test/activesupport7/decoding_test.rb +125 -0
- data/test/activesupport7/encoding_test.rb +486 -0
- data/test/activesupport7/encoding_test_cases.rb +104 -0
- data/test/activesupport7/time_zone_test_helpers.rb +47 -0
- data/test/bar.rb +9 -0
- data/test/baz.rb +16 -0
- data/test/bug.rb +11 -46
- data/test/foo.rb +69 -16
- data/test/helper.rb +10 -1
- data/test/isolated/shared.rb +12 -8
- data/test/isolated/test_mimic_rails_after.rb +3 -3
- data/test/isolated/test_mimic_rails_before.rb +3 -3
- data/test/json_gem/json_addition_test.rb +216 -0
- data/test/json_gem/json_common_interface_test.rb +153 -0
- data/test/json_gem/json_encoding_test.rb +107 -0
- data/test/json_gem/json_ext_parser_test.rb +20 -0
- data/test/json_gem/json_fixtures_test.rb +35 -0
- data/test/json_gem/json_generator_test.rb +397 -0
- data/test/json_gem/json_generic_object_test.rb +90 -0
- data/test/json_gem/json_parser_test.rb +470 -0
- data/test/json_gem/json_string_matching_test.rb +42 -0
- data/test/json_gem/test_helper.rb +26 -0
- data/test/mem.rb +33 -0
- data/test/perf.rb +1 -1
- data/test/perf_compat.rb +30 -28
- data/test/perf_dump.rb +50 -0
- data/test/perf_object.rb +1 -1
- data/test/perf_once.rb +58 -0
- data/test/perf_parser.rb +189 -0
- data/test/perf_scp.rb +11 -10
- data/test/perf_strict.rb +30 -19
- data/test/perf_wab.rb +131 -0
- data/test/prec.rb +23 -0
- data/test/sample.rb +0 -1
- data/test/sample_json.rb +1 -1
- data/test/test_compat.rb +219 -102
- data/test/test_custom.rb +533 -0
- data/test/test_fast.rb +107 -35
- data/test/test_file.rb +19 -25
- data/test/test_generate.rb +21 -0
- data/test/test_hash.rb +11 -1
- data/test/test_integer_range.rb +72 -0
- data/test/test_null.rb +376 -0
- data/test/test_object.rb +357 -70
- data/test/test_parser.rb +27 -0
- data/test/test_parser_saj.rb +245 -0
- data/test/test_parser_usual.rb +217 -0
- data/test/test_rails.rb +35 -0
- data/test/test_saj.rb +1 -1
- data/test/test_scp.rb +39 -2
- data/test/test_strict.rb +186 -7
- data/test/test_various.rb +160 -774
- data/test/test_wab.rb +307 -0
- data/test/test_writer.rb +90 -2
- data/test/tests.rb +24 -0
- data/test/tests_mimic.rb +14 -0
- data/test/tests_mimic_addition.rb +7 -0
- data/test/zoo.rb +13 -0
- metadata +194 -56
- data/ext/oj/hash.c +0 -163
- data/ext/oj/hash.h +0 -46
- data/ext/oj/hash_test.c +0 -512
- data/test/activesupport_datetime_test.rb +0 -23
- data/test/bug2.rb +0 -10
- data/test/bug3.rb +0 -46
- data/test/bug_fast.rb +0 -32
- data/test/bug_load.rb +0 -24
- data/test/crash.rb +0 -111
- data/test/curl/curl_oj.rb +0 -46
- data/test/curl/get_oj.rb +0 -24
- data/test/curl/just_curl.rb +0 -31
- data/test/curl/just_oj.rb +0 -51
- data/test/example.rb +0 -11
- data/test/io.rb +0 -48
- data/test/isolated/test_mimic_rails_datetime.rb +0 -27
- data/test/mod.rb +0 -16
- data/test/rails.rb +0 -50
- data/test/russian.rb +0 -18
- data/test/struct.rb +0 -29
- data/test/test_serializer.rb +0 -59
- data/test/write_timebars.rb +0 -31
metadata
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: oj
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.13.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Ohler
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-06-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake-compiler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0.9'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '2.0'
|
|
20
23
|
type: :development
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- - "
|
|
27
|
+
- - ">="
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
29
|
version: '0.9'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.0'
|
|
27
33
|
- !ruby/object:Gem::Dependency
|
|
28
34
|
name: minitest
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,44 +45,72 @@ dependencies:
|
|
|
39
45
|
- !ruby/object:Gem::Version
|
|
40
46
|
version: '5'
|
|
41
47
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
48
|
+
name: test-unit
|
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
|
44
50
|
requirements:
|
|
45
51
|
- - "~>"
|
|
46
52
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
53
|
+
version: '3.0'
|
|
48
54
|
type: :development
|
|
49
55
|
prerelease: false
|
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
57
|
requirements:
|
|
52
58
|
- - "~>"
|
|
53
59
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
55
|
-
description:
|
|
60
|
+
version: '3.0'
|
|
61
|
+
description: The fastest JSON parser and object serializer.
|
|
56
62
|
email: peter@ohler.com
|
|
57
63
|
executables: []
|
|
58
64
|
extensions:
|
|
59
65
|
- ext/oj/extconf.rb
|
|
60
66
|
extra_rdoc_files:
|
|
61
67
|
- README.md
|
|
68
|
+
- LICENSE
|
|
69
|
+
- CHANGELOG.md
|
|
70
|
+
- RELEASE_NOTES.md
|
|
71
|
+
- pages/Advanced.md
|
|
72
|
+
- pages/Compatibility.md
|
|
73
|
+
- pages/Custom.md
|
|
74
|
+
- pages/Encoding.md
|
|
75
|
+
- pages/JsonGem.md
|
|
76
|
+
- pages/Modes.md
|
|
77
|
+
- pages/Options.md
|
|
78
|
+
- pages/Parser.md
|
|
79
|
+
- pages/Rails.md
|
|
80
|
+
- pages/Security.md
|
|
81
|
+
- pages/WAB.md
|
|
62
82
|
files:
|
|
83
|
+
- CHANGELOG.md
|
|
63
84
|
- LICENSE
|
|
64
85
|
- README.md
|
|
86
|
+
- RELEASE_NOTES.md
|
|
65
87
|
- ext/oj/buf.h
|
|
88
|
+
- ext/oj/cache.c
|
|
89
|
+
- ext/oj/cache.h
|
|
66
90
|
- ext/oj/cache8.c
|
|
67
91
|
- ext/oj/cache8.h
|
|
68
92
|
- ext/oj/circarray.c
|
|
69
93
|
- ext/oj/circarray.h
|
|
94
|
+
- ext/oj/code.c
|
|
95
|
+
- ext/oj/code.h
|
|
70
96
|
- ext/oj/compat.c
|
|
97
|
+
- ext/oj/custom.c
|
|
98
|
+
- ext/oj/debug.c
|
|
71
99
|
- ext/oj/dump.c
|
|
100
|
+
- ext/oj/dump.h
|
|
101
|
+
- ext/oj/dump_compat.c
|
|
102
|
+
- ext/oj/dump_leaf.c
|
|
103
|
+
- ext/oj/dump_object.c
|
|
104
|
+
- ext/oj/dump_strict.c
|
|
72
105
|
- ext/oj/encode.h
|
|
106
|
+
- ext/oj/encoder.c
|
|
73
107
|
- ext/oj/err.c
|
|
74
108
|
- ext/oj/err.h
|
|
75
109
|
- ext/oj/extconf.rb
|
|
76
110
|
- ext/oj/fast.c
|
|
77
|
-
- ext/oj/
|
|
78
|
-
- ext/oj/
|
|
79
|
-
- ext/oj/
|
|
111
|
+
- ext/oj/intern.c
|
|
112
|
+
- ext/oj/intern.h
|
|
113
|
+
- ext/oj/mimic_json.c
|
|
80
114
|
- ext/oj/object.c
|
|
81
115
|
- ext/oj/odd.c
|
|
82
116
|
- ext/oj/odd.h
|
|
@@ -84,44 +118,85 @@ files:
|
|
|
84
118
|
- ext/oj/oj.h
|
|
85
119
|
- ext/oj/parse.c
|
|
86
120
|
- ext/oj/parse.h
|
|
121
|
+
- ext/oj/parser.c
|
|
122
|
+
- ext/oj/parser.h
|
|
123
|
+
- ext/oj/rails.c
|
|
124
|
+
- ext/oj/rails.h
|
|
87
125
|
- ext/oj/reader.c
|
|
88
126
|
- ext/oj/reader.h
|
|
89
127
|
- ext/oj/resolve.c
|
|
90
128
|
- ext/oj/resolve.h
|
|
129
|
+
- ext/oj/rxclass.c
|
|
130
|
+
- ext/oj/rxclass.h
|
|
91
131
|
- ext/oj/saj.c
|
|
132
|
+
- ext/oj/saj2.c
|
|
92
133
|
- ext/oj/scp.c
|
|
93
134
|
- ext/oj/sparse.c
|
|
135
|
+
- ext/oj/stream_writer.c
|
|
94
136
|
- ext/oj/strict.c
|
|
137
|
+
- ext/oj/string_writer.c
|
|
138
|
+
- ext/oj/trace.c
|
|
139
|
+
- ext/oj/trace.h
|
|
140
|
+
- ext/oj/usual.c
|
|
141
|
+
- ext/oj/util.c
|
|
142
|
+
- ext/oj/util.h
|
|
95
143
|
- ext/oj/val_stack.c
|
|
96
144
|
- ext/oj/val_stack.h
|
|
145
|
+
- ext/oj/validate.c
|
|
146
|
+
- ext/oj/wab.c
|
|
97
147
|
- lib/oj.rb
|
|
98
148
|
- lib/oj/active_support_helper.rb
|
|
99
149
|
- lib/oj/bag.rb
|
|
100
150
|
- lib/oj/easy_hash.rb
|
|
101
151
|
- lib/oj/error.rb
|
|
152
|
+
- lib/oj/json.rb
|
|
102
153
|
- lib/oj/mimic.rb
|
|
103
154
|
- lib/oj/saj.rb
|
|
104
155
|
- lib/oj/schandler.rb
|
|
156
|
+
- lib/oj/state.rb
|
|
105
157
|
- lib/oj/version.rb
|
|
158
|
+
- pages/Advanced.md
|
|
159
|
+
- pages/Compatibility.md
|
|
160
|
+
- pages/Custom.md
|
|
161
|
+
- pages/Encoding.md
|
|
162
|
+
- pages/JsonGem.md
|
|
163
|
+
- pages/Modes.md
|
|
164
|
+
- pages/Options.md
|
|
165
|
+
- pages/Parser.md
|
|
166
|
+
- pages/Rails.md
|
|
167
|
+
- pages/Security.md
|
|
168
|
+
- pages/WAB.md
|
|
106
169
|
- test/_test_active.rb
|
|
107
170
|
- test/_test_active_mimic.rb
|
|
108
171
|
- test/_test_mimic_rails.rb
|
|
109
|
-
- test/
|
|
172
|
+
- test/activerecord/result_test.rb
|
|
173
|
+
- test/activesupport4/decoding_test.rb
|
|
174
|
+
- test/activesupport4/encoding_test.rb
|
|
175
|
+
- test/activesupport4/test_helper.rb
|
|
176
|
+
- test/activesupport5/abstract_unit.rb
|
|
177
|
+
- test/activesupport5/decoding_test.rb
|
|
178
|
+
- test/activesupport5/encoding_test.rb
|
|
179
|
+
- test/activesupport5/encoding_test_cases.rb
|
|
180
|
+
- test/activesupport5/test_helper.rb
|
|
181
|
+
- test/activesupport5/time_zone_test_helpers.rb
|
|
182
|
+
- test/activesupport6/abstract_unit.rb
|
|
183
|
+
- test/activesupport6/decoding_test.rb
|
|
184
|
+
- test/activesupport6/encoding_test.rb
|
|
185
|
+
- test/activesupport6/encoding_test_cases.rb
|
|
186
|
+
- test/activesupport6/test_common.rb
|
|
187
|
+
- test/activesupport6/test_helper.rb
|
|
188
|
+
- test/activesupport6/time_zone_test_helpers.rb
|
|
189
|
+
- test/activesupport7/abstract_unit.rb
|
|
190
|
+
- test/activesupport7/decoding_test.rb
|
|
191
|
+
- test/activesupport7/encoding_test.rb
|
|
192
|
+
- test/activesupport7/encoding_test_cases.rb
|
|
193
|
+
- test/activesupport7/time_zone_test_helpers.rb
|
|
194
|
+
- test/bar.rb
|
|
195
|
+
- test/baz.rb
|
|
110
196
|
- test/bug.rb
|
|
111
|
-
- test/bug2.rb
|
|
112
|
-
- test/bug3.rb
|
|
113
|
-
- test/bug_fast.rb
|
|
114
|
-
- test/bug_load.rb
|
|
115
|
-
- test/crash.rb
|
|
116
|
-
- test/curl/curl_oj.rb
|
|
117
|
-
- test/curl/get_oj.rb
|
|
118
|
-
- test/curl/just_curl.rb
|
|
119
|
-
- test/curl/just_oj.rb
|
|
120
|
-
- test/example.rb
|
|
121
197
|
- test/files.rb
|
|
122
198
|
- test/foo.rb
|
|
123
199
|
- test/helper.rb
|
|
124
|
-
- test/io.rb
|
|
125
200
|
- test/isolated/shared.rb
|
|
126
201
|
- test/isolated/test_mimic_after.rb
|
|
127
202
|
- test/isolated/test_mimic_alone.rb
|
|
@@ -130,20 +205,32 @@ files:
|
|
|
130
205
|
- test/isolated/test_mimic_define.rb
|
|
131
206
|
- test/isolated/test_mimic_rails_after.rb
|
|
132
207
|
- test/isolated/test_mimic_rails_before.rb
|
|
133
|
-
- test/isolated/test_mimic_rails_datetime.rb
|
|
134
208
|
- test/isolated/test_mimic_redefine.rb
|
|
135
|
-
- test/
|
|
209
|
+
- test/json_gem/json_addition_test.rb
|
|
210
|
+
- test/json_gem/json_common_interface_test.rb
|
|
211
|
+
- test/json_gem/json_encoding_test.rb
|
|
212
|
+
- test/json_gem/json_ext_parser_test.rb
|
|
213
|
+
- test/json_gem/json_fixtures_test.rb
|
|
214
|
+
- test/json_gem/json_generator_test.rb
|
|
215
|
+
- test/json_gem/json_generic_object_test.rb
|
|
216
|
+
- test/json_gem/json_parser_test.rb
|
|
217
|
+
- test/json_gem/json_string_matching_test.rb
|
|
218
|
+
- test/json_gem/test_helper.rb
|
|
219
|
+
- test/mem.rb
|
|
136
220
|
- test/perf.rb
|
|
137
221
|
- test/perf_compat.rb
|
|
222
|
+
- test/perf_dump.rb
|
|
138
223
|
- test/perf_fast.rb
|
|
139
224
|
- test/perf_file.rb
|
|
140
225
|
- test/perf_object.rb
|
|
226
|
+
- test/perf_once.rb
|
|
227
|
+
- test/perf_parser.rb
|
|
141
228
|
- test/perf_saj.rb
|
|
142
229
|
- test/perf_scp.rb
|
|
143
230
|
- test/perf_simple.rb
|
|
144
231
|
- test/perf_strict.rb
|
|
145
|
-
- test/
|
|
146
|
-
- test/
|
|
232
|
+
- test/perf_wab.rb
|
|
233
|
+
- test/prec.rb
|
|
147
234
|
- test/sample.rb
|
|
148
235
|
- test/sample/change.rb
|
|
149
236
|
- test/sample/dir.rb
|
|
@@ -158,27 +245,45 @@ files:
|
|
|
158
245
|
- test/sample/shape.rb
|
|
159
246
|
- test/sample/text.rb
|
|
160
247
|
- test/sample_json.rb
|
|
161
|
-
- test/struct.rb
|
|
162
248
|
- test/test_compat.rb
|
|
249
|
+
- test/test_custom.rb
|
|
163
250
|
- test/test_debian.rb
|
|
164
251
|
- test/test_fast.rb
|
|
165
252
|
- test/test_file.rb
|
|
166
253
|
- test/test_gc.rb
|
|
254
|
+
- test/test_generate.rb
|
|
167
255
|
- test/test_hash.rb
|
|
256
|
+
- test/test_integer_range.rb
|
|
257
|
+
- test/test_null.rb
|
|
168
258
|
- test/test_object.rb
|
|
259
|
+
- test/test_parser.rb
|
|
260
|
+
- test/test_parser_saj.rb
|
|
261
|
+
- test/test_parser_usual.rb
|
|
262
|
+
- test/test_rails.rb
|
|
169
263
|
- test/test_saj.rb
|
|
170
264
|
- test/test_scp.rb
|
|
171
|
-
- test/test_serializer.rb
|
|
172
265
|
- test/test_strict.rb
|
|
173
266
|
- test/test_various.rb
|
|
267
|
+
- test/test_wab.rb
|
|
174
268
|
- test/test_writer.rb
|
|
175
|
-
- test/
|
|
269
|
+
- test/tests.rb
|
|
270
|
+
- test/tests_mimic.rb
|
|
271
|
+
- test/tests_mimic_addition.rb
|
|
272
|
+
- test/zoo.rb
|
|
176
273
|
homepage: http://www.ohler.com/oj
|
|
177
274
|
licenses:
|
|
178
275
|
- MIT
|
|
179
|
-
metadata:
|
|
180
|
-
|
|
276
|
+
metadata:
|
|
277
|
+
bug_tracker_uri: https://github.com/ohler55/oj/issues
|
|
278
|
+
changelog_uri: https://github.com/ohler55/oj/blob/master/CHANGELOG.md
|
|
279
|
+
documentation_uri: http://www.ohler.com/oj/doc/index.html
|
|
280
|
+
homepage_uri: http://www.ohler.com/oj/
|
|
281
|
+
source_code_uri: https://github.com/ohler55/oj
|
|
282
|
+
wiki_uri: https://github.com/ohler55/oj/wiki
|
|
283
|
+
post_install_message:
|
|
181
284
|
rdoc_options:
|
|
285
|
+
- "--title"
|
|
286
|
+
- Oj
|
|
182
287
|
- "--main"
|
|
183
288
|
- README.md
|
|
184
289
|
require_paths:
|
|
@@ -187,38 +292,49 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
187
292
|
requirements:
|
|
188
293
|
- - ">="
|
|
189
294
|
- !ruby/object:Gem::Version
|
|
190
|
-
version: '
|
|
295
|
+
version: '2.4'
|
|
191
296
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
297
|
requirements:
|
|
193
298
|
- - ">="
|
|
194
299
|
- !ruby/object:Gem::Version
|
|
195
300
|
version: '0'
|
|
196
301
|
requirements: []
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
signing_key:
|
|
302
|
+
rubygems_version: 3.3.3
|
|
303
|
+
signing_key:
|
|
200
304
|
specification_version: 4
|
|
201
305
|
summary: A fast JSON parser and serializer.
|
|
202
306
|
test_files:
|
|
203
307
|
- test/_test_active.rb
|
|
204
308
|
- test/_test_active_mimic.rb
|
|
205
309
|
- test/_test_mimic_rails.rb
|
|
206
|
-
- test/
|
|
310
|
+
- test/activerecord/result_test.rb
|
|
311
|
+
- test/activesupport4/decoding_test.rb
|
|
312
|
+
- test/activesupport4/encoding_test.rb
|
|
313
|
+
- test/activesupport4/test_helper.rb
|
|
314
|
+
- test/activesupport5/abstract_unit.rb
|
|
315
|
+
- test/activesupport5/decoding_test.rb
|
|
316
|
+
- test/activesupport5/encoding_test.rb
|
|
317
|
+
- test/activesupport5/encoding_test_cases.rb
|
|
318
|
+
- test/activesupport5/test_helper.rb
|
|
319
|
+
- test/activesupport5/time_zone_test_helpers.rb
|
|
320
|
+
- test/activesupport6/abstract_unit.rb
|
|
321
|
+
- test/activesupport6/decoding_test.rb
|
|
322
|
+
- test/activesupport6/encoding_test.rb
|
|
323
|
+
- test/activesupport6/encoding_test_cases.rb
|
|
324
|
+
- test/activesupport6/test_common.rb
|
|
325
|
+
- test/activesupport6/test_helper.rb
|
|
326
|
+
- test/activesupport6/time_zone_test_helpers.rb
|
|
327
|
+
- test/activesupport7/abstract_unit.rb
|
|
328
|
+
- test/activesupport7/decoding_test.rb
|
|
329
|
+
- test/activesupport7/encoding_test.rb
|
|
330
|
+
- test/activesupport7/encoding_test_cases.rb
|
|
331
|
+
- test/activesupport7/time_zone_test_helpers.rb
|
|
332
|
+
- test/bar.rb
|
|
333
|
+
- test/baz.rb
|
|
207
334
|
- test/bug.rb
|
|
208
|
-
- test/bug2.rb
|
|
209
|
-
- test/bug3.rb
|
|
210
|
-
- test/bug_fast.rb
|
|
211
|
-
- test/bug_load.rb
|
|
212
|
-
- test/crash.rb
|
|
213
|
-
- test/curl/curl_oj.rb
|
|
214
|
-
- test/curl/get_oj.rb
|
|
215
|
-
- test/curl/just_curl.rb
|
|
216
|
-
- test/curl/just_oj.rb
|
|
217
|
-
- test/example.rb
|
|
218
335
|
- test/files.rb
|
|
219
336
|
- test/foo.rb
|
|
220
337
|
- test/helper.rb
|
|
221
|
-
- test/io.rb
|
|
222
338
|
- test/isolated/shared.rb
|
|
223
339
|
- test/isolated/test_mimic_after.rb
|
|
224
340
|
- test/isolated/test_mimic_alone.rb
|
|
@@ -227,20 +343,32 @@ test_files:
|
|
|
227
343
|
- test/isolated/test_mimic_define.rb
|
|
228
344
|
- test/isolated/test_mimic_rails_after.rb
|
|
229
345
|
- test/isolated/test_mimic_rails_before.rb
|
|
230
|
-
- test/isolated/test_mimic_rails_datetime.rb
|
|
231
346
|
- test/isolated/test_mimic_redefine.rb
|
|
232
|
-
- test/
|
|
347
|
+
- test/json_gem/json_addition_test.rb
|
|
348
|
+
- test/json_gem/json_common_interface_test.rb
|
|
349
|
+
- test/json_gem/json_encoding_test.rb
|
|
350
|
+
- test/json_gem/json_ext_parser_test.rb
|
|
351
|
+
- test/json_gem/json_fixtures_test.rb
|
|
352
|
+
- test/json_gem/json_generator_test.rb
|
|
353
|
+
- test/json_gem/json_generic_object_test.rb
|
|
354
|
+
- test/json_gem/json_parser_test.rb
|
|
355
|
+
- test/json_gem/json_string_matching_test.rb
|
|
356
|
+
- test/json_gem/test_helper.rb
|
|
357
|
+
- test/mem.rb
|
|
233
358
|
- test/perf.rb
|
|
234
359
|
- test/perf_compat.rb
|
|
360
|
+
- test/perf_dump.rb
|
|
235
361
|
- test/perf_fast.rb
|
|
236
362
|
- test/perf_file.rb
|
|
237
363
|
- test/perf_object.rb
|
|
364
|
+
- test/perf_once.rb
|
|
365
|
+
- test/perf_parser.rb
|
|
238
366
|
- test/perf_saj.rb
|
|
239
367
|
- test/perf_scp.rb
|
|
240
368
|
- test/perf_simple.rb
|
|
241
369
|
- test/perf_strict.rb
|
|
242
|
-
- test/
|
|
243
|
-
- test/
|
|
370
|
+
- test/perf_wab.rb
|
|
371
|
+
- test/prec.rb
|
|
244
372
|
- test/sample/change.rb
|
|
245
373
|
- test/sample/dir.rb
|
|
246
374
|
- test/sample/doc.rb
|
|
@@ -255,18 +383,28 @@ test_files:
|
|
|
255
383
|
- test/sample/text.rb
|
|
256
384
|
- test/sample.rb
|
|
257
385
|
- test/sample_json.rb
|
|
258
|
-
- test/struct.rb
|
|
259
386
|
- test/test_compat.rb
|
|
387
|
+
- test/test_custom.rb
|
|
260
388
|
- test/test_debian.rb
|
|
261
389
|
- test/test_fast.rb
|
|
262
390
|
- test/test_file.rb
|
|
263
391
|
- test/test_gc.rb
|
|
392
|
+
- test/test_generate.rb
|
|
264
393
|
- test/test_hash.rb
|
|
394
|
+
- test/test_integer_range.rb
|
|
395
|
+
- test/test_null.rb
|
|
265
396
|
- test/test_object.rb
|
|
397
|
+
- test/test_parser.rb
|
|
398
|
+
- test/test_parser_saj.rb
|
|
399
|
+
- test/test_parser_usual.rb
|
|
400
|
+
- test/test_rails.rb
|
|
266
401
|
- test/test_saj.rb
|
|
267
402
|
- test/test_scp.rb
|
|
268
|
-
- test/test_serializer.rb
|
|
269
403
|
- test/test_strict.rb
|
|
270
404
|
- test/test_various.rb
|
|
405
|
+
- test/test_wab.rb
|
|
271
406
|
- test/test_writer.rb
|
|
272
|
-
- test/
|
|
407
|
+
- test/tests.rb
|
|
408
|
+
- test/tests_mimic.rb
|
|
409
|
+
- test/tests_mimic_addition.rb
|
|
410
|
+
- test/zoo.rb
|
data/ext/oj/hash.c
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/* hash.c
|
|
2
|
-
* Copyright (c) 2011, Peter Ohler
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Redistribution and use in source and binary forms, with or without
|
|
6
|
-
* modification, are permitted provided that the following conditions are met:
|
|
7
|
-
*
|
|
8
|
-
* - Redistributions of source code must retain the above copyright notice, this
|
|
9
|
-
* list of conditions and the following disclaimer.
|
|
10
|
-
*
|
|
11
|
-
* - Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
-
* this list of conditions and the following disclaimer in the documentation
|
|
13
|
-
* and/or other materials provided with the distribution.
|
|
14
|
-
*
|
|
15
|
-
* - Neither the name of Peter Ohler nor the names of its contributors may be
|
|
16
|
-
* used to endorse or promote products derived from this software without
|
|
17
|
-
* specific prior written permission.
|
|
18
|
-
*
|
|
19
|
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
-
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
-
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
-
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
-
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
-
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
-
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
-
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
-
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
#include "hash.h"
|
|
32
|
-
#include <stdint.h>
|
|
33
|
-
|
|
34
|
-
#define HASH_MASK 0x000003FF
|
|
35
|
-
#define HASH_SLOT_CNT 1024
|
|
36
|
-
|
|
37
|
-
typedef struct _KeyVal {
|
|
38
|
-
struct _KeyVal *next;
|
|
39
|
-
const char *key;
|
|
40
|
-
size_t len;
|
|
41
|
-
VALUE val;
|
|
42
|
-
} *KeyVal;
|
|
43
|
-
|
|
44
|
-
struct _Hash {
|
|
45
|
-
struct _KeyVal slots[HASH_SLOT_CNT];
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
struct _Hash class_hash;
|
|
49
|
-
struct _Hash intern_hash;
|
|
50
|
-
|
|
51
|
-
// almost the Murmur hash algorithm
|
|
52
|
-
#define M 0x5bd1e995
|
|
53
|
-
#define C1 0xCC9E2D51
|
|
54
|
-
#define C2 0x1B873593
|
|
55
|
-
#define N 0xE6546B64
|
|
56
|
-
|
|
57
|
-
static uint32_t
|
|
58
|
-
hash_calc(const uint8_t *key, size_t len) {
|
|
59
|
-
const uint8_t *end = key + len;
|
|
60
|
-
const uint8_t *endless = key + (len / 4 * 4);
|
|
61
|
-
uint32_t h = (uint32_t)len;
|
|
62
|
-
uint32_t k;
|
|
63
|
-
|
|
64
|
-
while (key < endless) {
|
|
65
|
-
k = (uint32_t)*key++;
|
|
66
|
-
k |= (uint32_t)*key++ << 8;
|
|
67
|
-
k |= (uint32_t)*key++ << 16;
|
|
68
|
-
k |= (uint32_t)*key++ << 24;
|
|
69
|
-
|
|
70
|
-
k *= M;
|
|
71
|
-
k ^= k >> 24;
|
|
72
|
-
h *= M;
|
|
73
|
-
h ^= k * M;
|
|
74
|
-
}
|
|
75
|
-
if (1 < end - key) {
|
|
76
|
-
uint16_t k16 = (uint16_t)*key++;
|
|
77
|
-
|
|
78
|
-
k16 |= (uint16_t)*key++ << 8;
|
|
79
|
-
h ^= k16 << 8;
|
|
80
|
-
}
|
|
81
|
-
if (key < end) {
|
|
82
|
-
h ^= *key;
|
|
83
|
-
}
|
|
84
|
-
h *= M;
|
|
85
|
-
h ^= h >> 13;
|
|
86
|
-
h *= M;
|
|
87
|
-
h ^= h >> 15;
|
|
88
|
-
|
|
89
|
-
return h;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
void
|
|
93
|
-
oj_hash_init() {
|
|
94
|
-
memset(class_hash.slots, 0, sizeof(class_hash.slots));
|
|
95
|
-
memset(intern_hash.slots, 0, sizeof(intern_hash.slots));
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// if slotp is 0 then just lookup
|
|
99
|
-
static VALUE
|
|
100
|
-
hash_get(Hash hash, const char *key, size_t len, VALUE **slotp, VALUE def_value) {
|
|
101
|
-
uint32_t h = hash_calc((const uint8_t*)key, len) & HASH_MASK;
|
|
102
|
-
KeyVal bucket = hash->slots + h;
|
|
103
|
-
|
|
104
|
-
if (0 != bucket->key) {
|
|
105
|
-
KeyVal b;
|
|
106
|
-
|
|
107
|
-
for (b = bucket; 0 != b; b = b->next) {
|
|
108
|
-
if (len == b->len && 0 == strncmp(b->key, key, len)) {
|
|
109
|
-
*slotp = &b->val;
|
|
110
|
-
return b->val;
|
|
111
|
-
}
|
|
112
|
-
bucket = b;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (0 != slotp) {
|
|
116
|
-
if (0 != bucket->key) {
|
|
117
|
-
KeyVal b = ALLOC(struct _KeyVal);
|
|
118
|
-
|
|
119
|
-
b->next = 0;
|
|
120
|
-
bucket->next = b;
|
|
121
|
-
bucket = b;
|
|
122
|
-
}
|
|
123
|
-
bucket->key = oj_strndup(key, len);
|
|
124
|
-
bucket->len = len;
|
|
125
|
-
bucket->val = def_value;
|
|
126
|
-
*slotp = &bucket->val;
|
|
127
|
-
}
|
|
128
|
-
return def_value;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
void
|
|
132
|
-
oj_hash_print() {
|
|
133
|
-
int i;
|
|
134
|
-
KeyVal b;
|
|
135
|
-
|
|
136
|
-
for (i = 0; i < HASH_SLOT_CNT; i++) {
|
|
137
|
-
printf("%4d:", i);
|
|
138
|
-
for (b = class_hash.slots + i; 0 != b && 0 != b->key; b = b->next) {
|
|
139
|
-
printf(" %s", b->key);
|
|
140
|
-
}
|
|
141
|
-
printf("\n");
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
VALUE
|
|
146
|
-
oj_class_hash_get(const char *key, size_t len, VALUE **slotp) {
|
|
147
|
-
return hash_get(&class_hash, key, len, slotp, Qnil);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
ID
|
|
151
|
-
oj_attr_hash_get(const char *key, size_t len, ID **slotp) {
|
|
152
|
-
return (ID)hash_get(&intern_hash, key, len, (VALUE**)slotp, 0);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
char*
|
|
156
|
-
oj_strndup(const char *s, size_t len) {
|
|
157
|
-
char *d = ALLOC_N(char, len + 1);
|
|
158
|
-
|
|
159
|
-
memcpy(d, s, len);
|
|
160
|
-
d[len] = '\0';
|
|
161
|
-
|
|
162
|
-
return d;
|
|
163
|
-
}
|
data/ext/oj/hash.h
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/* hash.h
|
|
2
|
-
* Copyright (c) 2011, Peter Ohler
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Redistribution and use in source and binary forms, with or without
|
|
6
|
-
* modification, are permitted provided that the following conditions are met:
|
|
7
|
-
*
|
|
8
|
-
* - Redistributions of source code must retain the above copyright notice, this
|
|
9
|
-
* list of conditions and the following disclaimer.
|
|
10
|
-
*
|
|
11
|
-
* - Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
-
* this list of conditions and the following disclaimer in the documentation
|
|
13
|
-
* and/or other materials provided with the distribution.
|
|
14
|
-
*
|
|
15
|
-
* - Neither the name of Peter Ohler nor the names of its contributors may be
|
|
16
|
-
* used to endorse or promote products derived from this software without
|
|
17
|
-
* specific prior written permission.
|
|
18
|
-
*
|
|
19
|
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
-
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
-
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
-
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
-
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
-
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
-
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
-
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
-
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
#ifndef __OJ_HASH_H__
|
|
32
|
-
#define __OJ_HASH_H__
|
|
33
|
-
|
|
34
|
-
#include "ruby.h"
|
|
35
|
-
|
|
36
|
-
typedef struct _Hash *Hash;
|
|
37
|
-
|
|
38
|
-
extern void oj_hash_init();
|
|
39
|
-
|
|
40
|
-
extern VALUE oj_class_hash_get(const char *key, size_t len, VALUE **slotp);
|
|
41
|
-
extern ID oj_attr_hash_get(const char *key, size_t len, ID **slotp);
|
|
42
|
-
|
|
43
|
-
extern void oj_hash_print();
|
|
44
|
-
extern char* oj_strndup(const char *s, size_t len);
|
|
45
|
-
|
|
46
|
-
#endif /* __OJ_HASH_H__ */
|