Sha256: dc61a14e8cc52ba8ffac5f52e9b057d3ad0dd3bc2142695d65bc33b07ec6a5ab

Contents?: true

Size: 857 Bytes

Versions: 9

Compression:

Stored size: 857 Bytes

Contents

class Premailer
  module Rails
    module CSSHelper
      extend self

      @cache = {}
      attr :cache

      STRATEGIES = [
        CSSLoaders::CacheLoader,
        CSSLoaders::FileSystemLoader,
        CSSLoaders::AssetPipelineLoader,
        CSSLoaders::NetworkLoader
      ]

      # Returns all linked CSS files concatenated as string.
      def css_for_doc(doc)
        urls = css_urls_in_doc(doc)
        urls.map { |url| load_css(url).force_encoding('UTF-8') }.join("\n")
      end

      private

      def css_urls_in_doc(doc)
        doc.search('link[@rel="stylesheet"]').map do |link|
          link.attributes['href'].to_s
        end
      end

      def load_css(url)
        @cache[url] =
          STRATEGIES.each do |strategy|
            css = strategy.load(url)
            break css if css
          end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
solidus_backend-1.0.0.pre3 vendor/bundle/gems/premailer-rails-1.8.2/lib/premailer/rails/css_helper.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/premailer-rails-1.8.2/lib/premailer/rails/css_helper.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/premailer-rails-1.8.2/lib/premailer/rails/css_helper.rb
premailer-rails-1.8.2 lib/premailer/rails/css_helper.rb
premailer-rails-1.8.1 lib/premailer/rails/css_helper.rb
premailer-rails-1.8.0 lib/premailer/rails/css_helper.rb
premailer-rails-1.7.0 lib/premailer/rails/css_helper.rb
premailer-rails-1.6.1 lib/premailer/rails/css_helper.rb
premailer-rails-1.6.0 lib/premailer/rails/css_helper.rb