brianmario-yajl-ruby 0.5.3 → 0.5.4
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.
- data/CHANGELOG.md +5 -1
- data/VERSION.yml +1 -1
- data/ext/yajl_ext.c +18 -18
- data/spec/parsing/chunked_spec.rb +1 -1
- data/spec/parsing/one_off_spec.rb +5 -5
- data/yajl-ruby.gemspec +2 -2
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 0.5.
|
3
|
+
## 0.5.4 (June 16th, 2009)
|
4
|
+
* Yajl::Parser's :symbolize_keys option now defaults to false
|
5
|
+
* remove use of sprintf for a little speed improvement while parsing
|
6
|
+
|
7
|
+
## 0.5.3 (June 7th, 2009)
|
4
8
|
* The IO parameter for Yajl::Encode#encode is now optional, and accepts a block
|
5
9
|
** it will return the resulting JSON string if no IO is passed to stream to
|
6
10
|
** if a block is passed, it will call and pass it the resulting JSON string
|
data/VERSION.yml
CHANGED
data/ext/yajl_ext.c
CHANGED
@@ -166,9 +166,7 @@ static int yajl_found_number(void * ctx, const char * numberVal, unsigned int nu
|
|
166
166
|
VALUE subString = rb_str_new(numberVal, numberLen);
|
167
167
|
char * cSubString = RSTRING_PTR(subString);
|
168
168
|
|
169
|
-
if (strstr(cSubString, ".") != NULL ||
|
170
|
-
strstr(cSubString, "e") != NULL ||
|
171
|
-
strstr(cSubString, "E") != NULL) {
|
169
|
+
if (strstr(cSubString, ".") != NULL || strstr(cSubString, "e") != NULL || strstr(cSubString, "E") != NULL) {
|
172
170
|
yajl_set_static_value(ctx, rb_Float(subString));
|
173
171
|
} else {
|
174
172
|
yajl_set_static_value(ctx, rb_Integer(subString));
|
@@ -186,15 +184,13 @@ static int yajl_found_string(void * ctx, const unsigned char * stringVal, unsign
|
|
186
184
|
static int yajl_found_hash_key(void * ctx, const unsigned char * stringVal, unsigned int stringLen) {
|
187
185
|
struct yajl_parser_wrapper * wrapper;
|
188
186
|
GetParser((VALUE)ctx, wrapper);
|
187
|
+
VALUE keyStr = rb_str_new((const char *)stringVal, stringLen);
|
189
188
|
|
190
189
|
if (wrapper->symbolizeKeys) {
|
191
|
-
|
192
|
-
ID key;
|
193
|
-
sprintf(keyStr, "%.*s", stringLen, stringVal);
|
194
|
-
key = rb_intern(keyStr);
|
190
|
+
ID key = rb_intern(RSTRING_PTR(keyStr));
|
195
191
|
yajl_set_static_value(ctx, ID2SYM(key));
|
196
192
|
} else {
|
197
|
-
yajl_set_static_value(ctx,
|
193
|
+
yajl_set_static_value(ctx, keyStr);
|
198
194
|
}
|
199
195
|
yajl_check_and_fire_callback(ctx);
|
200
196
|
return 1;
|
@@ -252,17 +248,19 @@ static int yajl_found_end_array(void * ctx) {
|
|
252
248
|
/*
|
253
249
|
* Document-method: new
|
254
250
|
*
|
255
|
-
* call-seq: new([:allow_comments => false, :check_utf8 => false])
|
251
|
+
* call-seq: new([:symbolize_keys => true, [:allow_comments => false[, :check_utf8 => false]]])
|
256
252
|
*
|
257
|
-
* :
|
253
|
+
* :symbolize_keys will turn hash keys into Ruby symbols, defaults to false.
|
258
254
|
*
|
259
|
-
* :
|
255
|
+
* :allow_comments will turn on/off the check for comments inside the JSON stream, defaults to true.
|
256
|
+
*
|
257
|
+
* :check_utf8 will validate UTF8 characters found in the JSON stream, defaults to true.
|
260
258
|
*/
|
261
259
|
static VALUE rb_yajl_parser_new(int argc, VALUE * argv, VALUE klass) {
|
262
260
|
struct yajl_parser_wrapper * wrapper;
|
263
261
|
yajl_parser_config cfg;
|
264
262
|
VALUE opts, obj;
|
265
|
-
int allowComments = 1, checkUTF8 = 1, symbolizeKeys =
|
263
|
+
int allowComments = 1, checkUTF8 = 1, symbolizeKeys = 0;
|
266
264
|
|
267
265
|
// Scan off config vars
|
268
266
|
if (rb_scan_args(argc, argv, "01", &opts) == 1) {
|
@@ -274,8 +272,8 @@ static VALUE rb_yajl_parser_new(int argc, VALUE * argv, VALUE klass) {
|
|
274
272
|
if (rb_hash_aref(opts, ID2SYM(sym_check_utf8)) == Qfalse) {
|
275
273
|
checkUTF8 = 0;
|
276
274
|
}
|
277
|
-
if (rb_hash_aref(opts, ID2SYM(sym_symbolize_keys)) ==
|
278
|
-
symbolizeKeys =
|
275
|
+
if (rb_hash_aref(opts, ID2SYM(sym_symbolize_keys)) == Qtrue) {
|
276
|
+
symbolizeKeys = 1;
|
279
277
|
}
|
280
278
|
}
|
281
279
|
cfg = (yajl_parser_config){allowComments, checkUTF8};
|
@@ -295,12 +293,14 @@ static VALUE rb_yajl_parser_new(int argc, VALUE * argv, VALUE klass) {
|
|
295
293
|
/*
|
296
294
|
* Document-method: initialize
|
297
295
|
*
|
298
|
-
* call-seq:
|
296
|
+
* call-seq: new([:symbolize_keys => true, [:allow_comments => false[, :check_utf8 => false]]])
|
299
297
|
*
|
300
|
-
* :
|
298
|
+
* :symbolize_keys will turn hash keys into Ruby symbols, defaults to false.
|
301
299
|
*
|
302
|
-
* :
|
303
|
-
|
300
|
+
* :allow_comments will turn on/off the check for comments inside the JSON stream, defaults to true.
|
301
|
+
*
|
302
|
+
* :check_utf8 will validate UTF8 characters found in the JSON stream, defaults to true.
|
303
|
+
*/
|
304
304
|
static VALUE rb_yajl_parser_init(int argc, VALUE * argv, VALUE self) {
|
305
305
|
return self;
|
306
306
|
}
|
@@ -6,7 +6,7 @@ describe "One-off JSON examples" do
|
|
6
6
|
infinity = (1.0/0)
|
7
7
|
silence_warnings do
|
8
8
|
parser = Yajl::Parser.new
|
9
|
-
parser.parse(StringIO.new('{"key": 23456789012E666}')).should == {
|
9
|
+
parser.parse(StringIO.new('{"key": 23456789012E666}')).should == {"key" => infinity}
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -36,16 +36,16 @@ describe "One-off JSON examples" do
|
|
36
36
|
|
37
37
|
it "should parse using it's class method, from an IO" do
|
38
38
|
io = StringIO.new('{"key": 1234}')
|
39
|
-
Yajl::Parser.parse(io).should == {
|
39
|
+
Yajl::Parser.parse(io).should == {"key" => 1234}
|
40
40
|
end
|
41
41
|
|
42
|
-
it "should parse using it's class method, from an IO with
|
42
|
+
it "should parse using it's class method, from an IO with symbolized keys" do
|
43
43
|
parser = Yajl::Parser.new(:symbolize_keys => true)
|
44
44
|
parser.parse('{"key": 1234}').should == {:key => 1234}
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should parse using it's class method, from a string" do
|
48
|
-
Yajl::Parser.parse('{"key": 1234}').should == {
|
48
|
+
Yajl::Parser.parse('{"key": 1234}').should == {"key" => 1234}
|
49
49
|
end
|
50
50
|
|
51
51
|
it "should parse using it's class method, from a string with a block" do
|
@@ -53,6 +53,6 @@ describe "One-off JSON examples" do
|
|
53
53
|
Yajl::Parser.parse('{"key": 1234}') do |obj|
|
54
54
|
output = obj
|
55
55
|
end
|
56
|
-
output.should == {
|
56
|
+
output.should == {"key" => 1234}
|
57
57
|
end
|
58
58
|
end
|
data/yajl-ruby.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{yajl-ruby}
|
5
|
-
s.version = "0.5.
|
5
|
+
s.version = "0.5.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Brian Lopez", "Lloyd Hilaiel"]
|
9
|
-
s.date = %q{2009-06-
|
9
|
+
s.date = %q{2009-06-16}
|
10
10
|
s.email = %q{seniorlopez@gmail.com}
|
11
11
|
s.extensions = ["ext/extconf.rb"]
|
12
12
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brianmario-yajl-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Lopez
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-06-
|
13
|
+
date: 2009-06-16 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|