зеркало из https://github.com/github/ruby.git
[flori/json] Remove `HAVE_RB_SCAN_ARGS_OPTIONAL_HASH` check
This macro is defined since ruby 2.1, which is older than the required ruby version. https://github.com/flori/json/commit/dd1d54e78a
This commit is contained in:
Родитель
0db58dd0db
Коммит
f1f84ca71c
|
@ -721,93 +721,80 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
|
|||
if (json->Vsource) {
|
||||
rb_raise(rb_eTypeError, "already initialized instance");
|
||||
}
|
||||
#ifdef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH
|
||||
rb_scan_args(argc, argv, "1:", &source, &opts);
|
||||
#else
|
||||
rb_scan_args(argc, argv, "11", &source, &opts);
|
||||
#endif
|
||||
if (!NIL_P(opts)) {
|
||||
#ifndef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH
|
||||
opts = rb_convert_type(opts, T_HASH, "Hash", "to_hash");
|
||||
if (NIL_P(opts)) {
|
||||
rb_raise(rb_eArgError, "opts needs to be like a hash");
|
||||
} else {
|
||||
#endif
|
||||
VALUE tmp = ID2SYM(i_max_nesting);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
VALUE max_nesting = rb_hash_aref(opts, tmp);
|
||||
if (RTEST(max_nesting)) {
|
||||
Check_Type(max_nesting, T_FIXNUM);
|
||||
json->max_nesting = FIX2INT(max_nesting);
|
||||
} else {
|
||||
json->max_nesting = 0;
|
||||
}
|
||||
} else {
|
||||
json->max_nesting = 100;
|
||||
}
|
||||
tmp = ID2SYM(i_allow_nan);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->allow_nan = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
|
||||
} else {
|
||||
json->allow_nan = 0;
|
||||
}
|
||||
tmp = ID2SYM(i_symbolize_names);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->symbolize_names = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
|
||||
} else {
|
||||
json->symbolize_names = 0;
|
||||
}
|
||||
tmp = ID2SYM(i_freeze);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->freeze = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
|
||||
} else {
|
||||
json->freeze = 0;
|
||||
}
|
||||
tmp = ID2SYM(i_create_additions);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->create_additions = RTEST(rb_hash_aref(opts, tmp));
|
||||
} else {
|
||||
json->create_additions = 0;
|
||||
}
|
||||
if (json->symbolize_names && json->create_additions) {
|
||||
rb_raise(rb_eArgError,
|
||||
"options :symbolize_names and :create_additions cannot be "
|
||||
" used in conjunction");
|
||||
}
|
||||
tmp = ID2SYM(i_create_id);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->create_id = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->create_id = rb_funcall(mJSON, i_create_id, 0);
|
||||
}
|
||||
tmp = ID2SYM(i_object_class);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->object_class = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->object_class = Qnil;
|
||||
}
|
||||
tmp = ID2SYM(i_array_class);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->array_class = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->array_class = Qnil;
|
||||
}
|
||||
tmp = ID2SYM(i_decimal_class);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->decimal_class = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->decimal_class = Qnil;
|
||||
}
|
||||
tmp = ID2SYM(i_match_string);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
VALUE match_string = rb_hash_aref(opts, tmp);
|
||||
json->match_string = RTEST(match_string) ? match_string : Qnil;
|
||||
} else {
|
||||
json->match_string = Qnil;
|
||||
}
|
||||
#ifndef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH
|
||||
}
|
||||
#endif
|
||||
VALUE tmp = ID2SYM(i_max_nesting);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
VALUE max_nesting = rb_hash_aref(opts, tmp);
|
||||
if (RTEST(max_nesting)) {
|
||||
Check_Type(max_nesting, T_FIXNUM);
|
||||
json->max_nesting = FIX2INT(max_nesting);
|
||||
} else {
|
||||
json->max_nesting = 0;
|
||||
}
|
||||
} else {
|
||||
json->max_nesting = 100;
|
||||
}
|
||||
tmp = ID2SYM(i_allow_nan);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->allow_nan = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
|
||||
} else {
|
||||
json->allow_nan = 0;
|
||||
}
|
||||
tmp = ID2SYM(i_symbolize_names);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->symbolize_names = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
|
||||
} else {
|
||||
json->symbolize_names = 0;
|
||||
}
|
||||
tmp = ID2SYM(i_freeze);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->freeze = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
|
||||
} else {
|
||||
json->freeze = 0;
|
||||
}
|
||||
tmp = ID2SYM(i_create_additions);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->create_additions = RTEST(rb_hash_aref(opts, tmp));
|
||||
} else {
|
||||
json->create_additions = 0;
|
||||
}
|
||||
if (json->symbolize_names && json->create_additions) {
|
||||
rb_raise(rb_eArgError,
|
||||
"options :symbolize_names and :create_additions cannot be "
|
||||
" used in conjunction");
|
||||
}
|
||||
tmp = ID2SYM(i_create_id);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->create_id = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->create_id = rb_funcall(mJSON, i_create_id, 0);
|
||||
}
|
||||
tmp = ID2SYM(i_object_class);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->object_class = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->object_class = Qnil;
|
||||
}
|
||||
tmp = ID2SYM(i_array_class);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->array_class = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->array_class = Qnil;
|
||||
}
|
||||
tmp = ID2SYM(i_decimal_class);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
json->decimal_class = rb_hash_aref(opts, tmp);
|
||||
} else {
|
||||
json->decimal_class = Qnil;
|
||||
}
|
||||
tmp = ID2SYM(i_match_string);
|
||||
if (option_given_p(opts, tmp)) {
|
||||
VALUE match_string = rb_hash_aref(opts, tmp);
|
||||
json->match_string = RTEST(match_string) ? match_string : Qnil;
|
||||
} else {
|
||||
json->match_string = Qnil;
|
||||
}
|
||||
} else {
|
||||
json->max_nesting = 100;
|
||||
json->allow_nan = 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче