diff options
author | Yuki Nishijima <yuki@xpillars.software> | 2024-03-19 10:25:55 +0900 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2024-03-19 01:27:32 +0000 |
commit | 6c1e8029d0e8598d075e478ac557091495bc9ffa (patch) | |
tree | 8b7f1762f385470b974cfd1038ca57bed3947df3 | |
parent | 3f5f04afa779622ba02b7ad4b69b15b136c249a0 (diff) |
[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
-rw-r--r-- | lib/did_you_mean/spell_checkers/key_error_checker.rb | 10 | ||||
-rw-r--r-- | lib/did_you_mean/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 |