Sha256: d3670e28e8b2ce8c1cb345d2769d9dde59c7e0a6dbf1f91207273f6aad5e2f66

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

# -*- encoding : utf-8 -*-

$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 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
      source = File.read(SKETCH_PATH)
    source
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-processing-2.4.4 lib/ruby-processing/runners/base.rb
ruby-processing-2.4.3 lib/ruby-processing/runners/base.rb