Sha256: 8954700c561ccce82484fceee42300f82cf70e17313145e289b0358666282d4f
Contents?: true
Size: 1.71 KB
Versions: 1
Compression:
Stored size: 1.71 KB
Contents
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/../../") SKETCH_PATH = ARGV.shift unless defined? SKETCH_PATH SKETCH_ROOT = File.dirname(SKETCH_PATH) unless defined? SKETCH_ROOT require 'ruby-processing' require 'ruby-processing/app' module Processing # For use with "bare" sketches that don't want to define a class or methods SKETCH_TEMPLATE = <<-EOS class Sketch < Processing::App <% if has_methods %> <%= source %> <% else %> def setup size(DEFAULT_WIDTH, DEFAULT_HEIGHT, JAVA2D) <%= source %> no_loop end <% end %> end EOS # This method is the common entry point to run a sketch, bare or complete. def self.load_and_run_sketch source = self.read_sketch_source has_sketch = !!source.match(/^[^#]*< Processing::App/) has_methods = !!source.match(/^[^#]*(def\s+setup|def\s+draw)/) if has_sketch load SKETCH_PATH Processing::App.sketch_class.new if !$app else require 'erb' code = ERB.new(SKETCH_TEMPLATE).result(binding) Object.class_eval code, SKETCH_PATH, -1 Processing::App.sketch_class.new end end # Read in the sketch source code. Needs to work both online and offline. def self.read_sketch_source if Processing.online? # Fuck the following lines. Fucking Java can go sit on broken glass. source = '' url = java.net.URL.new(JRUBY_APPLET.get_code_base, SKETCH_PATH) input = java.io.BufferedReader.new(java.io.InputStreamReader.new(url.open_stream)) while line = input.read_line do source << (line + "\n") if line end input.close else # Ahhh, much better. source = File.read(SKETCH_PATH) end source end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-processing-1.0.10.1 | lib/ruby-processing/runners/base.rb |