lib/sourcemaps.rb in vitrine-0.0.21 vs lib/sourcemaps.rb in vitrine-0.0.22
- old
+ new
@@ -3,40 +3,44 @@
module Vitrine
# We need to override the Sass importer
# so that it gives us URLs relative to the server root for sourcemaps
- class Imp < Sass::Importers::Filesystem
+ class SassImporter < Sass::Importers::Filesystem
def public_url(of_filesystem_path)
- scss_uri = '/' + Pathname.new(of_filesystem_path).relative_path_from(Pathname.new(root)).to_s
+ # Importer defines a basic attribute called "root" which we set when initializing
+ # We have to return the server-relative URL of the path from here
+ '/' + Pathname.new(of_filesystem_path).relative_path_from(Pathname.new(root)).to_s
end
end
# Compile a SASS/SCSS file to CSS
def self.compile_sass_and_sourcemap(scss_path, public_folder_path)
# Compute the paths relative to the webserver public root
scss_uri = '/' + Pathname.new(scss_path).relative_path_from(Pathname.new(public_folder_path)).to_s
css_uri = scss_uri.gsub(/\.scss$/, '.css')
- sourcemap_uri= css_uri + '.map'
+ sourcemap_uri = css_uri + '.map'
- engine_opts = {importer: Imp.new(public_folder_path), sourcemap: true, cache: false}
+ engine_opts = {importer: SassImporter.new(public_folder_path), sourcemap: true, cache: false}
map_options = {css_path: css_uri, sourcemap_path: sourcemap_uri }
engine = Sass::Engine.for_file(scss_path, engine_opts)
# Determine the sourcemap URL for the SASS file
rendered, mapping = engine.render_with_sourcemap(sourcemap_uri)
# Serialize the sourcemap
- # We need to pass css_uri: so that the generated sourcemap refers to the
- # file that can be pulled of the server as opposed to a file on the filesystem
+ # We need to pass the map options so that the generated sourcemap refers to the
+ # file that can be pulled off the server as opposed to a file on the filesystem
sourcemap_body = mapping.to_json(map_options)
# We are using a pre-release version of SASS which still had old sourcemap reference
# syntax, so we have to fix it by hand
chunk = Regexp.escape('/*@ sourceMappingURL')
replacement = '/*# sourceMappingURL'
re = /^#{chunk}/
+
+ # And return both
[rendered.gsub(re,replacement), sourcemap_body]
end
# Compile SASS and return the source map only
def self.compile_sass_source_map(scss_path, public_folder_path)
\ No newline at end of file