feat: edit working-checkout comparisons with normal editor actions
This commit is contained in:
+12
-11
@@ -59,13 +59,13 @@ module Vamp
|
||||
Core = Module.new
|
||||
|
||||
# @param entries [Array<Hash{String => String, nil}>] action name and optional Ex alias descriptors
|
||||
# @return [Array<Module>] frozen action namespaces
|
||||
# @return [Array<Module, Vamp::Action>] frozen action namespaces and leaves
|
||||
def self.install_actions(entries)
|
||||
raise TypeError, "core action catalog must be an Array" unless entries.is_a?(Array)
|
||||
|
||||
namespaces = [Core]
|
||||
aliases = {}
|
||||
entries.each do |entry|
|
||||
entries.sort_by { |entry| entry.fetch("name").count(".") }.each do |entry|
|
||||
raise TypeError, "core action descriptor must be a Hash" unless entry.is_a?(Hash)
|
||||
|
||||
install_action(entry.fetch("name"), namespaces)
|
||||
@@ -139,7 +139,7 @@ module Vamp
|
||||
end
|
||||
|
||||
# @param name [String]
|
||||
# @param namespaces [Array<Module>]
|
||||
# @param namespaces [Array<Module, Vamp::Action>]
|
||||
# @return [Symbol] the installed action method name
|
||||
def self.install_action(name, namespaces)
|
||||
name = action_name(name)
|
||||
@@ -147,7 +147,8 @@ module Vamp
|
||||
namespace = parts[0...-1].reduce(Core) { |parent, part| action_namespace(parent, part, namespaces, name) }
|
||||
leaf = parts.last
|
||||
available_action!(namespace, leaf, name)
|
||||
action = Action.send(:new, name.freeze).freeze
|
||||
action = Action.send(:new, name.freeze)
|
||||
namespaces << action
|
||||
namespace.define_singleton_method(leaf) { action }
|
||||
end
|
||||
|
||||
@@ -160,23 +161,23 @@ module Vamp
|
||||
name
|
||||
end
|
||||
|
||||
# @param parent [Module]
|
||||
# @param parent [Module, Vamp::Action]
|
||||
# @param part [String]
|
||||
# @param namespaces [Array<Module>]
|
||||
# @param namespaces [Array<Module, Vamp::Action>]
|
||||
# @param name [String]
|
||||
# @return [Module]
|
||||
# @return [Module, Vamp::Action]
|
||||
def self.action_namespace(parent, part, namespaces, name)
|
||||
return new_action_namespace(parent, part, namespaces) unless parent.singleton_methods(false).include?(part.to_sym)
|
||||
|
||||
child = parent.public_send(part)
|
||||
raise ArgumentError, "conflicting core action namespace: #{name}" unless child.is_a?(Module)
|
||||
raise ArgumentError, "conflicting core action namespace: #{name}" unless child.is_a?(Module) || child.is_a?(Action)
|
||||
|
||||
child
|
||||
end
|
||||
|
||||
# @param parent [Module]
|
||||
# @param parent [Module, Vamp::Action]
|
||||
# @param part [String]
|
||||
# @param namespaces [Array<Module>]
|
||||
# @param namespaces [Array<Module, Vamp::Action>]
|
||||
# @return [Module]
|
||||
def self.new_action_namespace(parent, part, namespaces)
|
||||
child = Module.new
|
||||
@@ -185,7 +186,7 @@ module Vamp
|
||||
child
|
||||
end
|
||||
|
||||
# @param namespace [Module]
|
||||
# @param namespace [Module, Vamp::Action]
|
||||
# @param leaf [String]
|
||||
# @param name [String]
|
||||
# @return [nil]
|
||||
|
||||
Reference in New Issue
Block a user