Module: Assiette::Rewriter

Defined in:
lib/assiette/rewriter.rb

Constant Summary collapse

JS_IMPORT_RE =

Matches quoted strings that look like relative/absolute JS import paths. Handles ./ ../ / but NOT protocol-relative // $1 = quote char, $2 = path including extension

/(["'])(\.{0,2}\/(?!\/)[^"']*\.(?:js|mjs|es))\1/
CSS_URL_RE =

Matches url() in CSS with relative/absolute paths. Handles url(./path), url(“./path”), url(‘../path’), url(/path) but NOT url(data:…), url(https://…), url(//…) $1 = opening (quote or empty), $2 = path, $3 = closing (quote or empty)

/url\((\s*["']?)(\.{0,2}\/(?!\/)[^)"']*?)(\s*["']?\s*)\)/

Class Method Summary collapse

Class Method Details

.rewrite_css_urls(source, version_tag) ⇒ Object



24
25
26
27
28
# File 'lib/assiette/rewriter.rb', line 24

def rewrite_css_urls(source, version_tag)
  source.gsub(CSS_URL_RE) do
    "url(#{$1}#{$2}?v=#{version_tag}#{$3})"
  end
end

.rewrite_js_imports(source, version_tag) ⇒ Object



18
19
20
21
22
# File 'lib/assiette/rewriter.rb', line 18

def rewrite_js_imports(source, version_tag)
  source.gsub(JS_IMPORT_RE) do
    "#{$1}#{$2}?v=#{version_tag}#{$1}"
  end
end