Sha256: c36bbac9a7432834782277339811ea970902a50afc17a5c389cf6040d41d4580

Contents?: true

Size: 1.22 KB

Versions: 5

Compression:

Stored size: 1.22 KB

Contents

module Trackman
  module Assets
    module Components
      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 Rails32PathResolver, BundledAsset
            return instance
          elsif rails_defined? #fallback to rails without asset pipeline
            instance.extend RailsPathResolver
          end
          instance.extend Hashable

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

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
trackman-0.4.7 lib/trackman/assets/components/asset_factory.rb
trackman-0.4.6 lib/trackman/assets/components/asset_factory.rb
trackman-0.4.5 lib/trackman/assets/components/asset_factory.rb
trackman-0.4.4 lib/trackman/assets/components/asset_factory.rb
trackman-0.4.3 lib/trackman/assets/components/asset_factory.rb