Sha256: a6d32aa56a8be049e463f82de99de607ac9dd1872a8503ec30a0d167f3482dfa

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

module Sprockets
  # Internal: Used for lazy loading processors.
  #
  # Libraries should not use lazily loaded processors. They are only needed
  # internally by Sprockets since it has optionally dependencies such as
  # CoffeeScript that may not be available in the gem environment.
  class AutoloadProcessor
    # Initialize AutoloadProcessor wrapper
    #
    # See ProcessorUtils.autoload_processor for constructor method.
    #
    # mod  - Parent Module of processor class/module
    # name - Symbol name of processor class/module
    def initialize(mod, name)
      @mod  = mod
      @name = name.to_sym
    end

    # Full name of module.
    #
    # Returns String.
    def name
      "#{@mod}::#{@name}"
    end

    # Check if target constant is already loaded.
    #
    # Returns Boolean.
    def const_loaded?
      @mod.autoload?(@name)
    end

    # Delegate to processor#cache_key
    def cache_key
      load_processor.cache_key if load_processor.respond_to?(:cache_key)
    end

    # Delegate to processor#call
    def call(*args)
      load_processor.call(*args)
    end

    private
      def load_processor
        @processor ||= @mod.const_get(@name)
      end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sprockets-3.0.0.beta.8 lib/sprockets/autoload_processor.rb
sprockets-3.0.0.beta.7 lib/sprockets/autoload_processor.rb