FFI Javascript minifier
Description
This library was created in order to provide a reasonably fast Javascript
minifier on JRuby platform.
Both native Java and Ruby implementations were found to be in several orders
of magnitude slower.
The only change from the original C implementation, is that it was changed
to C++ (in order to make global variables become instance variables),
and it works with buffers rather than stdin/stdout now.
Synopsis
require 'jsmin_ffi' input = IO.read('prototype.js') begin output = JsminFFI.minify!(input) File.open('output.js', 'w') {|f| f.write(output)} rescue Jsmin::ParseError => e $stderr.puts "Cannot minify: #{e}" end
or use a native extension:
require ‘Jsmin’
input = IO.read(‘jquery.js’)
begin
output = Jsmin.minify(input)
File.open(‘output.js’, ‘w’) {|f| f.write(output)}
rescue Jsmin::ParseError => e
$stderr.puts “Cannot minify: #{e}”
end
Bugs
The memory allocated in the C++ code might not be freed when using FFI.
It depends on how FFI handles the returned char*.
See also
For the original implementation, please see:
http://www.crockford.com/javascript/jsmin.html