Class: UglifierWithSourceMaps::Compressor
- Inherits:
-
Object
- Object
- UglifierWithSourceMaps::Compressor
- Defined in:
- lib/uglifier_with_source_maps/compressor.rb
Class Method Summary collapse
Instance Method Summary collapse
- #compress(data, context) ⇒ Object
- #digest(io) ⇒ Object
-
#initialize(options = {}) ⇒ Compressor
constructor
A new instance of Compressor.
Constructor Details
#initialize(options = {}) ⇒ Compressor
Returns a new instance of Compressor.
7 8 9 10 11 12 13 14 15 |
# File 'lib/uglifier_with_source_maps/compressor.rb', line 7 def initialize( = {}) @uglifier = Uglifier.new() # @cache_key = [ # 'UglifierWithSourceMapsCompressor', # ::Uglifier::VERSION, # ::UglifierWithSourceMaps::VERSION, # options # ] end |
Class Method Details
.call(*args) ⇒ Object
3 4 5 |
# File 'lib/uglifier_with_source_maps/compressor.rb', line 3 def self.call(*args) new.call(*args) end |
Instance Method Details
#compress(data, context) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/uglifier_with_source_maps/compressor.rb', line 17 def compress(data, context) minified_data, sourcemap = @uglifier.compile_with_map(data) # write source map minified_filename = [Rails.application.config.assets.prefix, "#{context.logical_path}-#{digest(minified_data)}.js"].join('/') sourcemap_filename = [Rails.application.config.assets.prefix, Rails.application.config.assets.sourcemaps_prefix, "#{context.logical_path}-#{digest(minified_data)}.map"].join('/') concatenated_filename = [Rails.application.config.assets.prefix, Rails.application.config.assets.uncompressed_prefix, "#{context.logical_path}-#{digest(minified_data)}.js"].join('/') map = JSON.parse(sourcemap) map['file'] = minified_filename map['sources'] = [concatenated_filename] FileUtils.mkdir_p File.dirname(File.join(Rails.public_path, sourcemap_filename)) FileUtils.mkdir_p File.dirname(File.join(Rails.public_path, concatenated_filename)) # Write sourcemap and uncompressed js File.open(File.join(Rails.public_path, sourcemap_filename), "w") { |f| f.puts map.to_json } File.open(File.join(Rails.public_path, concatenated_filename), "w") {|f| f.write(data)} sourcemap_comment = "\n//# sourceMappingURL=#{sourcemap_filename}\n" return minified_data + sourcemap_comment end |
#digest(io) ⇒ Object
42 43 44 |
# File 'lib/uglifier_with_source_maps/compressor.rb', line 42 def digest(io) Rails.application.assets.digest.update(io).hexdigest end |