Sha256: dbd4c69fc0a34de0f7ac58db39ea314e7a571c5e7dc08d8c19a01d8fb5cedd6a

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

require "pakyow/support/extension"

module Pakyow
  module Behavior
    # Manages {Framework} instances.
    #
    module Frameworks
      extend Support::Extension

      apply_extension do
        setting :loaded_frameworks, []
      end

      class_methods do
        # Includes one or more frameworks into the app class.
        #
        def include_frameworks(*frameworks)
          tap do
            frameworks.each do |framework_name|
              include_framework(framework_name)
            end
          end
        end

        # Includes a framework into the app class.
        #
        def include_framework(framework_name)
          framework_name = framework_name.to_sym
          Pakyow.frameworks.fetch(framework_name).new(self).boot
          (config.loaded_frameworks << framework_name).uniq!
        rescue KeyError => error
          raise UnknownFramework.build(error, framework: framework_name)
        end

        # Returns true if +framework+ is loaded.
        #
        def includes_framework?(framework_name)
          config.loaded_frameworks.include?(framework_name.to_sym)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pakyow-core-1.0.0.rc5 lib/pakyow/behavior/frameworks.rb
pakyow-core-1.0.0.rc4 lib/pakyow/behavior/frameworks.rb
pakyow-core-1.0.0.rc3 lib/pakyow/behavior/frameworks.rb
pakyow-core-1.0.0.rc2 lib/pakyow/behavior/frameworks.rb
pakyow-core-1.0.0.rc1 lib/pakyow/behavior/frameworks.rb