Sha256: 017ff06a2b30270f9b2dbc8bf1e9af8867292f6874d74e43aa2a9f7bc45f6ec0

Contents?: true

Size: 1.07 KB

Versions: 6

Compression:

Stored size: 1.07 KB

Contents

require 'rails/engine'

module Adva
  autoload :Engine,     'adva/engine'
  autoload :Generators, 'adva/generators'
  autoload :Rack,       'adva/rack'
  autoload :Registry,   'adva/registry'
  autoload :Responder,  'adva/responder'
  autoload :Tasks,      'adva/tasks/core'
  autoload :Testing,    'adva/testing'
  autoload :View,       'adva/view'

  mattr_accessor :out
  self.out = $stdout

  class << self
    def engines
      @engines ||= constants.map do |name|
        constant = const_get(name)
        constant if constant != Adva::Core && constant.is_a?(Class) && constant < ::Rails::Engine
      end.compact.sort { |lft, rgt| lft.name <=> rgt.name }.unshift(Adva::Core)
    end

    def engine(name)
      name = "Adva::#{name.camelize}" unless name.to_s.starts_with?('Adva::')
      engines.detect { |engine| engine.name == name }
    end

    def engine_names
      @engine_names ||= engines.map { |constant| constant.name.split('::').last.underscore.to_sym }
    end

    def engine?(name)
      engine_names.include?(name)
    end
    alias :installed? :engine?
  end
end


Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
adva-core-0.0.9 lib/adva.rb
adva-core-0.0.8 lib/adva.rb
adva-core-0.0.7 lib/adva.rb
adva-core-0.0.6 lib/adva.rb
adva-core-0.0.5 lib/adva.rb
adva-core-0.0.4 lib/adva.rb