Skip to content

Commit 6a82669

Browse files
committed
Replace C extension with Data#initialize bind_call
1 parent 5af4cec commit 6a82669

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

ext/psych/psych_to_ruby.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@ static VALUE path2class(VALUE self, VALUE path)
2828
return rb_path_to_class(path);
2929
}
3030

31-
static VALUE init_data(VALUE self, VALUE data, VALUE values)
32-
{
33-
rb_struct_initialize(data, values);
34-
return data;
35-
}
36-
3731
void Init_psych_to_ruby(void)
3832
{
3933
VALUE psych = rb_define_module("Psych");
@@ -43,7 +37,6 @@ void Init_psych_to_ruby(void)
4337
VALUE visitor = rb_define_class_under(visitors, "Visitor", rb_cObject);
4438
cPsychVisitorsToRuby = rb_define_class_under(visitors, "ToRuby", visitor);
4539

46-
rb_define_private_method(cPsychVisitorsToRuby, "init_data", init_data, 2);
4740
rb_define_private_method(cPsychVisitorsToRuby, "build_exception", build_exception, 2);
4841
rb_define_private_method(class_loader, "path2class", path2class, 1);
4942
}

lib/psych/visitors/to_ruby.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ module Visitors
1212
###
1313
# This class walks a YAML AST, converting each node to Ruby
1414
class ToRuby < Psych::Visitors::Visitor
15+
unless RUBY_VERSION < "3.2"
16+
DATA_INITIALIZE = Data.instance_method(:initialize)
17+
end
18+
1519
def self.create(symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true)
1620
class_loader = ClassLoader.new
1721
scanner = ScalarScanner.new class_loader, strict_integer: strict_integer, parse_symbols: parse_symbols
@@ -219,8 +223,7 @@ def visit_Psych_Nodes_Mapping o
219223
revive_data_members(members, o)
220224
end
221225
data ||= allocate_anon_data(o, members)
222-
values = data.members.map { |m| members[m] }
223-
init_data(data, values)
226+
DATA_INITIALIZE.bind_call(data, **members)
224227
data.freeze
225228
data
226229

0 commit comments

Comments
 (0)