diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2019-07-24 15:20:40 -0400 |
---|---|---|
committer | Jean Boussier <jean.boussier@gmail.com> | 2019-11-28 09:33:30 +0000 |
commit | 3e472ab2d71c45d6d68b4c87f4b9a9484bf66c06 (patch) | |
tree | e7527f1b97ec90453b4de53ba0e41d196183e503 /lib/psych.rb | |
parent | 2a06e8360e28e99c26f1645f476b76677ecebd55 (diff) | |
download | psych-3e472ab2d71c45d6d68b4c87f4b9a9484bf66c06.zip |
Refactor `symbolize_names`
Diffstat (limited to 'lib/psych.rb')
-rw-r--r-- | lib/psych.rb | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/lib/psych.rb b/lib/psych.rb index c719b03..67024fb 100644 --- a/lib/psych.rb +++ b/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(':') |