From 6c1e8029d0e8598d075e478ac557091495bc9ffa Mon Sep 17 00:00:00 2001 From: Yuki Nishijima Date: Tue, 19 Mar 2024 10:25:55 +0900 Subject: [PATCH] [ruby/did_you_mean] Do not use #inspect to avoid unexpected performance degradation closes https://github.com/ruby/did_you_mean/pull/100 https://github.com/ruby/did_you_mean/commit/bd11eefd6c --- lib/did_you_mean/spell_checkers/key_error_checker.rb | 10 +++++++++- .../spell_checkers/pattern_key_name_checker.rb | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/did_you_mean/spell_checkers/key_error_checker.rb b/lib/did_you_mean/spell_checkers/key_error_checker.rb index be4bea7789..955bff1be6 100644 --- a/lib/did_you_mean/spell_checkers/key_error_checker.rb +++ b/lib/did_you_mean/spell_checkers/key_error_checker.rb @@ -14,7 +14,15 @@ module DidYouMean private def exact_matches - @exact_matches ||= @keys.select { |word| @key == word.to_s }.map(&:inspect) + @exact_matches ||= @keys.select { |word| @key == word.to_s }.map { |obj| format_object(obj) } + end + + def format_object(symbol_or_object) + if symbol_or_object.is_a?(Symbol) + ":#{symbol_or_object}" + else + symbol_or_object.to_s + end end end end diff --git a/lib/did_you_mean/spell_checkers/pattern_key_name_checker.rb b/lib/did_you_mean/spell_checkers/pattern_key_name_checker.rb index ed263c8f93..622d4dee25 100644 --- a/lib/did_you_mean/spell_checkers/pattern_key_name_checker.rb +++ b/lib/did_you_mean/spell_checkers/pattern_key_name_checker.rb @@ -14,7 +14,15 @@ module DidYouMean private def exact_matches - @exact_matches ||= @keys.select { |word| @key == word.to_s }.map(&:inspect) + @exact_matches ||= @keys.select { |word| @key == word.to_s }.map { |obj| format_object(obj) } + end + + def format_object(symbol_or_object) + if symbol_or_object.is_a?(Symbol) + ":#{symbol_or_object}" + else + symbol_or_object.to_s + end end end end