Sha256: 8a7df70da1762797c4e45245646d49fa5a34b1b99b48068f360f0841edb7d7ad

Contents?: true

Size: 1.46 KB

Versions: 22

Compression:

Stored size: 1.46 KB

Contents

require_relative 'native_folder'
require_relative 'native_loader'
require 'pathname'

# This class knows where to find picrate libraries
class Library
  attr_reader :name, :path, :dir, :ppath

  def initialize(name)
    @name = name
    @ruby = true
  end

  def locate
    return if (@path = Pathname.new(
      File.join(Processing::SKETCH_ROOT, 'library', name, "#{name}.rb")
    )).exist?
    return if (@path = Pathname.new(
      File.join(PICRATE_ROOT, 'library', name, "#{name}.rb")
    )).exist?
    locate_java
  end

  def locate_java
    @dir = Pathname.new(
      File.join(Processing::SKETCH_ROOT, 'library', name)
    )
    locate_installed_java
  end

  def locate_installed_java
    unless dir.directory?
      @dir = Pathname.new(
        File.join(ENV['HOME'], '.picrate', 'libraries', name, 'library')
      )
    end
    @path = dir.join(Pathname.new("#{name}.jar"))
  end

  def ruby?
    path.extname == '.rb'
  end

  def exist?
    path.exist?
  end

  def load_jars
    Dir.glob("#{dir}/*.jar").each do |jar|
      require jar
    end
    return true unless native_binaries?
    add_binaries_to_classpath
  end

  def native_binaries?
    native_folder = NativeFolder.new
    native = native_folder.name
    @ppath = File.join(dir, native)
    File.directory?(ppath) &&
      !Dir.glob(File.join(ppath, native_folder.extension)).empty?
  end

  def add_binaries_to_classpath
    native_loader = NativeLoader.new
    native_loader.add_native_path(ppath)
    true
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
picrate-1.3.0-java lib/picrate/library.rb
picrate-1.2.4-java lib/picrate/library.rb
picrate-1.2.3-java lib/picrate/library.rb
picrate-1.2.2-java lib/picrate/library.rb
picrate-1.2.1-java lib/picrate/library.rb
picrate-1.2.0-java lib/picrate/library.rb
picrate-1.1.0-java lib/picrate/library.rb
picrate-1.0.0-java lib/picrate/library.rb
picrate-0.9.0-java lib/picrate/library.rb
picrate-0.8.0-java lib/picrate/library.rb
picrate-0.7.0-java lib/picrate/library.rb
picrate-0.6.0-java lib/picrate/library.rb
picrate-0.5.0-java lib/picrate/library.rb
picrate-0.4.3-java lib/picrate/library.rb
picrate-0.4.2-java lib/picrate/library.rb
picrate-0.4.1-java lib/picrate/library.rb
picrate-0.4.0-java lib/picrate/library.rb
picrate-0.3.0-java lib/picrate/library.rb
picrate-0.2.0-java lib/picrate/library.rb
picrate-0.1.0-java lib/picrate/library.rb