aboutsummaryrefslogtreecommitdiffstats
path: root/ext/psych/lib/psych.rb
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2019-07-24 15:20:40 -0400
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-05 11:49:56 +0900
commit591a3326e33889858276d66b157125273491edee (patch)
tree1e3cad7e740b2fea68685a2ab934e9a35da40ebd /ext/psych/lib/psych.rb
parentefa8df2886d575ddd4b4ab75dd9c7586e0e3a1d4 (diff)
downloadruby-591a3326e33889858276d66b157125273491edee.tar.gz
[ruby/psych] Refactor `symbolize_names`
https://github.com/ruby/psych/commit/3e472ab2d7
Diffstat (limited to 'ext/psych/lib/psych.rb')
-rw-r--r--ext/psych/lib/psych.rb21
1 files changed, 3 insertions, 18 deletions
diff --git a/ext/psych/lib/psych.rb b/ext/psych/lib/psych.rb
index c719b036d0..67024fbbd5 100644
--- a/ext/psych/lib/psych.rb
+++ b/ext/psych/lib/psych.rb
@@ -276,8 +276,7 @@ module Psych
result = parse(yaml, filename: filename)
return fallback unless result
- result = result.to_ruby if result
- symbolize_names!(result) if symbolize_names
+ result = result.to_ruby(symbolize_names: symbolize_names) if result
result
end
@@ -353,12 +352,11 @@ module Psych
permitted_symbols.map(&:to_s))
scanner = ScalarScanner.new class_loader
visitor = if aliases
- Visitors::ToRuby.new scanner, class_loader
+ Visitors::ToRuby.new scanner, class_loader, symbolize_names: symbolize_names
else
- Visitors::NoAliasRuby.new scanner, class_loader
+ Visitors::NoAliasRuby.new scanner, class_loader, symbolize_names: symbolize_names
end
result = visitor.accept result
- symbolize_names!(result) if symbolize_names
result
end
@@ -604,19 +602,6 @@ module Psych
@dump_tags[klass] = tag
end
- def self.symbolize_names!(result)
- case result
- when Hash
- result.keys.each do |key|
- result[key.to_sym] = symbolize_names!(result.delete(key))
- end
- when Array
- result.map! { |r| symbolize_names!(r) }
- end
- result
- end
- private_class_method :symbolize_names!
-
# Workaround for emulating `warn '...', uplevel: 1` in Ruby 2.4 or lower.
def self.warn_with_uplevel(message, uplevel: 1)
at = parse_caller(caller[uplevel]).join(':')