Sha256: e240b2dce55dffed5a1f273206a7137cb09e1e23a3959672e1f5c2cca9abd5aa

Contents?: true

Size: 1.2 KB

Versions: 7

Compression:

Stored size: 1.2 KB

Contents

module Trackman
  module Assets
    module AssetFactory
      def create attributes = {}
        path = attributes[:path]
        instance = retrieve_parent(path).new attributes
        add_content_behavior instance
      end

      def retrieve_parent path
        if File.extname(path) == '.html'
          parent = HtmlAsset
        elsif File.extname(path) == '.css'
          parent = CssAsset 
        else
          parent = Asset
        end
        parent 
      end

      def add_content_behavior instance
        if asset_pipeline_enabled?
          instance.extend Trackman::Path::Rails32Resolver, BundledAsset
          return instance
        elsif rails_defined? #fallback to rails without asset pipeline
          instance.extend Trackman::Path::RailsResolver
        end
        instance.extend Trackman::Components::Hashable

        instance
      end
      
      def rails_defined?
        Object.const_defined?(:Rails)
      end

      def asset_pipeline_enabled?
         rails_defined? && 
         Rails.respond_to?(:application) &&
         Rails.application.config.assets.enabled &&
         Rails.application.respond_to?(:assets) &&
         Rails.application.assets
      end  
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
trackman-0.6.3 lib/trackman/assets/asset_factory.rb
trackman-0.6.2 lib/trackman/assets/asset_factory.rb
trackman-0.6.1 lib/trackman/assets/asset_factory.rb
trackman-0.6.0 lib/trackman/assets/asset_factory.rb
trackman-0.5.8 lib/trackman/assets/asset_factory.rb
trackman-0.5.7 lib/trackman/assets/asset_factory.rb
trackman-0.5.6 lib/trackman/assets/asset_factory.rb