Skip to content

Instantly share code, notes, and snippets.

@jaysoo
Forked from sstephenson/pack.rb
Created August 11, 2010 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaysoo/519457 to your computer and use it in GitHub Desktop.
Save jaysoo/519457 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# js1k packer
if ARGV[0] == "-n"
ARGV.shift
wrap = false
else
wrap = true
end
source = $<.read
source.gsub! %r</\*.+?\*/>, ''
source.gsub! %r<\s*\n\s*>m, '¥'
source.gsub! %r<¥+>, ';'
source.gsub! %r<^;|;$>, ''
source.gsub! '};function', '}function'
source.gsub! %r<function ?>, '@'
source.gsub! %r<return ?>, 'Q'
source.gsub! "'),s(3,'", 'J'
if wrap
program = <<-EOS.gsub("\n", "")
eval(
"#{source}"
.replace(/@/g,'function ')
.replace(/Q/g,'return ')
.replace(/J/g,"'),s(3,'")
)
EOS
else
program = source
end
program.chomp!
print program
$stderr.puts "%8d bytes" % program.length
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment