module Premailer::Rails::CSSHelper
Constants
- FileNotFound
Attributes
cache[RW]
Public Instance Methods
css_for_doc(doc)
click to toggle source
Returns all linked CSS files concatenated as string.
# File lib/premailer/rails/css_helper.rb, line 12 def css_for_doc(doc) css_urls_in_doc(doc).map { |url| css_for_url(url) }.join("\n") end
css_for_url(url)
click to toggle source
# File lib/premailer/rails/css_helper.rb, line 16 def css_for_url(url) if cache_enabled? load_css_with_cache(url) else load_css(url) end end
Private Instance Methods
cache_enabled?()
click to toggle source
# File lib/premailer/rails/css_helper.rb, line 41 def cache_enabled? defined?(::Rails.env) && ::Rails.env.production? end
css_urls_in_doc(doc)
click to toggle source
# File lib/premailer/rails/css_helper.rb, line 26 def css_urls_in_doc(doc) doc.search('link[@rel="stylesheet"]:not([@data-premailer="ignore"])').map do |link| if link.respond_to?(:remove) link.remove else link.parent.children.delete(link) end link.attributes['href'].to_s end end
find_strategy(key)
click to toggle source
# File lib/premailer/rails/css_helper.rb, line 54 def find_strategy(key) case key when :filesystem CSSLoaders::FileSystemLoader when :asset_pipeline CSSLoaders::AssetPipelineLoader when :network CSSLoaders::NetworkLoader else key end end
load_css(url)
click to toggle source
# File lib/premailer/rails/css_helper.rb, line 45 def load_css(url) Premailer::Rails.config.fetch(:strategies).each do |strategy| css = find_strategy(strategy).load(url) return css if css end raise FileNotFound, %{File with URL "#{url}" could not be loaded by any strategy.} end
load_css_with_cache(url)
click to toggle source
# File lib/premailer/rails/css_helper.rb, line 37 def load_css_with_cache(url) self.cache[url] ||= load_css(url) end