Sha256: 9298c9ef92610ff8841cc8c4e2f89c34f404d4ab80ec8b5ba3b40c312cee8d1f

Contents?: true

Size: 697 Bytes

Versions: 4

Compression:

Stored size: 697 Bytes

Contents

# frozen_string_literal: true

module Aid
  module Inheritable
    def self.included(klass)
      klass.instance_eval do
        extend ClassMethods

        def self.inherited(subklass)
          Aid::Script.script_classes << subklass
        end
      end
    end

    module ClassMethods
      def script_classes
        @script_classes ||= []
      end

      def reset_script_classes!
        @scripts = nil
        @script_classes = []
      end

      def scripts
        @scripts ||= load_scripts_deferred
      end

      def load_scripts_deferred
        script_classes.each_with_object({}) do |klass, result|
          result[klass.name] = klass
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
aid-0.2.2 lib/aid/inheritable.rb
abtion-aid-0.3.2 lib/aid/inheritable.rb
abtion-aid-0.3.1 lib/aid/inheritable.rb
abtion-aid-0.2.0 lib/aid/inheritable.rb