yajl-ruby 0.7.4 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yajl-ruby might be problematic. Click here for more details.
- data/CHANGELOG.md +7 -0
- data/VERSION.yml +2 -2
- data/benchmark/encode.rb +5 -1
- data/benchmark/parse.rb +5 -1
- data/benchmark/parse_stream.rb +5 -1
- data/ext/api/yajl_common.h +10 -10
- data/ext/api/yajl_gen.h +26 -26
- data/ext/api/yajl_parse.h +35 -21
- data/ext/extconf.rb +1 -1
- data/ext/yajl.c +19 -12
- data/ext/yajl_alloc.c +7 -7
- data/ext/yajl_alloc.h +7 -7
- data/ext/yajl_buf.c +8 -8
- data/ext/yajl_buf.h +8 -8
- data/ext/yajl_bytestack.h +11 -11
- data/ext/yajl_encode.c +14 -14
- data/ext/yajl_encode.h +8 -8
- data/ext/yajl_ext.c +7 -3
- data/ext/yajl_ext.h +1 -1
- data/ext/yajl_gen.c +16 -18
- data/ext/yajl_lex.c +74 -74
- data/ext/yajl_lex.h +15 -15
- data/ext/yajl_parser.c +42 -39
- data/ext/yajl_parser.h +14 -11
- data/lib/yajl.rb +1 -1
- data/lib/yajl/bzip2/stream_reader.rb +13 -0
- data/lib/yajl/deflate/stream_reader.rb +10 -3
- data/lib/yajl/gzip/stream_reader.rb +13 -0
- data/spec/encoding/encoding_spec.rb +13 -2
- data/spec/spec_helper.rb +1 -0
- data/yajl-ruby.gemspec +2 -2
- metadata +3 -3
data/ext/yajl_alloc.c
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
/**
|
34
34
|
* \file yajl_alloc.h
|
data/ext/yajl_alloc.h
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
/**
|
34
34
|
* \file yajl_alloc.h
|
data/ext/yajl_buf.c
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
#include "yajl_buf.h"
|
34
34
|
|
@@ -49,7 +49,7 @@ static
|
|
49
49
|
void yajl_buf_ensure_available(yajl_buf buf, unsigned int want)
|
50
50
|
{
|
51
51
|
unsigned int need;
|
52
|
-
|
52
|
+
|
53
53
|
assert(buf != NULL);
|
54
54
|
|
55
55
|
/* first call */
|
data/ext/yajl_buf.h
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
#ifndef __YAJL_BUF_H__
|
34
34
|
#define __YAJL_BUF_H__
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
/*
|
40
40
|
* Implementation/performance notes. If this were moved to a header
|
41
|
-
* only implementation using #define's where possible we might be
|
41
|
+
* only implementation using #define's where possible we might be
|
42
42
|
* able to sqeeze a little performance out of the guy by killing function
|
43
43
|
* call overhead. YMMV.
|
44
44
|
*/
|
data/ext/yajl_bytestack.h
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
/*
|
34
34
|
* A header only implementation of a simple stack of bytes, used in YAJL
|
@@ -61,7 +61,7 @@ typedef struct yajl_bytestack_t
|
|
61
61
|
|
62
62
|
/* initialize a bytestack */
|
63
63
|
#define yajl_bs_free(obs) \
|
64
|
-
if ((obs).stack) (obs).yaf->free((obs).yaf->ctx, (obs).stack);
|
64
|
+
if ((obs).stack) (obs).yaf->free((obs).yaf->ctx, (obs).stack);
|
65
65
|
|
66
66
|
#define yajl_bs_current(obs) \
|
67
67
|
(assert((obs).used > 0), (obs).stack[(obs).used - 1])
|
@@ -74,12 +74,12 @@ typedef struct yajl_bytestack_t
|
|
74
74
|
} \
|
75
75
|
(obs).stack[((obs).used)++] = (byte); \
|
76
76
|
}
|
77
|
-
|
77
|
+
|
78
78
|
/* removes the top item of the stack, returns nothing */
|
79
79
|
#define yajl_bs_pop(obs) { ((obs).used)--; }
|
80
80
|
|
81
81
|
#define yajl_bs_set(obs, byte) \
|
82
|
-
(obs).stack[((obs).used) - 1] = (byte);
|
83
|
-
|
82
|
+
(obs).stack[((obs).used) - 1] = (byte);
|
83
|
+
|
84
84
|
|
85
85
|
#endif
|
data/ext/yajl_encode.c
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
#include "yajl_encode.h"
|
34
34
|
|
@@ -48,7 +48,7 @@ void
|
|
48
48
|
yajl_string_encode(yajl_buf buf, const unsigned char * str,
|
49
49
|
unsigned int len)
|
50
50
|
{
|
51
|
-
yajl_string_encode2((yajl_print_t) &yajl_buf_append, buf, str, len);
|
51
|
+
yajl_string_encode2((const yajl_print_t) &yajl_buf_append, buf, str, len);
|
52
52
|
}
|
53
53
|
|
54
54
|
void
|
@@ -58,7 +58,7 @@ yajl_string_encode2(const yajl_print_t print,
|
|
58
58
|
unsigned int len)
|
59
59
|
{
|
60
60
|
unsigned int beg = 0;
|
61
|
-
unsigned int end = 0;
|
61
|
+
unsigned int end = 0;
|
62
62
|
char hexBuf[7];
|
63
63
|
hexBuf[0] = '\\'; hexBuf[1] = 'u'; hexBuf[2] = '0'; hexBuf[3] = '0';
|
64
64
|
hexBuf[6] = 0;
|
@@ -104,7 +104,7 @@ static void hexToDigit(unsigned int * val, const unsigned char * hex)
|
|
104
104
|
}
|
105
105
|
}
|
106
106
|
|
107
|
-
static void Utf32toUtf8(unsigned int codepoint, char * utf8Buf)
|
107
|
+
static void Utf32toUtf8(unsigned int codepoint, char * utf8Buf)
|
108
108
|
{
|
109
109
|
if (codepoint < 0x80) {
|
110
110
|
utf8Buf[0] = (char) codepoint;
|
@@ -134,7 +134,7 @@ void yajl_string_decode(yajl_buf buf, const unsigned char * str,
|
|
134
134
|
unsigned int len)
|
135
135
|
{
|
136
136
|
unsigned int beg = 0;
|
137
|
-
unsigned int end = 0;
|
137
|
+
unsigned int end = 0;
|
138
138
|
|
139
139
|
while (end < len) {
|
140
140
|
if (str[end] == '\\') {
|
@@ -161,8 +161,8 @@ void yajl_string_decode(yajl_buf buf, const unsigned char * str,
|
|
161
161
|
unsigned int surrogate = 0;
|
162
162
|
hexToDigit(&surrogate, str + end + 2);
|
163
163
|
codepoint =
|
164
|
-
(((codepoint & 0x3F) << 10) |
|
165
|
-
((((codepoint >> 6) & 0xF) + 1) << 16) |
|
164
|
+
(((codepoint & 0x3F) << 10) |
|
165
|
+
((((codepoint >> 6) & 0xF) + 1) << 16) |
|
166
166
|
(surrogate & 0x3FF));
|
167
167
|
end += 5;
|
168
168
|
} else {
|
@@ -170,7 +170,7 @@ void yajl_string_decode(yajl_buf buf, const unsigned char * str,
|
|
170
170
|
break;
|
171
171
|
}
|
172
172
|
}
|
173
|
-
|
173
|
+
|
174
174
|
Utf32toUtf8(codepoint, utf8Buf);
|
175
175
|
unescaped = utf8Buf;
|
176
176
|
break;
|
data/ext/yajl_encode.h
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
#ifndef __YAJL_ENCODE_H__
|
34
34
|
#define __YAJL_ENCODE_H__
|
@@ -36,7 +36,7 @@
|
|
36
36
|
#include "yajl_buf.h"
|
37
37
|
#include "api/yajl_gen.h"
|
38
38
|
|
39
|
-
void yajl_string_encode2(yajl_print_t printer,
|
39
|
+
void yajl_string_encode2(const yajl_print_t printer,
|
40
40
|
void * ctx,
|
41
41
|
const unsigned char * str,
|
42
42
|
unsigned int length);
|
data/ext/yajl_ext.c
CHANGED
@@ -173,7 +173,10 @@ void yajl_encode_part(void * wrapper, VALUE obj, VALUE io) {
|
|
173
173
|
status = yajl_gen_string(w->encoder, (const unsigned char *)cptr, len);
|
174
174
|
break;
|
175
175
|
default:
|
176
|
-
if (rb_respond_to(obj,
|
176
|
+
if (rb_respond_to(obj, intern_as_json)) {
|
177
|
+
obj = rb_funcall(obj, intern_as_json, 0);
|
178
|
+
yajl_encode_part(w, obj, io);
|
179
|
+
} else if (rb_respond_to(obj, intern_to_json)) {
|
177
180
|
str = rb_funcall(obj, intern_to_json, 0);
|
178
181
|
cptr = RSTRING_PTR(str);
|
179
182
|
len = RSTRING_LEN(str);
|
@@ -430,8 +433,8 @@ static VALUE rb_yajl_parser_parse(int argc, VALUE * argv, VALUE self) {
|
|
430
433
|
len = RSTRING_LEN(input);
|
431
434
|
yajl_parse_chunk((const unsigned char*)cptr, len, wrapper->parser);
|
432
435
|
} else if (rb_respond_to(input, intern_io_read)) {
|
433
|
-
VALUE parsed = rb_str_new(
|
434
|
-
while (
|
436
|
+
VALUE parsed = rb_str_new(0, FIX2LONG(rbufsize));
|
437
|
+
while (rb_funcall(input, intern_io_read, 2, rbufsize, parsed) != Qnil) {
|
435
438
|
cptr = RSTRING_PTR(parsed);
|
436
439
|
len = RSTRING_LEN(parsed);
|
437
440
|
yajl_parse_chunk((const unsigned char*)cptr, len, wrapper->parser);
|
@@ -886,6 +889,7 @@ void Init_yajl_ext() {
|
|
886
889
|
intern_to_json = rb_intern("to_json");
|
887
890
|
intern_to_sym = rb_intern("to_sym");
|
888
891
|
intern_has_key = rb_intern("has_key?");
|
892
|
+
intern_as_json = rb_intern("as_json");
|
889
893
|
|
890
894
|
sym_allow_comments = ID2SYM(rb_intern("allow_comments"));
|
891
895
|
sym_check_utf8 = ID2SYM(rb_intern("check_utf8"));
|
data/ext/yajl_ext.h
CHANGED
@@ -49,7 +49,7 @@ int utf8Encoding;
|
|
49
49
|
|
50
50
|
static VALUE cParseError, cEncodeError, mYajl, cParser, cEncoder;
|
51
51
|
static ID intern_io_read, intern_call, intern_keys, intern_to_s,
|
52
|
-
intern_to_json, intern_has_key, intern_to_sym;
|
52
|
+
intern_to_json, intern_has_key, intern_to_sym, intern_as_json;
|
53
53
|
static ID sym_allow_comments, sym_check_utf8, sym_pretty, sym_indent, sym_terminator, sym_symbolize_keys;
|
54
54
|
|
55
55
|
#define GetParser(obj, sval) (sval = (yajl_parser_wrapper*)DATA_PTR(obj));
|
data/ext/yajl_gen.c
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright
|
3
|
-
*
|
2
|
+
* Copyright 2010, Lloyd Hilaiel.
|
3
|
+
*
|
4
4
|
* Redistribution and use in source and binary forms, with or without
|
5
5
|
* modification, are permitted provided that the following conditions are
|
6
6
|
* met:
|
7
|
-
*
|
7
|
+
*
|
8
8
|
* 1. Redistributions of source code must retain the above copyright
|
9
9
|
* notice, this list of conditions and the following disclaimer.
|
10
|
-
*
|
10
|
+
*
|
11
11
|
* 2. Redistributions in binary form must reproduce the above copyright
|
12
12
|
* notice, this list of conditions and the following disclaimer in
|
13
13
|
* the documentation and/or other materials provided with the
|
14
14
|
* distribution.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
* 3. Neither the name of Lloyd Hilaiel nor the names of its
|
17
17
|
* contributors may be used to endorse or promote products derived
|
18
18
|
* from this software without specific prior written permission.
|
19
|
-
*
|
19
|
+
*
|
20
20
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
21
21
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22
22
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
@@ -28,7 +28,7 @@
|
|
28
28
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
29
29
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
30
30
|
* POSSIBILITY OF SUCH DAMAGE.
|
31
|
-
*/
|
31
|
+
*/
|
32
32
|
|
33
33
|
#include "api/yajl_gen.h"
|
34
34
|
#include "yajl_buf.h"
|
@@ -50,7 +50,7 @@ typedef enum {
|
|
50
50
|
yajl_gen_error
|
51
51
|
} yajl_gen_state;
|
52
52
|
|
53
|
-
struct yajl_gen_t
|
53
|
+
struct yajl_gen_t
|
54
54
|
{
|
55
55
|
unsigned int depth;
|
56
56
|
unsigned int pretty;
|
@@ -70,7 +70,7 @@ yajl_gen_alloc(const yajl_gen_config * config,
|
|
70
70
|
}
|
71
71
|
|
72
72
|
yajl_gen
|
73
|
-
yajl_gen_alloc2(yajl_print_t callback,
|
73
|
+
yajl_gen_alloc2(const yajl_print_t callback,
|
74
74
|
const yajl_gen_config * config,
|
75
75
|
const yajl_alloc_funcs * afs,
|
76
76
|
void * ctx)
|
@@ -125,7 +125,7 @@ yajl_gen_free(yajl_gen g)
|
|
125
125
|
} else if (g->state[g->depth] == yajl_gen_map_val) { \
|
126
126
|
g->print(g->ctx, ":", 1); \
|
127
127
|
if (g->pretty) g->print(g->ctx, " ", 1); \
|
128
|
-
}
|
128
|
+
}
|
129
129
|
|
130
130
|
#define INSERT_WHITESPACE \
|
131
131
|
if (g->pretty) { \
|
@@ -187,14 +187,14 @@ yajl_gen_integer(yajl_gen g, long int number)
|
|
187
187
|
#ifdef WIN32
|
188
188
|
#include <float.h>
|
189
189
|
#define isnan _isnan
|
190
|
-
#define isinf _finite
|
190
|
+
#define isinf !_finite
|
191
191
|
#endif
|
192
192
|
|
193
193
|
yajl_gen_status
|
194
194
|
yajl_gen_double(yajl_gen g, double number)
|
195
195
|
{
|
196
196
|
char i[32];
|
197
|
-
ENSURE_VALID_STATE; ENSURE_NOT_KEY;
|
197
|
+
ENSURE_VALID_STATE; ENSURE_NOT_KEY;
|
198
198
|
if (isnan(number) || isinf(number)) return yajl_gen_invalid_number;
|
199
199
|
INSERT_SEP; INSERT_WHITESPACE;
|
200
200
|
sprintf(i, "%g", number);
|
@@ -222,8 +222,6 @@ yajl_gen_string(yajl_gen g, const unsigned char * str,
|
|
222
222
|
g->print(g->ctx, "\"", 1);
|
223
223
|
yajl_string_encode2(g->print, g->ctx, str, len);
|
224
224
|
g->print(g->ctx, "\"", 1);
|
225
|
-
|
226
|
-
|
227
225
|
APPENDED_ATOM;
|
228
226
|
FINAL_NEWLINE;
|
229
227
|
return yajl_gen_status_ok;
|
@@ -255,8 +253,8 @@ yajl_gen_status
|
|
255
253
|
yajl_gen_map_open(yajl_gen g)
|
256
254
|
{
|
257
255
|
ENSURE_VALID_STATE; ENSURE_NOT_KEY; INSERT_SEP; INSERT_WHITESPACE;
|
258
|
-
INCREMENT_DEPTH;
|
259
|
-
|
256
|
+
INCREMENT_DEPTH;
|
257
|
+
|
260
258
|
g->state[g->depth] = yajl_gen_map_start;
|
261
259
|
g->print(g->ctx, "{", 1);
|
262
260
|
if (g->pretty) g->print(g->ctx, "\n", 1);
|
@@ -267,7 +265,7 @@ yajl_gen_map_open(yajl_gen g)
|
|
267
265
|
yajl_gen_status
|
268
266
|
yajl_gen_map_close(yajl_gen g)
|
269
267
|
{
|
270
|
-
ENSURE_VALID_STATE;
|
268
|
+
ENSURE_VALID_STATE;
|
271
269
|
(g->depth)--;
|
272
270
|
if (g->pretty) g->print(g->ctx, "\n", 1);
|
273
271
|
APPENDED_ATOM;
|
@@ -281,7 +279,7 @@ yajl_gen_status
|
|
281
279
|
yajl_gen_array_open(yajl_gen g)
|
282
280
|
{
|
283
281
|
ENSURE_VALID_STATE; ENSURE_NOT_KEY; INSERT_SEP; INSERT_WHITESPACE;
|
284
|
-
INCREMENT_DEPTH;
|
282
|
+
INCREMENT_DEPTH;
|
285
283
|
g->state[g->depth] = yajl_gen_array_start;
|
286
284
|
g->print(g->ctx, "[", 1);
|
287
285
|
if (g->pretty) g->print(g->ctx, "\n", 1);
|