Class: Csspin::CssImportsInliner
- Inherits:
-
Object
- Object
- Csspin::CssImportsInliner
- Defined in:
- lib/csspin/css_imports_inliner.rb
Constant Summary collapse
- IMPORT_RE =
/\A\s*@import\s+(?:url\(\s*)?["'](?<path>[^"']+)["']\s*\)?\s*(?<media>[^;]*);\s*\z/
Instance Method Summary collapse
-
#initialize(downloader:) ⇒ CssImportsInliner
constructor
A new instance of CssImportsInliner.
- #inline(css, base_url:, import_stack: []) ⇒ Object
Constructor Details
#initialize(downloader:) ⇒ CssImportsInliner
Returns a new instance of CssImportsInliner.
9 10 11 |
# File 'lib/csspin/css_imports_inliner.rb', line 9 def initialize(downloader:) @downloader = downloader end |
Instance Method Details
#inline(css, base_url:, import_stack: []) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/csspin/css_imports_inliner.rb', line 13 def inline(css, base_url:, import_stack: []) return css unless css.include?("@import") out = +"" css.each_line do |line| match = IMPORT_RE.match(line) out << if match && relative_css_path?(match[:path]) && match[:media].to_s.strip.empty? fetch_css(base_url, match[:path], import_stack) else line end end out end |