lib/sourcemaps.rb in vitrine-0.0.18 vs lib/sourcemaps.rb in vitrine-0.0.19

- old
+ new

@@ -1,52 +1,9 @@ require 'pathname' require 'json' 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 - def public_url(of_filesystem_path) - scss_uri = '/' + 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' - - engine_opts = {importer: Imp.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 - sourcemap_body = mapping.to_json(map_options) - - [rendered, sourcemap_body] - end - - # Compile SASS and return the source map only - def self.compile_sass_source_map(scss_path, public_folder_path) - css, map = compile_sass_and_sourcemap(scss_path, public_folder_path) - map - end - - # Compiles SASS and it's sourcemap and returns the CSS only - def self.compile_sass(scss_path, public_folder_path) - css, map = compile_sass_and_sourcemap(scss_path, public_folder_path) - css - end - # Compile a script (String or IO) to JavaScript. # This is a version lifted from here # https://github.com/josh/ruby-coffee-script/blob/114b65b638f66ba04b60bf9c24b54360260f9898/lib/coffee_script.rb # which propagates error line def self.compile_coffeescript(script, options = {}) \ No newline at end of file