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