[前][次][番号順一覧][スレッド一覧]

ruby-changes:59257

From: David <ko1@a...>
Date: Sun, 15 Dec 2019 17:17:05 +0900 (JST)
Subject: [ruby-changes:59257] 0fab900538 (master): Vendor thor 1.0.0

https://git.ruby-lang.org/ruby.git/commit/?id=0fab900538

From 0fab9005387549d5c5b13cf330012d02e5312bc2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@r...>
Date: Fri, 13 Dec 2019 20:41:13 +0100
Subject: Vendor thor 1.0.0


diff --git a/lib/bundler/vendor/thor/lib/thor/base.rb b/lib/bundler/vendor/thor/lib/thor/base.rb
index bd2ebb6..9ba5243 100644
--- a/lib/bundler/vendor/thor/lib/thor/base.rb
+++ b/lib/bundler/vendor/thor/lib/thor/base.rb
@@ -2,6 +2,7 @@ require_relative "command" https://github.com/ruby/ruby/blob/trunk/lib/bundler/vendor/thor/lib/thor/base.rb#L2
 require_relative "core_ext/hash_with_indifferent_access"
 require_relative "error"
 require_relative "invocation"
+require_relative "nested_context"
 require_relative "parser"
 require_relative "shell"
 require_relative "line_editor"
@@ -418,14 +419,20 @@ class Bundler::Thor https://github.com/ruby/ruby/blob/trunk/lib/bundler/vendor/thor/lib/thor/base.rb#L419
       #     remove_command :this_is_not_a_command
       #   end
       #
-      def no_commands
-        @no_commands = true
-        yield
-      ensure
-        @no_commands = false
+      def no_commands(&block)
+        no_commands_context.enter(&block)
       end
+
       alias_method :no_tasks, :no_commands
 
+      def no_commands_context
+        @no_commands_context ||= NestedContext.new
+      end
+
+      def no_commands?
+        no_commands_context.entered?
+      end
+
       # Sets the namespace for the Bundler::Thor or Bundler::Thor::Group class. By default the
       # namespace is retrieved from the class name. If your Bundler::Thor class is named
       # Scripts::MyScript, the help method, for example, will be called as:
@@ -607,7 +614,7 @@ class Bundler::Thor https://github.com/ruby/ruby/blob/trunk/lib/bundler/vendor/thor/lib/thor/base.rb#L614
       def inherited(klass)
         super(klass)
         Bundler::Thor::Base.register_klass_file(klass)
-        klass.instance_variable_set(:@no_commands, false)
+        klass.instance_variable_set(:@no_commands, 0)
       end
 
       # Fire this callback whenever a method is added. Added methods are
@@ -624,8 +631,7 @@ class Bundler::Thor https://github.com/ruby/ruby/blob/trunk/lib/bundler/vendor/thor/lib/thor/base.rb#L631
         # Return if it's not a public instance method
         return unless public_method_defined?(meth.to_sym)
 
-        @no_commands ||= false
-        return if @no_commands || !create_command(meth)
+        return if no_commands? || !create_command(meth)
 
         is_thor_reserved_word?(meth, :command)
         Bundler::Thor::Base.register_klass_file(self)
diff --git a/lib/bundler/vendor/thor/lib/thor/nested_context.rb b/lib/bundler/vendor/thor/lib/thor/nested_context.rb
new file mode 100644
index 0000000..fd36b9d
--- /dev/null
+++ b/lib/bundler/vendor/thor/lib/thor/nested_context.rb
@@ -0,0 +1,29 @@ https://github.com/ruby/ruby/blob/trunk/lib/bundler/vendor/thor/lib/thor/nested_context.rb#L1
+class Bundler::Thor
+  class NestedContext
+    def initialize
+      @depth = 0
+    end
+
+    def enter
+      push
+
+      yield
+    ensure
+      pop
+    end
+
+    def entered?
+      @depth > 0
+    end
+
+    private
+
+    def push
+      @depth += 1
+    end
+
+    def pop
+      @depth -= 1
+    end
+  end
+end
diff --git a/lib/bundler/vendor/thor/lib/thor/version.rb b/lib/bundler/vendor/thor/lib/thor/version.rb
index 98f2b79..7750d27 100644
--- a/lib/bundler/vendor/thor/lib/thor/version.rb
+++ b/lib/bundler/vendor/thor/lib/thor/version.rb
@@ -1,3 +1,3 @@ https://github.com/ruby/ruby/blob/trunk/lib/bundler/vendor/thor/lib/thor/version.rb#L1
 class Bundler::Thor
-  VERSION = "0.20.3"
+  VERSION = "1.0.0"
 end
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]