You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rubygem-thor/SOURCES/rubygem-thor-1.2.1-did_you_...

59 lines
2.2 KiB

From 46d1422902e1c66b31fae79be7dca79ff8b2e81b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Wed, 15 Jun 2022 19:35:27 +0200
Subject: [PATCH] Reimplement did_you_mean suggestions to keep behaviour
accross rubies
Ruby 3.2 will introduce `Exception#detailed_message` and `did_you_mean`
has been already updated in Ruby 3.2 to use that.
The new behaviour means not changing the original `Exception#message`.
That means it is hard to get the previous error output, because
`Exception#detailed_message` includes not only `did_you_mean`
decorations, but also additional information like the exception class.
To fix this, I bring the old did_you_mean behavior into Thor, so that
the above changes do not affect us.
---
lib/thor/error.rb | 22 +++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/lib/thor/error.rb b/lib/thor/error.rb
index 893b135e..cc3dfe41 100644
--- a/lib/thor/error.rb
+++ b/lib/thor/error.rb
@@ -11,7 +11,15 @@ def initialize(dictionary)
end
end
- DidYouMean::Correctable
+ Module.new do
+ def to_s
+ super + DidYouMean.formatter.message_for(corrections)
+ end
+
+ def corrections
+ @corrections ||= self.class.const_get(:SpellChecker).new(self).corrections
+ end
+ end
end
# Thor::Error is raised when it's caused by wrong usage of thor classes. Those
@@ -100,16 +108,4 @@ class RequiredArgumentMissingError < InvocationError
class MalformattedArgumentError < InvocationError
end
-
- if Correctable
- if DidYouMean.respond_to?(:correct_error)
- DidYouMean.correct_error(Thor::UndefinedCommandError, UndefinedCommandError::SpellChecker)
- DidYouMean.correct_error(Thor::UnknownArgumentError, UnknownArgumentError::SpellChecker)
- else
- DidYouMean::SPELL_CHECKERS.merge!(
- 'Thor::UndefinedCommandError' => UndefinedCommandError::SpellChecker,
- 'Thor::UnknownArgumentError' => UnknownArgumentError::SpellChecker
- )
- end
- end
end