yajl-ruby 0.7.1 → 0.7.2

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.

Files changed (46) hide show
  1. data/CHANGELOG.md +8 -1
  2. data/MIT-LICENSE +3 -3
  3. data/README.rdoc +8 -8
  4. data/VERSION.yml +1 -1
  5. data/benchmark/subjects/ohai.yml +171 -171
  6. data/ext/api/yajl_common.h +9 -9
  7. data/ext/api/yajl_gen.h +10 -10
  8. data/ext/api/yajl_parse.h +15 -15
  9. data/ext/yajl.c +8 -8
  10. data/ext/yajl_alloc.c +6 -6
  11. data/ext/yajl_alloc.h +6 -6
  12. data/ext/yajl_buf.c +7 -7
  13. data/ext/yajl_buf.h +7 -7
  14. data/ext/yajl_bytestack.h +10 -10
  15. data/ext/yajl_encode.c +12 -12
  16. data/ext/yajl_encode.h +6 -6
  17. data/ext/yajl_ext.c +67 -80
  18. data/ext/yajl_ext.h +4 -4
  19. data/ext/yajl_gen.c +16 -16
  20. data/ext/yajl_lex.c +79 -76
  21. data/ext/yajl_lex.h +14 -14
  22. data/ext/yajl_parser.c +34 -34
  23. data/ext/yajl_parser.h +7 -7
  24. data/lib/yajl.rb +7 -7
  25. data/lib/yajl/bzip2/stream_reader.rb +1 -11
  26. data/lib/yajl/bzip2/stream_writer.rb +1 -1
  27. data/lib/yajl/deflate/stream_reader.rb +6 -7
  28. data/lib/yajl/deflate/stream_writer.rb +2 -2
  29. data/lib/yajl/gzip/stream_reader.rb +0 -10
  30. data/lib/yajl/http_stream.rb +12 -12
  31. data/lib/yajl/json_gem/encoding.rb +4 -4
  32. data/lib/yajl/json_gem/parsing.rb +3 -3
  33. data/spec/encoding/encoding_spec.rb +23 -23
  34. data/spec/global/global_spec.rb +8 -8
  35. data/spec/http/http_delete_spec.rb +13 -13
  36. data/spec/http/http_error_spec.rb +2 -2
  37. data/spec/http/http_get_spec.rb +15 -15
  38. data/spec/http/http_post_spec.rb +12 -12
  39. data/spec/http/http_put_spec.rb +14 -14
  40. data/spec/json_gem_compatibility/compatibility_spec.rb +21 -21
  41. data/spec/parsing/active_support_spec.rb +6 -6
  42. data/spec/parsing/chunked_spec.rb +12 -12
  43. data/spec/parsing/fixtures_spec.rb +4 -4
  44. data/spec/parsing/one_off_spec.rb +9 -9
  45. data/yajl-ruby.gemspec +3 -3
  46. metadata +12 -5
data/ext/yajl_lex.h CHANGED
@@ -1,22 +1,22 @@
1
1
  /*
2
2
  * Copyright 2007-2009, Lloyd Hilaiel.
3
- *
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_LEX_H__
34
34
  #define __YAJL_LEX_H__
@@ -36,21 +36,21 @@
36
36
  #include "api/yajl_common.h"
37
37
 
38
38
  typedef enum {
39
- yajl_tok_bool,
39
+ yajl_tok_bool,
40
40
  yajl_tok_colon,
41
- yajl_tok_comma,
41
+ yajl_tok_comma,
42
42
  yajl_tok_eof,
43
43
  yajl_tok_error,
44
- yajl_tok_left_brace,
44
+ yajl_tok_left_brace,
45
45
  yajl_tok_left_bracket,
46
- yajl_tok_null,
47
- yajl_tok_right_brace,
46
+ yajl_tok_null,
47
+ yajl_tok_right_brace,
48
48
  yajl_tok_right_bracket,
49
49
 
50
50
  /* we differentiate between integers and doubles to allow the
51
51
  * parser to interpret the number without re-scanning */
52
- yajl_tok_integer,
53
- yajl_tok_double,
52
+ yajl_tok_integer,
53
+ yajl_tok_double,
54
54
 
55
55
  /* we differentiate between strings which require further processing,
56
56
  * and strings that do not */
@@ -83,7 +83,7 @@ n * error messages.
83
83
  *
84
84
  * When you pass the next chunk of data, context should be reinitialized
85
85
  * to zero.
86
- *
86
+ *
87
87
  * Finally, the output buffer is usually just a pointer into the jsonText,
88
88
  * however in cases where the entity being lexed spans multiple chunks,
89
89
  * the lexer will buffer the entity and the data returned will be
data/ext/yajl_parser.c CHANGED
@@ -1,22 +1,22 @@
1
1
  /*
2
2
  * Copyright 2007-2009, Lloyd Hilaiel.
3
- *
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_lex.h"
34
34
  #include "yajl_parser.h"
@@ -53,7 +53,7 @@ yajl_render_error_string(yajl_handle hand, const unsigned char * jsonText,
53
53
  const char * errorType = NULL;
54
54
  const char * errorText = NULL;
55
55
  char text[72];
56
- const char * arrow = " (right here) ------^\n";
56
+ const char * arrow = " (right here) ------^\n";
57
57
 
58
58
  if (yajl_bs_current(hand->stateStack) == yajl_state_parse_error) {
59
59
  errorType = "parse";
@@ -70,18 +70,18 @@ yajl_render_error_string(yajl_handle hand, const unsigned char * jsonText,
70
70
  memneeded += strlen(errorType);
71
71
  memneeded += strlen(" error");
72
72
  if (errorText != NULL) {
73
- memneeded += strlen(": ");
74
- memneeded += strlen(errorText);
73
+ memneeded += strlen(": ");
74
+ memneeded += strlen(errorText);
75
75
  }
76
76
  str = (unsigned char *) YA_MALLOC(&(hand->alloc), memneeded + 2);
77
77
  str[0] = 0;
78
78
  strcat((char *) str, errorType);
79
- strcat((char *) str, " error");
79
+ strcat((char *) str, " error");
80
80
  if (errorText != NULL) {
81
- strcat((char *) str, ": ");
82
- strcat((char *) str, errorText);
81
+ strcat((char *) str, ": ");
82
+ strcat((char *) str, errorText);
83
83
  }
84
- strcat((char *) str, "\n");
84
+ strcat((char *) str, "\n");
85
85
  }
86
86
 
87
87
  /* now we append as many spaces as needed to make sure the error
@@ -93,7 +93,7 @@ yajl_render_error_string(yajl_handle hand, const unsigned char * jsonText,
93
93
  spacesNeeded = (offset < 30 ? 40 - offset : 10);
94
94
  start = (offset >= 30 ? offset - 30 : 0);
95
95
  end = (offset + 30 > jsonTextLen ? jsonTextLen : offset + 30);
96
-
96
+
97
97
  for (i=0;i<spacesNeeded;i++) text[i] = ' ';
98
98
 
99
99
  for (;start < end;start++, i++) {
@@ -117,7 +117,7 @@ yajl_render_error_string(yajl_handle hand, const unsigned char * jsonText,
117
117
  newStr[0] = 0;
118
118
  strcat((char *) newStr, (char *) str);
119
119
  strcat((char *) newStr, text);
120
- strcat((char *) newStr, arrow);
120
+ strcat((char *) newStr, arrow);
121
121
  YA_FREE(&(hand->alloc), str);
122
122
  str = (unsigned char *) newStr;
123
123
  }
@@ -148,7 +148,7 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
148
148
  case yajl_state_parse_complete:
149
149
  return yajl_status_ok;
150
150
  case yajl_state_lexical_error:
151
- case yajl_state_parse_error:
151
+ case yajl_state_parse_error:
152
152
  hand->errorOffset = *offset;
153
153
  return yajl_status_error;
154
154
  case yajl_state_start:
@@ -187,13 +187,13 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
187
187
  yajl_buf_len(hand->decodeBuf)));
188
188
  }
189
189
  break;
190
- case yajl_tok_bool:
190
+ case yajl_tok_bool:
191
191
  if (hand->callbacks && hand->callbacks->yajl_boolean) {
192
192
  _CC_CHK(hand->callbacks->yajl_boolean(hand->ctx,
193
193
  *buf == 't'));
194
194
  }
195
195
  break;
196
- case yajl_tok_null:
196
+ case yajl_tok_null:
197
197
  if (hand->callbacks && hand->callbacks->yajl_null) {
198
198
  _CC_CHK(hand->callbacks->yajl_null(hand->ctx));
199
199
  }
@@ -287,13 +287,13 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
287
287
  _CC_CHK(hand->callbacks->yajl_end_array(hand->ctx));
288
288
  }
289
289
  yajl_bs_pop(hand->stateStack);
290
- goto around_again;
290
+ goto around_again;
291
291
  }
292
292
  /* intentional fall-through */
293
293
  }
294
- case yajl_tok_colon:
295
- case yajl_tok_comma:
296
- case yajl_tok_right_bracket:
294
+ case yajl_tok_colon:
295
+ case yajl_tok_comma:
296
+ case yajl_tok_right_bracket:
297
297
  yajl_bs_set(hand->stateStack, yajl_state_parse_error);
298
298
  hand->parseError =
299
299
  "unallowed token at this point in JSON text";
@@ -312,7 +312,7 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
312
312
  yajl_reset_parser(hand);
313
313
  } else if (s == yajl_state_map_need_val) {
314
314
  yajl_bs_set(hand->stateStack, yajl_state_map_got_val);
315
- } else {
315
+ } else {
316
316
  yajl_bs_set(hand->stateStack, yajl_state_array_got_val);
317
317
  }
318
318
  }
@@ -322,7 +322,7 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
322
322
 
323
323
  goto around_again;
324
324
  }
325
- case yajl_state_map_start:
325
+ case yajl_state_map_start:
326
326
  case yajl_state_map_need_key: {
327
327
  /* only difference between these two states is that in
328
328
  * start '}' is valid, whereas in need_key, we've parsed
@@ -358,12 +358,12 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
358
358
  _CC_CHK(hand->callbacks->yajl_end_map(hand->ctx));
359
359
  }
360
360
  yajl_bs_pop(hand->stateStack);
361
- goto around_again;
361
+ goto around_again;
362
362
  }
363
363
  default:
364
364
  yajl_bs_set(hand->stateStack, yajl_state_parse_error);
365
365
  hand->parseError =
366
- "invalid object key (must be a string)";
366
+ "invalid object key (must be a string)";
367
367
  goto around_again;
368
368
  }
369
369
  }
@@ -373,7 +373,7 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
373
373
  switch (tok) {
374
374
  case yajl_tok_colon:
375
375
  yajl_bs_set(hand->stateStack, yajl_state_map_need_val);
376
- goto around_again;
376
+ goto around_again;
377
377
  case yajl_tok_eof:
378
378
  return yajl_status_insufficient_data;
379
379
  case yajl_tok_error:
@@ -395,10 +395,10 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
395
395
  _CC_CHK(hand->callbacks->yajl_end_map(hand->ctx));
396
396
  }
397
397
  yajl_bs_pop(hand->stateStack);
398
- goto around_again;
398
+ goto around_again;
399
399
  case yajl_tok_comma:
400
400
  yajl_bs_set(hand->stateStack, yajl_state_map_need_key);
401
- goto around_again;
401
+ goto around_again;
402
402
  case yajl_tok_eof:
403
403
  return yajl_status_insufficient_data;
404
404
  case yajl_tok_error:
@@ -406,8 +406,8 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
406
406
  goto around_again;
407
407
  default:
408
408
  yajl_bs_set(hand->stateStack, yajl_state_parse_error);
409
- hand->parseError = "after key and value, inside map, "
410
- "I expect ',' or '}'";
409
+ hand->parseError = "after key and value, inside map, "
410
+ "I expect ',' or '}'";
411
411
  /* try to restore error offset */
412
412
  if (*offset >= bufLen) *offset -= bufLen;
413
413
  else *offset = 0;
@@ -423,10 +423,10 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
423
423
  _CC_CHK(hand->callbacks->yajl_end_array(hand->ctx));
424
424
  }
425
425
  yajl_bs_pop(hand->stateStack);
426
- goto around_again;
426
+ goto around_again;
427
427
  case yajl_tok_comma:
428
428
  yajl_bs_set(hand->stateStack, yajl_state_array_need_val);
429
- goto around_again;
429
+ goto around_again;
430
430
  case yajl_tok_eof:
431
431
  return yajl_status_insufficient_data;
432
432
  case yajl_tok_error:
@@ -440,7 +440,7 @@ yajl_do_parse(yajl_handle hand, unsigned int * offset,
440
440
  }
441
441
  }
442
442
  }
443
-
443
+
444
444
  abort();
445
445
  return yajl_status_error;
446
446
  }
data/ext/yajl_parser.h CHANGED
@@ -1,22 +1,22 @@
1
1
  /*
2
2
  * Copyright 2007-2009, Lloyd Hilaiel.
3
- *
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_PARSER_H__
34
34
  #define __YAJL_PARSER_H__
@@ -44,7 +44,7 @@ typedef enum {
44
44
  yajl_state_parse_error,
45
45
  yajl_state_lexical_error,
46
46
  yajl_state_map_start,
47
- yajl_state_map_sep,
47
+ yajl_state_map_sep,
48
48
  yajl_state_map_need_val,
49
49
  yajl_state_map_got_val,
50
50
  yajl_state_map_need_key,
data/lib/yajl.rb CHANGED
@@ -13,18 +13,18 @@ require 'yajl_ext'
13
13
  #
14
14
  # Ruby bindings to the excellent Yajl (Yet Another JSON Parser) ANSI C library.
15
15
  module Yajl
16
- VERSION = "0.7.1"
17
-
16
+ VERSION = "0.7.2"
17
+
18
18
  # For compatibility, has the same signature of Yajl::Parser.parse
19
19
  def self.load(str_or_io, options={}, read_bufsize=nil, &block)
20
20
  Parser.parse(str_or_io, options, read_bufsize, &block)
21
21
  end
22
-
22
+
23
23
  # For compatibility, has the same signature of Yajl::Encoder.encode
24
24
  def self.dump(obj, *args, &block)
25
25
  Encoder.encode(obj, args, &block)
26
26
  end
27
-
27
+
28
28
  class Parser
29
29
  # A helper method for parse-and-forget use-cases
30
30
  #
@@ -39,7 +39,7 @@ module Yajl
39
39
  new(options).parse(str_or_io, read_bufsize, &block)
40
40
  end
41
41
  end
42
-
42
+
43
43
  class Encoder
44
44
  # A helper method for encode-and-forget use-cases
45
45
  #
@@ -75,7 +75,7 @@ module Yajl
75
75
  new(options).encode(obj, io, &block)
76
76
  end
77
77
  end
78
-
78
+
79
79
  # DEPRECATED - See Yajl::Parser and Yajl::Encoder
80
80
  module Stream
81
81
  # DEPRECATED - See Yajl::Parser
@@ -83,7 +83,7 @@ module Yajl
83
83
  warn "WARNING: Yajl::Stream has be deprecated and will most likely be gone in the next release. Use the Yajl::Parser class instead."
84
84
  Parser.new.parse(str_or_io)
85
85
  end
86
-
86
+
87
87
  # DEPRECATED - See Yajl::Encoder
88
88
  def self.encode(obj, str_or_io=nil)
89
89
  warn "WARNING: Yajl::Stream has be deprecated and will most likely be gone in the next release. Use the Yajl::Encoder class instead."
@@ -4,16 +4,6 @@ module Yajl
4
4
  # This is a wrapper around Bzip::Reader to allow it's #read method to adhere
5
5
  # to the IO spec, allowing for two parameters (length, and buffer)
6
6
  class StreamReader < ::Bzip2::Reader
7
-
8
- # A helper method to allow use similar to IO#read
9
- def read(len=nil, buffer=nil)
10
- unless buffer.nil?
11
- buffer.replace super(len)
12
- return buffer
13
- end
14
- super(len)
15
- end
16
-
17
7
  # Helper method for one-off parsing from a bzip2-compressed stream
18
8
  #
19
9
  # See Yajl::Parser#parse for parameter documentation
@@ -21,7 +11,7 @@ module Yajl
21
11
  if input.is_a?(String)
22
12
  input = StringIO.new(input)
23
13
  end
24
-
14
+
25
15
  Yajl::Parser.new(options).parse(new(input), buffer_size, &block)
26
16
  end
27
17
  end
@@ -3,7 +3,7 @@ module Yajl
3
3
  module Bzip2
4
4
  # A wrapper around the Bzip2::Writer class for easier JSON stream encoding
5
5
  class StreamWriter < ::Bzip2::Writer
6
-
6
+
7
7
  # A helper method for encoding to a bzip2-compressed stream
8
8
  #
9
9
  # Look up Yajl::Encoder#encode for parameter documentation
@@ -4,20 +4,19 @@ module Yajl
4
4
  # This is a wrapper around Zlib::Inflate, creating a #read method that adheres
5
5
  # to the IO spec, allowing for two parameters (length, and buffer)
6
6
  class StreamReader < ::Zlib::Inflate
7
-
7
+
8
8
  # Wrapper to the initialize method so we can set the initial IO to parse from.
9
9
  def initialize(io, options)
10
10
  @io = io
11
11
  super(options)
12
12
  end
13
-
13
+
14
14
  # A helper method to allow use similar to IO#read
15
- def read(len=nil, buffer=nil)
16
- buffer.replace inflate(@io.read(len)) and return unless buffer.nil?
15
+ def read(len=nil)
16
+ return nil if finished? or ended?
17
17
  inflate(@io.read(len))
18
18
  end
19
- alias :eof? :finished?
20
-
19
+
21
20
  # Helper method for one-off parsing from a deflate-compressed stream
22
21
  #
23
22
  # See Yajl::Parser#parse for parameter documentation
@@ -25,7 +24,7 @@ module Yajl
25
24
  if input.is_a?(String)
26
25
  input = StringIO.new(input)
27
26
  end
28
-
27
+
29
28
  if options.is_a?(Hash)
30
29
  deflate_options = options.delete(:deflate_options)
31
30
  Yajl::Parser.new(options).parse(new(input, deflate_options), buffer_size, &block)