Created
July 12, 2014 09:49
-
-
Save monkstone/b8a40cf350bd194bc0a8 to your computer and use it in GitHub Desktop.
Use require relative instead of all that __FILE__ magic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- encoding : utf-8 -*- | |
SKETCH_PATH ||= ARGV.shift | |
SKETCH_ROOT ||= File.dirname(SKETCH_PATH) | |
require_relative '../../jruby_art' | |
require_relative '../../jruby_art/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 File.join(SKETCH_ROOT, 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 | |
File.read(SKETCH_PATH) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment