Sha256: 628dc601e32b3503513493e522e95c880a67c4020bd88b12d40db0abda89173b

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

require 'pathname'
require 'json'

module Vitrine
  def self.build_coffeescript_source_map_body(full_coffeescript_file_path, public_dir_path)
    
    script = File.read(full_coffeescript_file_path)
    
    # We need to feed paths ON THE SERVER so that the browser can connect the coffee file, the map and the JS file
    # - specify coffee source file explicitly (see http://coffeescript.org/documentation/docs/sourcemap.html#section-8)
    # The paths need to be slash-prepended (server-absolute)
    relative_path = '/' + Pathname.new(full_coffeescript_file_path).relative_path_from(Pathname.new(public_dir_path)).to_s
    relative_js_path = '/' + relative_path.gsub(/\.coffee$/, '.js')
    
    options = {sourceMap: true}
    
    # coffee requires filename option to work with source maps (see http://coffeescript.org/documentation/docs/coffee-script.html#section-4)
    options[:filename] = relative_js_path
    options[:sourceFiles] = [relative_path]
    
    CoffeeScript.compile(script, options)["v3SourceMap"]
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vitrine-0.0.11 lib/sourcemaps.rb
vitrine-0.0.10 lib/sourcemaps.rb
vitrine-0.0.9 lib/sourcemaps.rb