json 2.7.2 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/BSDL +22 -0
- data/CHANGES.md +82 -17
- data/LEGAL +60 -0
- data/README.md +15 -236
- data/ext/json/ext/fbuffer/fbuffer.h +112 -85
- data/ext/json/ext/generator/extconf.rb +8 -2
- data/ext/json/ext/generator/generator.c +818 -830
- data/ext/json/ext/parser/extconf.rb +6 -27
- data/ext/json/ext/parser/parser.c +1690 -671
- data/ext/json/ext/parser/parser.rl +825 -339
- data/json.gemspec +45 -49
- data/lib/json/add/bigdecimal.rb +2 -2
- data/lib/json/add/complex.rb +1 -1
- data/lib/json/add/core.rb +1 -1
- data/lib/json/add/date.rb +1 -1
- data/lib/json/add/date_time.rb +1 -1
- data/lib/json/add/exception.rb +1 -1
- data/lib/json/add/ostruct.rb +1 -1
- data/lib/json/add/range.rb +1 -1
- data/lib/json/add/rational.rb +1 -1
- data/lib/json/add/regexp.rb +1 -1
- data/lib/json/add/struct.rb +1 -1
- data/lib/json/add/symbol.rb +1 -2
- data/lib/json/add/time.rb +3 -10
- data/lib/json/common.rb +299 -101
- data/lib/json/ext/generator/state.rb +116 -0
- data/lib/json/ext.rb +13 -5
- data/lib/json/generic_object.rb +1 -1
- data/lib/json/{pure → truffle_ruby}/generator.rb +242 -126
- data/lib/json/version.rb +3 -7
- data/lib/json.rb +16 -21
- metadata +19 -21
- data/ext/json/ext/generator/depend +0 -1
- data/ext/json/ext/generator/generator.h +0 -177
- data/ext/json/ext/parser/depend +0 -1
- data/ext/json/ext/parser/parser.h +0 -96
- data/ext/json/extconf.rb +0 -3
- data/lib/json/pure/parser.rb +0 -337
- data/lib/json/pure.rb +0 -15
- /data/{LICENSE → COPYING} +0 -0
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
|
+
autorequire:
|
8
9
|
bindir: bin
|
9
10
|
cert_chain: []
|
10
|
-
date: 2024-
|
11
|
+
date: 2024-12-03 00:00:00.000000000 Z
|
11
12
|
dependencies: []
|
12
13
|
description: This is a JSON implementation as a Ruby extension in C.
|
13
14
|
email: flori@ping.de
|
@@ -15,24 +16,20 @@ executables: []
|
|
15
16
|
extensions:
|
16
17
|
- ext/json/ext/generator/extconf.rb
|
17
18
|
- ext/json/ext/parser/extconf.rb
|
18
|
-
- ext/json/extconf.rb
|
19
19
|
extra_rdoc_files:
|
20
20
|
- README.md
|
21
21
|
files:
|
22
|
+
- BSDL
|
22
23
|
- CHANGES.md
|
23
|
-
-
|
24
|
+
- COPYING
|
25
|
+
- LEGAL
|
24
26
|
- README.md
|
25
27
|
- ext/json/ext/fbuffer/fbuffer.h
|
26
|
-
- ext/json/ext/generator/depend
|
27
28
|
- ext/json/ext/generator/extconf.rb
|
28
29
|
- ext/json/ext/generator/generator.c
|
29
|
-
- ext/json/ext/generator/generator.h
|
30
|
-
- ext/json/ext/parser/depend
|
31
30
|
- ext/json/ext/parser/extconf.rb
|
32
31
|
- ext/json/ext/parser/parser.c
|
33
|
-
- ext/json/ext/parser/parser.h
|
34
32
|
- ext/json/ext/parser/parser.rl
|
35
|
-
- ext/json/extconf.rb
|
36
33
|
- json.gemspec
|
37
34
|
- lib/json.rb
|
38
35
|
- lib/json/add/bigdecimal.rb
|
@@ -51,21 +48,21 @@ files:
|
|
51
48
|
- lib/json/add/time.rb
|
52
49
|
- lib/json/common.rb
|
53
50
|
- lib/json/ext.rb
|
51
|
+
- lib/json/ext/generator/state.rb
|
54
52
|
- lib/json/generic_object.rb
|
55
|
-
- lib/json/
|
56
|
-
- lib/json/pure/generator.rb
|
57
|
-
- lib/json/pure/parser.rb
|
53
|
+
- lib/json/truffle_ruby/generator.rb
|
58
54
|
- lib/json/version.rb
|
59
|
-
homepage: https://
|
55
|
+
homepage: https://ruby.github.io/json
|
60
56
|
licenses:
|
61
57
|
- Ruby
|
62
58
|
metadata:
|
63
|
-
bug_tracker_uri: https://github.com/
|
64
|
-
changelog_uri: https://github.com/
|
65
|
-
documentation_uri: https://
|
66
|
-
homepage_uri: https://
|
67
|
-
source_code_uri: https://github.com/
|
68
|
-
wiki_uri: https://github.com/
|
59
|
+
bug_tracker_uri: https://github.com/ruby/json/issues
|
60
|
+
changelog_uri: https://github.com/ruby/json/blob/master/CHANGES.md
|
61
|
+
documentation_uri: https://ruby.github.io/json/doc/index.html
|
62
|
+
homepage_uri: https://ruby.github.io/json
|
63
|
+
source_code_uri: https://github.com/ruby/json
|
64
|
+
wiki_uri: https://github.com/ruby/json/wiki
|
65
|
+
post_install_message:
|
69
66
|
rdoc_options:
|
70
67
|
- "--title"
|
71
68
|
- JSON implementation for Ruby
|
@@ -77,14 +74,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
74
|
requirements:
|
78
75
|
- - ">="
|
79
76
|
- !ruby/object:Gem::Version
|
80
|
-
version: '2.
|
77
|
+
version: '2.7'
|
81
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
79
|
requirements:
|
83
80
|
- - ">="
|
84
81
|
- !ruby/object:Gem::Version
|
85
82
|
version: '0'
|
86
83
|
requirements: []
|
87
|
-
rubygems_version: 3.
|
84
|
+
rubygems_version: 3.5.11
|
85
|
+
signing_key:
|
88
86
|
specification_version: 4
|
89
87
|
summary: JSON Implementation for Ruby
|
90
88
|
test_files: []
|
@@ -1 +0,0 @@
|
|
1
|
-
generator.o: generator.c generator.h $(srcdir)/../fbuffer/fbuffer.h
|
@@ -1,177 +0,0 @@
|
|
1
|
-
#ifndef _GENERATOR_H_
|
2
|
-
#define _GENERATOR_H_
|
3
|
-
|
4
|
-
#include <math.h>
|
5
|
-
#include <ctype.h>
|
6
|
-
|
7
|
-
#include "ruby.h"
|
8
|
-
|
9
|
-
#ifdef HAVE_RUBY_RE_H
|
10
|
-
#include "ruby/re.h"
|
11
|
-
#else
|
12
|
-
#include "re.h"
|
13
|
-
#endif
|
14
|
-
|
15
|
-
#ifndef rb_intern_str
|
16
|
-
#define rb_intern_str(string) SYM2ID(rb_str_intern(string))
|
17
|
-
#endif
|
18
|
-
|
19
|
-
#ifndef rb_obj_instance_variables
|
20
|
-
#define rb_obj_instance_variables(object) rb_funcall(object, rb_intern("instance_variables"), 0)
|
21
|
-
#endif
|
22
|
-
|
23
|
-
#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
|
24
|
-
|
25
|
-
/* unicode definitions */
|
26
|
-
|
27
|
-
#define UNI_STRICT_CONVERSION 1
|
28
|
-
|
29
|
-
typedef unsigned long UTF32; /* at least 32 bits */
|
30
|
-
typedef unsigned short UTF16; /* at least 16 bits */
|
31
|
-
typedef unsigned char UTF8; /* typically 8 bits */
|
32
|
-
|
33
|
-
#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
|
34
|
-
#define UNI_MAX_BMP (UTF32)0x0000FFFF
|
35
|
-
#define UNI_MAX_UTF16 (UTF32)0x0010FFFF
|
36
|
-
#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
|
37
|
-
#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF
|
38
|
-
|
39
|
-
#define UNI_SUR_HIGH_START (UTF32)0xD800
|
40
|
-
#define UNI_SUR_HIGH_END (UTF32)0xDBFF
|
41
|
-
#define UNI_SUR_LOW_START (UTF32)0xDC00
|
42
|
-
#define UNI_SUR_LOW_END (UTF32)0xDFFF
|
43
|
-
|
44
|
-
static const int halfShift = 10; /* used for shifting by 10 bits */
|
45
|
-
|
46
|
-
static const UTF32 halfBase = 0x0010000UL;
|
47
|
-
static const UTF32 halfMask = 0x3FFUL;
|
48
|
-
|
49
|
-
static unsigned char isLegalUTF8(const UTF8 *source, unsigned long length);
|
50
|
-
static void unicode_escape(char *buf, UTF16 character);
|
51
|
-
static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16 character);
|
52
|
-
static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string, char script_safe);
|
53
|
-
static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string, char script_safe);
|
54
|
-
static char *fstrndup(const char *ptr, unsigned long len);
|
55
|
-
|
56
|
-
/* ruby api and some helpers */
|
57
|
-
|
58
|
-
typedef struct JSON_Generator_StateStruct {
|
59
|
-
char *indent;
|
60
|
-
long indent_len;
|
61
|
-
char *space;
|
62
|
-
long space_len;
|
63
|
-
char *space_before;
|
64
|
-
long space_before_len;
|
65
|
-
char *object_nl;
|
66
|
-
long object_nl_len;
|
67
|
-
char *array_nl;
|
68
|
-
long array_nl_len;
|
69
|
-
FBuffer *array_delim;
|
70
|
-
FBuffer *object_delim;
|
71
|
-
FBuffer *object_delim2;
|
72
|
-
long max_nesting;
|
73
|
-
char allow_nan;
|
74
|
-
char ascii_only;
|
75
|
-
char script_safe;
|
76
|
-
char strict;
|
77
|
-
long depth;
|
78
|
-
long buffer_initial_length;
|
79
|
-
} JSON_Generator_State;
|
80
|
-
|
81
|
-
#define GET_STATE_TO(self, state) \
|
82
|
-
TypedData_Get_Struct(self, JSON_Generator_State, &JSON_Generator_State_type, state)
|
83
|
-
|
84
|
-
#define GET_STATE(self) \
|
85
|
-
JSON_Generator_State *state; \
|
86
|
-
GET_STATE_TO(self, state)
|
87
|
-
|
88
|
-
#define GENERATE_JSON(type) \
|
89
|
-
FBuffer *buffer; \
|
90
|
-
VALUE Vstate; \
|
91
|
-
JSON_Generator_State *state; \
|
92
|
-
\
|
93
|
-
rb_scan_args(argc, argv, "01", &Vstate); \
|
94
|
-
Vstate = cState_from_state_s(cState, Vstate); \
|
95
|
-
TypedData_Get_Struct(Vstate, JSON_Generator_State, &JSON_Generator_State_type, state); \
|
96
|
-
buffer = cState_prepare_buffer(Vstate); \
|
97
|
-
generate_json_##type(buffer, Vstate, state, self); \
|
98
|
-
return fbuffer_to_s(buffer)
|
99
|
-
|
100
|
-
static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self);
|
101
|
-
static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self);
|
102
|
-
#ifdef RUBY_INTEGER_UNIFICATION
|
103
|
-
static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self);
|
104
|
-
#else
|
105
|
-
static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self);
|
106
|
-
static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self);
|
107
|
-
#endif
|
108
|
-
static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self);
|
109
|
-
static VALUE mString_included_s(VALUE self, VALUE modul);
|
110
|
-
static VALUE mString_to_json(int argc, VALUE *argv, VALUE self);
|
111
|
-
static VALUE mString_to_json_raw_object(VALUE self);
|
112
|
-
static VALUE mString_to_json_raw(int argc, VALUE *argv, VALUE self);
|
113
|
-
static VALUE mString_Extend_json_create(VALUE self, VALUE o);
|
114
|
-
static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self);
|
115
|
-
static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self);
|
116
|
-
static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self);
|
117
|
-
static VALUE mObject_to_json(int argc, VALUE *argv, VALUE self);
|
118
|
-
static void State_free(void *state);
|
119
|
-
static VALUE cState_s_allocate(VALUE klass);
|
120
|
-
static VALUE cState_configure(VALUE self, VALUE opts);
|
121
|
-
static VALUE cState_to_h(VALUE self);
|
122
|
-
static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
123
|
-
static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
124
|
-
static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
125
|
-
static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
126
|
-
static void generate_json_null(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
127
|
-
static void generate_json_false(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
128
|
-
static void generate_json_true(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
129
|
-
#ifdef RUBY_INTEGER_UNIFICATION
|
130
|
-
static void generate_json_integer(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
131
|
-
#endif
|
132
|
-
static void generate_json_fixnum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
133
|
-
static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
134
|
-
static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
135
|
-
static VALUE cState_partial_generate(VALUE self, VALUE obj);
|
136
|
-
static VALUE cState_generate(VALUE self, VALUE obj);
|
137
|
-
static VALUE cState_initialize(int argc, VALUE *argv, VALUE self);
|
138
|
-
static VALUE cState_from_state_s(VALUE self, VALUE opts);
|
139
|
-
static VALUE cState_indent(VALUE self);
|
140
|
-
static VALUE cState_indent_set(VALUE self, VALUE indent);
|
141
|
-
static VALUE cState_space(VALUE self);
|
142
|
-
static VALUE cState_space_set(VALUE self, VALUE space);
|
143
|
-
static VALUE cState_space_before(VALUE self);
|
144
|
-
static VALUE cState_space_before_set(VALUE self, VALUE space_before);
|
145
|
-
static VALUE cState_object_nl(VALUE self);
|
146
|
-
static VALUE cState_object_nl_set(VALUE self, VALUE object_nl);
|
147
|
-
static VALUE cState_array_nl(VALUE self);
|
148
|
-
static VALUE cState_array_nl_set(VALUE self, VALUE array_nl);
|
149
|
-
static VALUE cState_max_nesting(VALUE self);
|
150
|
-
static VALUE cState_max_nesting_set(VALUE self, VALUE depth);
|
151
|
-
static VALUE cState_allow_nan_p(VALUE self);
|
152
|
-
static VALUE cState_ascii_only_p(VALUE self);
|
153
|
-
static VALUE cState_depth(VALUE self);
|
154
|
-
static VALUE cState_depth_set(VALUE self, VALUE depth);
|
155
|
-
static VALUE cState_script_safe(VALUE self);
|
156
|
-
static VALUE cState_script_safe_set(VALUE self, VALUE depth);
|
157
|
-
static VALUE cState_strict(VALUE self);
|
158
|
-
static VALUE cState_strict_set(VALUE self, VALUE strict);
|
159
|
-
static FBuffer *cState_prepare_buffer(VALUE self);
|
160
|
-
#ifndef ZALLOC
|
161
|
-
#define ZALLOC(type) ((type *)ruby_zalloc(sizeof(type)))
|
162
|
-
static inline void *ruby_zalloc(size_t n)
|
163
|
-
{
|
164
|
-
void *p = ruby_xmalloc(n);
|
165
|
-
memset(p, 0, n);
|
166
|
-
return p;
|
167
|
-
}
|
168
|
-
#endif
|
169
|
-
#ifdef TypedData_Make_Struct
|
170
|
-
static const rb_data_type_t JSON_Generator_State_type;
|
171
|
-
#define NEW_TYPEDDATA_WRAPPER 1
|
172
|
-
#else
|
173
|
-
#define TypedData_Make_Struct(klass, type, ignore, json) Data_Make_Struct(klass, type, NULL, State_free, json)
|
174
|
-
#define TypedData_Get_Struct(self, JSON_Generator_State, ignore, json) Data_Get_Struct(self, JSON_Generator_State, json)
|
175
|
-
#endif
|
176
|
-
|
177
|
-
#endif
|
data/ext/json/ext/parser/depend
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
parser.o: parser.c parser.h $(srcdir)/../fbuffer/fbuffer.h
|
@@ -1,96 +0,0 @@
|
|
1
|
-
#ifndef _PARSER_H_
|
2
|
-
#define _PARSER_H_
|
3
|
-
|
4
|
-
#include "ruby.h"
|
5
|
-
|
6
|
-
#ifndef HAVE_RUBY_RE_H
|
7
|
-
#include "re.h"
|
8
|
-
#endif
|
9
|
-
|
10
|
-
#ifdef HAVE_RUBY_ST_H
|
11
|
-
#include "ruby/st.h"
|
12
|
-
#else
|
13
|
-
#include "st.h"
|
14
|
-
#endif
|
15
|
-
|
16
|
-
#ifndef MAYBE_UNUSED
|
17
|
-
# define MAYBE_UNUSED(x) x
|
18
|
-
#endif
|
19
|
-
|
20
|
-
#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
|
21
|
-
|
22
|
-
/* unicode */
|
23
|
-
|
24
|
-
typedef unsigned long UTF32; /* at least 32 bits */
|
25
|
-
typedef unsigned short UTF16; /* at least 16 bits */
|
26
|
-
typedef unsigned char UTF8; /* typically 8 bits */
|
27
|
-
|
28
|
-
#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
|
29
|
-
#define UNI_SUR_HIGH_START (UTF32)0xD800
|
30
|
-
#define UNI_SUR_HIGH_END (UTF32)0xDBFF
|
31
|
-
#define UNI_SUR_LOW_START (UTF32)0xDC00
|
32
|
-
#define UNI_SUR_LOW_END (UTF32)0xDFFF
|
33
|
-
|
34
|
-
typedef struct JSON_ParserStruct {
|
35
|
-
VALUE Vsource;
|
36
|
-
char *source;
|
37
|
-
long len;
|
38
|
-
char *memo;
|
39
|
-
VALUE create_id;
|
40
|
-
int max_nesting;
|
41
|
-
int allow_nan;
|
42
|
-
int parsing_name;
|
43
|
-
int symbolize_names;
|
44
|
-
int freeze;
|
45
|
-
VALUE object_class;
|
46
|
-
VALUE array_class;
|
47
|
-
VALUE decimal_class;
|
48
|
-
int create_additions;
|
49
|
-
VALUE match_string;
|
50
|
-
FBuffer *fbuffer;
|
51
|
-
} JSON_Parser;
|
52
|
-
|
53
|
-
#define GET_PARSER \
|
54
|
-
GET_PARSER_INIT; \
|
55
|
-
if (!json->Vsource) rb_raise(rb_eTypeError, "uninitialized instance")
|
56
|
-
#define GET_PARSER_INIT \
|
57
|
-
JSON_Parser *json; \
|
58
|
-
TypedData_Get_Struct(self, JSON_Parser, &JSON_Parser_type, json)
|
59
|
-
|
60
|
-
#define MinusInfinity "-Infinity"
|
61
|
-
#define EVIL 0x666
|
62
|
-
|
63
|
-
static UTF32 unescape_unicode(const unsigned char *p);
|
64
|
-
static int convert_UTF32_to_UTF8(char *buf, UTF32 ch);
|
65
|
-
static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting);
|
66
|
-
static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting);
|
67
|
-
static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result);
|
68
|
-
static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result);
|
69
|
-
static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting);
|
70
|
-
static VALUE json_string_unescape(char *string, char *stringEnd, int intern, int symbolize);
|
71
|
-
static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result);
|
72
|
-
static VALUE convert_encoding(VALUE source);
|
73
|
-
static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self);
|
74
|
-
static VALUE cParser_parse(VALUE self);
|
75
|
-
static void JSON_mark(void *json);
|
76
|
-
static void JSON_free(void *json);
|
77
|
-
static VALUE cJSON_parser_s_allocate(VALUE klass);
|
78
|
-
static VALUE cParser_source(VALUE self);
|
79
|
-
#ifndef ZALLOC
|
80
|
-
#define ZALLOC(type) ((type *)ruby_zalloc(sizeof(type)))
|
81
|
-
static inline void *ruby_zalloc(size_t n)
|
82
|
-
{
|
83
|
-
void *p = ruby_xmalloc(n);
|
84
|
-
memset(p, 0, n);
|
85
|
-
return p;
|
86
|
-
}
|
87
|
-
#endif
|
88
|
-
#ifdef TypedData_Make_Struct
|
89
|
-
static const rb_data_type_t JSON_Parser_type;
|
90
|
-
#define NEW_TYPEDDATA_WRAPPER 1
|
91
|
-
#else
|
92
|
-
#define TypedData_Make_Struct(klass, type, ignore, json) Data_Make_Struct(klass, type, NULL, JSON_free, json)
|
93
|
-
#define TypedData_Get_Struct(self, JSON_Parser, ignore, json) Data_Get_Struct(self, JSON_Parser, json)
|
94
|
-
#endif
|
95
|
-
|
96
|
-
#endif
|
data/ext/json/extconf.rb
DELETED