class Roadie::AssetScanner
except for having the attribute itself removed.
Any style declaration tagged with data-roadie-ignore will be ignored,
provider.
DOM tree. Referenced styles will be found using the provided asset
The asset scanner’s main usage is finding and/or extracting styles from a
@api private
def clean_css(css)
def clean_css(css) css.gsub(CLEANING_MATCHER, "") end
def extract_css
-
(Enumerable- every extracted stylesheet)
Other tags:
- See: #find_css -
def extract_css @dom.css(STYLE_ELEMENT_QUERY).map { |element| stylesheet = read_stylesheet(element) element.remove if stylesheet stylesheet }.compact end
def find_css
-
(Enumerable- every found stylesheet)
Other tags:
- See: #extract_css -
def find_css @dom.css(STYLE_ELEMENT_QUERY).map { |element| read_stylesheet(element) }.compact end
def initialize(dom, normal_asset_provider, external_asset_provider)
-
external_asset_provider(#find_stylesheet!) -- -
normal_asset_provider(#find_stylesheet!) -- -
dom(Nokogiri::HTML::Document) --
def initialize(dom, normal_asset_provider, external_asset_provider) @dom = dom @normal_asset_provider = normal_asset_provider @external_asset_provider = external_asset_provider end
def read_link_element(element)
def read_link_element(element) if Utils.path_is_absolute?(element["href"]) external_asset_provider.find_stylesheet! element["href"] if should_find_external? else normal_asset_provider.find_stylesheet! element["href"] end end
def read_style_element(element)
def read_style_element(element) Stylesheet.new "(inline)", clean_css(element.text.strip) end
def read_stylesheet(element)
def read_stylesheet(element) if element.name == "style" read_style_element element elsif element.name == "link" && element["media"] != "print" && element["href"] read_link_element element end end
def should_find_external?
def should_find_external? return false unless external_asset_provider # If external_asset_provider is empty list; don't use it. return false if external_asset_provider.respond_to?(:empty?) && external_asset_provider.empty? true end