Sha256: a1371fca96d237e1f0fa3cb2052ed22cf9412fe3596b11ea5c2e50710b3083e5

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 KB

Contents

module Processing
  
  # This class creates blank sketches, with the boilerplate filled in.
  class Creator < BaseExporter
    
    ALL_DIGITS = /\A\d+\Z/
    
    # Create a blank sketch, given a path.
    def create!(path, args, p3d)
      usage path
      main_file = File.basename(path, ".rb")
      # Check to make sure that the main file exists
      already_exists = File.exist?(path) || File.exist?("#{File.dirname(path)}/#{main_file.underscore}.rb")
      if already_exists
        puts "That sketch already exists."
        exit
      end
      
      # Get the substitutions
      @name           = main_file.camelize
      @file_name      = main_file.underscore
      @title          = main_file.titleize
      
      @width, @height = args[0], args[1]
      @with_size      = @width && @width.match(ALL_DIGITS) &&
                        @height && @height.match(ALL_DIGITS)
  
      # Make the file
      dir = File.dirname path
      mkdir_p dir
      template_name = p3d ? 'p3d_sketch.rb.erb' : 'blank_sketch.rb.erb'
      template = File.new("#{RP5_ROOT}/lib/templates/create/#{template_name}")
      rendered = render_erb_from_string_with_binding(template.read, binding)
      full_path = File.join(dir, "#{@file_name}.rb")
      File.open(full_path, "w") {|f| f.print(rendered) }
      puts "Created Sketch \"#{@name}\" in #{full_path.sub(/\A\.\//, '')}"
    end
    
    # Show the help/usage message for create.
    def usage(predicate)
      unless predicate
        puts <<-USAGE
  
      Usage: script/generate <sketch_to_generate> <width> <height>
      Width and Height are optional.
      
      Example: script/generate fancy_drawing/app 800 600
  
      USAGE
        exit
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby-processing-2.4.4 lib/ruby-processing/exporters/creator.rb
ruby-processing-2.4.3 lib/ruby-processing/exporters/creator.rb
ruby-processing-2.4.2 lib/ruby-processing/exporters/creator.rb