Sha256: 151d7cfb344457b4f20953f0638d2b6ae3f1ae69390ad77166c5c3492e36be07

Contents?: true

Size: 1.19 KB

Versions: 168

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require 'eac_cli/definition'
require 'eac_cli/parser'
require 'eac_ruby_utils/core_ext'

module EacCli
  module Runner
    require_sub __FILE__
    extend ::ActiveSupport::Concern

    class << self
      def alias_runner_class_methods(klass, from_suffix, to_suffix)
        %i[create run].each do |method|
          alias_class_method(klass, build_method_name(method, from_suffix),
                             build_method_name(method, to_suffix))
        end
      end

      def runner?(object)
        object.is_a?(::Class) && object.included_modules.include?(::EacCli::Runner)
      end

      private

      def alias_class_method(klass, from, to)
        sklass = klass.singleton_class
        return unless sklass.method_defined?(from)

        sklass.send(:alias_method, to, from)
      end

      def build_method_name(name, suffix)
        ss = suffix.if_present('') { |s| "#{s}_" }
        "#{ss}#{name}"
      end
    end

    the_module = self
    included do
      the_module.alias_runner_class_methods(self, '', 'original')

      extend AfterClassMethods
      include InstanceMethods
      include ActiveSupport::Callbacks
      define_callbacks :run
    end
  end
end

Version data entries

168 entries across 168 versions & 4 rubygems

Version Path
eac_cli-0.34.1 lib/eac_cli/runner.rb
eac_cli-0.34.0 lib/eac_cli/runner.rb
eac_tools-0.66.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.65.1 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.65.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_cli-0.33.0 lib/eac_cli/runner.rb
eac_tools-0.64.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_cli-0.32.0 lib/eac_cli/runner.rb
eac_tools-0.63.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.62.1 sub/eac_cli/lib/eac_cli/runner.rb
eac_cli-0.31.0 lib/eac_cli/runner.rb
eac_tools-0.62.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.61.1 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.61.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.60.3 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.60.2 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.60.1 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.60.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.59.0 sub/eac_cli/lib/eac_cli/runner.rb
eac_tools-0.58.0 sub/eac_cli/lib/eac_cli/runner.rb