From f301383cdd4d8310a450931492e5cc0d532862e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Barri=C3=A9?= Date: Mon, 13 Jan 2025 11:28:06 +0100 Subject: [PATCH] Remove Generator::State#_generate Co-authored-by: Jean Boussier --- ext/json/generator/generator.c | 15 +++++++++++++-- ext/json/lib/json/common.rb | 6 +----- ext/json/lib/json/ext/generator/state.rb | 11 ----------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c index a76cf7d864..5006b7853e 100644 --- a/ext/json/generator/generator.c +++ b/ext/json/generator/generator.c @@ -1068,8 +1068,19 @@ static VALUE cState_partial_generate(VALUE self, VALUE obj, generator_func func, return fbuffer_finalize(&buffer); } -static VALUE cState_generate(VALUE self, VALUE obj, VALUE io) +/* call-seq: + * generate(obj) -> String + * generate(obj, anIO) -> anIO + * + * Generates a valid JSON document from object +obj+ and returns the + * result. If no valid JSON document can be created this method raises a + * GeneratorError exception. + */ +static VALUE cState_generate(int argc, VALUE *argv, VALUE self) { + rb_check_arity(argc, 1, 2); + VALUE obj = argv[0]; + VALUE io = argc > 1 ? argv[1] : Qnil; VALUE result = cState_partial_generate(self, obj, generate_json, io); GET_STATE(self); (void)state; @@ -1582,7 +1593,7 @@ void Init_generator(void) rb_define_method(cState, "depth=", cState_depth_set, 1); rb_define_method(cState, "buffer_initial_length", cState_buffer_initial_length, 0); rb_define_method(cState, "buffer_initial_length=", cState_buffer_initial_length_set, 1); - rb_define_private_method(cState, "_generate", cState_generate, 2); + rb_define_method(cState, "generate", cState_generate, -1); rb_define_singleton_method(cState, "generate", cState_m_generate, 3); diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb index 197ae11f6a..89f11a0c31 100644 --- a/ext/json/lib/json/common.rb +++ b/ext/json/lib/json/common.rb @@ -818,11 +818,7 @@ module JSON opts = merge_dump_options(opts, **kwargs) if kwargs begin - if State === opts - opts.generate(obj, anIO) - else - State.generate(obj, opts, anIO) - end + State.generate(obj, opts, anIO) rescue JSON::NestingError raise ArgumentError, "exceed depth limit" end diff --git a/ext/json/lib/json/ext/generator/state.rb b/ext/json/lib/json/ext/generator/state.rb index 1e0d5245b1..6cd9496e67 100644 --- a/ext/json/lib/json/ext/generator/state.rb +++ b/ext/json/lib/json/ext/generator/state.rb @@ -47,17 +47,6 @@ module JSON alias_method :merge, :configure - # call-seq: - # generate(obj) -> String - # generate(obj, anIO) -> anIO - # - # Generates a valid JSON document from object +obj+ and returns the - # result. If no valid JSON document can be created this method raises a - # GeneratorError exception. - def generate(obj, io = nil) - _generate(obj, io) - end - # call-seq: to_h # # Returns the configuration instance variables as a hash, that can be