Sha256: 806d2793f299391b8a9fc61fbf1bcbaa9c6f3460dc7190a3b5c7518577f685af

Contents?: true

Size: 960 Bytes

Versions: 1

Compression:

Stored size: 960 Bytes

Contents

require 'active_support/core_ext/string/inflections'

module EacLauncher
  module Stereotype
    class << self
      attr_reader :stereotypes

      def included(base)
        @stereotypes ||= []
        @stereotypes << base
        base.extend(ClassMethods)
      end

      def git_stereotypes
        stereotypes.select { |c| c.name.demodulize.downcase.match('git') }
      end

      def nogit_stereotypes
        stereotypes - git_stereotypes
      end
    end

    module ClassMethods
      def stereotype_name
        name.gsub(/^.*::/, '')
      end

      def stereotype_name_in_color
        stereotype_name.send(color)
      end

      def publish_class
        sub_class('Publish')
      end

      def warp_class
        sub_class('Warp')
      end

      private

      def sub_class(sub_class_name)
        klass = const_get(sub_class_name)
        klass.is_a?(Class) ? klass : nil
      rescue NameError
        nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
eac_launcher-0.6.0 lib/eac_launcher/stereotype.rb