Sha256: a7cf06ac0c6d293ffd323ef3ccbebb651fad1650ba7194f2b28849306fddf78d
Contents?: true
Size: 1.04 KB
Versions: 4
Compression:
Stored size: 1.04 KB
Contents
module Clamp module Subcommand module Execution # override default Command behaviour def execute # delegate to subcommand subcommand = instantiate_subcommand(subcommand_name) subcommand.run(subcommand_arguments) end private def instantiate_subcommand(name) subcommand_class = find_subcommand_class(name) subcommand = subcommand_class.new(invocation_path_for(name), context) self.class.inheritable_attributes.each do |attribute| next unless attribute.of(self).defined? attribute.of(subcommand).set(attribute.of(self).get) end subcommand end def invocation_path_for(name) param_names = self.class.inheritable_parameters.map(&:name) [invocation_path, *param_names, name].join(" ") end def find_subcommand_class(name) subcommand_def = self.class.find_subcommand(name) return subcommand_def.subcommand_class if subcommand_def subcommand_missing(name) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems