jruby_art 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ee4767110e0ed4aeaa943f225dc6bc31a3f1f3a
4
- data.tar.gz: 39fcc2a3cc9c1fe90ef46376978450243e352f31
3
+ metadata.gz: 3f5a2a6e4f71fa4b9b431e90623c6813bd8f3c43
4
+ data.tar.gz: 138573a28fe79c3982c22452369a6379cd77943c
5
5
  SHA512:
6
- metadata.gz: 0e5d43a19b51bc45d2e4d5d31422fc804969329a0c1f0243f3a65a5df8d86a397bb5e0401ef31c916920ccd6698dccb2642c49b4f27a377325ee6ebda13b3e51
7
- data.tar.gz: 3d27521dd0852aa24392675826e787d8aa267cb63be9292db9a10da64adb1bdfd94699843a692866ae0589fc23b3dc335739ae022a8e7def0bdd42a97e1780bd
6
+ metadata.gz: e167c2fbcb36d8bceba43f6c04ae2f6c0ed5acb4f212435800ca8b3f2e2383a75f051ba07e2deca202b845824f15c7a20169f783f3bdbaa886e35416be1f16b6
7
+ data.tar.gz: 880b701d19c4235ae7b862069912c2187df92c1f7230c3168b02219467dbec018793a777a9d894c1dec5d713f7317c65733e51d49257635183c8c8e17ce92493
data/lib/jruby_art/app.rb CHANGED
@@ -32,6 +32,9 @@ module Processing
32
32
  key_released: :keyReleased,
33
33
  key_typed: :keyTyped
34
34
  }.freeze
35
+ class << self
36
+ attr_accessor :app
37
+ end
35
38
  # All sketches extend this class
36
39
  class App < PApplet
37
40
  include HelperMethods
@@ -99,7 +102,7 @@ module Processing
99
102
 
100
103
  def initialize(options = {})
101
104
  super()
102
- $app = self
105
+ Processing.app = self
103
106
  post_initialize(options)
104
107
  proxy_java_fields
105
108
  mix_proxy_into_inner_classes
@@ -161,7 +164,7 @@ module Processing
161
164
  surface.stopThread
162
165
  surface.setVisible(false) if surface.isStopped
163
166
  dispose
164
- $app = nil
167
+ Processing.app = nil
165
168
  end
166
169
 
167
170
  def exit
@@ -199,12 +202,12 @@ module Processing
199
202
  include HelperMethods
200
203
  include Java::ProcessingCore::PConstants
201
204
 
202
- def respond_to_missing?(symbol, include_priv = false)
203
- $app.respond_to?(symbol, include_priv) || super
205
+ def respond_to_missing?(name, include_private = false)
206
+ Processing.app.respond_to?(name) || super
204
207
  end
205
208
 
206
- def method_missing(name, *args, &block)
207
- return $app.send(name, *args) if $app.respond_to? name
209
+ def method_missing(name, *args)
210
+ return Processing.app.send(name, *args) if Processing.app && Processing.app.respond_to?(name)
208
211
  super
209
212
  end
210
213
  end # Processing::Proxy
@@ -5,7 +5,7 @@ require 'yaml'
5
5
  # The wrapper module
6
6
  module Processing
7
7
  unless defined? RP_CONFIG
8
- config_path = '~/.jruby_art/config.yml'
8
+ config_path = "#{ENV['HOME']}/.jruby_art/config.yml"
9
9
  begin
10
10
  CONFIG_FILE_PATH = File.expand_path(config_path)
11
11
  RP_CONFIG = YAML.load_file(CONFIG_FILE_PATH)
@@ -41,14 +41,3 @@ module Processing
41
41
 
42
42
  OS ||= HostOS.os
43
43
  end
44
-
45
- # This class encapulates knowledge of processing sketchbook structure
46
- class Sketchbook
47
- def self.path
48
- File.join(Processing::RP_CONFIG['sketchbook_path'], 'libraries')
49
- end
50
-
51
- def self.library(name)
52
- Dir["#{path}/#{name}/library/\*.jar"]
53
- end
54
- end
@@ -1,33 +1,33 @@
1
1
  # frozen_string_literal: false
2
2
  require 'yaml'
3
3
 
4
- VERSION = '3.3.4'.freeze # processing version
4
+ VERSION = '3.3.6'.freeze # processing version
5
5
 
6
6
  # Abstract Installer class
7
7
  class Installer
8
- attr_reader :os, :sketch, :gem_root, :home
8
+ attr_reader :os, :sketch, :gem_root, :confd
9
9
  def initialize(root, os)
10
10
  @os = os
11
11
  @gem_root = root
12
- @home = ENV['HOME']
13
- @sketch = "#{home}/sketchbook" if os == :linux
14
- @sketch = "#{home}/My Documents/Processing" if os == :windows
15
- @sketch = "#{home}/Documents/Processing" if os == :mac
12
+ @sketch = "#{ENV['HOME']}/sketchbook" if os == :linux
13
+ @sketch = "#{ENV['HOME']}/My Documents/Processing" if os == :windows
14
+ @sketch = "#{ENV['HOME']}/Documents/Processing" if os == :mac
15
+ @confd = "#{ENV['HOME']}/.jruby_art"
16
16
  end
17
17
 
18
18
  # Optimistically set processing root
19
19
  def set_processing_root
20
- require 'psych'
21
- folder = File.expand_path("#{home}/.jruby_art")
20
+ folder = "#{ENV['HOME']}/.jruby_art"
22
21
  Dir.mkdir(folder) unless File.exist? folder
23
22
  path = File.join(folder, 'config.yml')
24
- proot = "#{home}/processing-#{VERSION}"
23
+ proot = "#{ENV['HOME']}/processing-#{VERSION}"
25
24
  proot = "/Java/Processing-#{VERSION}" if os == :windows
26
25
  proot = "/Applications/Processing.app/Contents/Java" if os == :mac
27
26
  settings = %w(PROCESSING_ROOT JRUBY sketchbook_path template MAX_WATCH sketch_title width height)
28
27
  values = [proot, true, sketch, 'bare', 32, 'JRubyArt Static Sketch', 600, 600]
29
28
  data = settings.zip(values).to_h
30
29
  open(path, 'w:UTF-8') { |file| file.write(data.to_yaml) }
30
+ warn 'PROCESSING_ROOT set optimistically, run check to confirm'
31
31
  end
32
32
 
33
33
  def root_exist?
@@ -35,7 +35,7 @@ class Installer
35
35
  end
36
36
 
37
37
  def config
38
- k9config = File.expand_path("#{home}/.jruby_art/config.yml")
38
+ k9config = File.join(confd, 'config.yml')
39
39
  return '' unless File.exist? k9config
40
40
  YAML.load_file(k9config)
41
41
  end
@@ -54,7 +54,7 @@ end
54
54
 
55
55
  # Configuration checker
56
56
  class Check < Installer
57
- require_relative 'core'
57
+ require_relative './core'
58
58
  def install
59
59
  show_version
60
60
  return super unless config
@@ -86,9 +86,7 @@ end
86
86
  # JRuby-Complete installer
87
87
  class JRubyCompleteInstall < Installer
88
88
  def install
89
+ set_processing_root unless File.exist? File.join(confd, 'config.yml')
89
90
  system "cd #{gem_root}/vendors && rake"
90
- return if root_exist?
91
- set_processing_root
92
- warn 'PROCESSING_ROOT set optimistically, run check to confirm'
93
91
  end
94
92
  end
@@ -0,0 +1,84 @@
1
+ require_relative 'native_folder'
2
+ require_relative 'native_loader'
3
+
4
+ require 'pathname'
5
+
6
+ BUNDLED = %r{pdf|net|dxf|svg|serial}
7
+ # This class knows where to find propane libraries
8
+ class Library
9
+ require_relative '../jruby_art'
10
+ require_relative './config'
11
+ attr_reader :name, :path, :dir, :ppath
12
+
13
+ def initialize(name)
14
+ @name = name
15
+ @ruby = true
16
+ end
17
+
18
+ def locate
19
+ return if (@path = Pathname.new(
20
+ File.join(SKETCH_ROOT, 'library', name, "#{name}.rb")
21
+ )).exist?
22
+ return if (@path = Pathname.new(
23
+ File.join(K9_ROOT, 'library', name, "#{name}.rb")
24
+ )).exist?
25
+ locate_java
26
+ end
27
+
28
+ def locate_java
29
+ @dir = Pathname.new(
30
+ File.join(SKETCH_ROOT, 'library', name)
31
+ )
32
+ return @path = dir.join(Pathname.new("#{name}.jar")) if dir.directory?
33
+ locate_installed_java
34
+ end
35
+
36
+ def locate_installed_java
37
+ prefix = bundled? ? File.join(root, 'modes/java') : sketchbook
38
+ @dir = Pathname.new(
39
+ File.join(prefix, "libraries/#{name}/library")
40
+ )
41
+ @path = dir.join(Pathname.new("#{name}.jar"))
42
+ end
43
+
44
+ def sketchbook
45
+ Processing::RP_CONFIG.fetch('sketchbook_path', "#{ENV['HOME']}/sketchbook")
46
+ end
47
+
48
+ def root
49
+ Processing::RP_CONFIG.fetch('PROCESSING_ROOT', "#{ENV['HOME']}/processing")
50
+ end
51
+
52
+ def ruby?
53
+ path.extname == '.rb'
54
+ end
55
+
56
+ def bundled?
57
+ BUNDLED =~ name
58
+ end
59
+
60
+ def exist?
61
+ path.exist?
62
+ end
63
+
64
+ def load_jars
65
+ Dir.glob("#{dir}/*.jar").each do |jar|
66
+ require jar
67
+ end
68
+ return unless native_binaries?
69
+ add_binaries_to_classpath
70
+ end
71
+
72
+ def native_binaries?
73
+ native_folder = NativeFolder.new
74
+ native = native_folder.name
75
+ @ppath = File.join(dir, native)
76
+ File.directory?(ppath) &&
77
+ !Dir.glob(File.join(ppath, native_folder.extension)).empty?
78
+ end
79
+
80
+ def add_binaries_to_classpath
81
+ native_loader = NativeLoader.new
82
+ native_loader.add_native_path(ppath)
83
+ end
84
+ end
@@ -1,16 +1,13 @@
1
1
  # frozen_string_literal: false
2
-
3
- require_relative '../jruby_art'
4
- require_relative 'config'
5
- # require_relative 'sketchbook'
6
2
  # The processing wrapper module
7
3
  module Processing
4
+ require_relative 'library'
5
+
8
6
  # Encapsulate library loader functionality as a class
9
7
  class LibraryLoader
10
- attr_reader :sketchbook_library_path
8
+ attr_reader :library
11
9
 
12
10
  def initialize
13
- @sketchbook_library_path = File.join(Processing::RP_CONFIG['sketchbook_path'], 'libraries')
14
11
  @loaded_libraries = Hash.new(false)
15
12
  end
16
13
 
@@ -20,99 +17,36 @@ module Processing
20
17
  end
21
18
 
22
19
  # Load a list of Ruby or Java libraries (in that order)
23
- # Usage: load_libraries :opengl, :boids
20
+ # Usage: load_libraries :video, :video_event
24
21
  #
25
22
  # If a library is put into a 'library' folder next to the sketch it will
26
- # be used instead of the library that ships with JRubyArt.
23
+ # be used instead of the library that ships with Propane.
27
24
  def load_libraries(*args)
28
25
  message = 'no such file to load -- %s'
29
26
  args.each do |lib|
30
- loaded = load_ruby_library(lib) || load_java_library(lib)
27
+ loaded = loader(lib)
31
28
  raise(LoadError.new, format(message, lib)) unless loaded
32
29
  end
33
30
  end
34
31
  alias load_library load_libraries
35
32
 
36
- # For pure ruby libraries.
37
- # The library should have an initialization ruby file
38
- # of the same name as the library folder.
39
- def load_ruby_library(library_name)
40
- library_name = library_name.to_sym
41
- return true if @loaded_libraries.include?(library_name)
42
- path = get_library_paths(library_name, 'rb').first
43
- return false unless path
44
- @loaded_libraries[library_name] = (require path)
45
- end
46
-
47
- # HACK: For pure java libraries, such as the ones that are available
48
- # on this page: http://processing.org/reference/libraries/index.html
49
- # that include native code, we mess with the 'Java ClassLoader', so that
50
- # you don't have to futz with your PATH. But it's probably bad juju.
51
- def load_java_library(library_name)
52
- library_name = library_name.to_sym
53
- return true if @loaded_libraries.include?(library_name)
54
- jpath = get_library_directory_path(library_name, 'jar')
55
- jars = get_library_paths(library_name, 'jar')
56
- return false if jars.empty?
57
- jars.each { |jar| require jar }
58
- platform_specific_library_paths = get_platform_specific_library_paths(jpath)
59
- platform_specific_library_paths = platform_specific_library_paths.select do |ppath|
60
- FileTest.directory?(ppath) && !Dir.glob(File.join(ppath, '*.{so,dll,jnilib}')).empty?
61
- end
62
- unless platform_specific_library_paths.empty?
63
- platform_specific_library_paths << java.lang.System.getProperty('java.library.path')
64
- new_library_path = platform_specific_library_paths.join(java.io.File.pathSeparator)
65
- java.lang.System.setProperty('java.library.path', new_library_path)
66
- field = java.lang.Class.for_name('java.lang.ClassLoader').get_declared_field('sys_paths')
67
- if field
68
- field.accessible = true
69
- field.set(java.lang.Class.for_name('java.lang.System').get_class_loader, nil)
70
- end
71
- end
72
- @loaded_libraries[library_name] = true
73
- end
74
-
75
- def platform
76
- match = %w(mac linux windows).find do |os|
77
- java.lang.System.getProperty('os.name').downcase.index(os)
78
- end
79
- return 'other' unless match
80
- return match unless match =~ /mac/
81
- 'macosx'
33
+ def loader(name)
34
+ return true if @loaded_libraries.include?(name)
35
+ fname = name.to_s
36
+ library = Library.new(fname)
37
+ library.locate
38
+ return require_library(library, name) if library.ruby?
39
+ warn("Not found library: #{fname}") unless library.exist?
40
+ load_jars(library, name)
82
41
  end
83
42
 
84
- def get_platform_specific_library_paths(basename)
85
- bits = '64'
86
- if java.lang.System.getProperty('sun.arch.data.model') == '32' ||
87
- java.lang.System.getProperty('java.vm.name').index('32')
88
- bits = '32' unless platform =~ /macosx/
89
- end
90
- [platform, platform + bits].map { |p| File.join(basename, p) }
43
+ def load_jars(lib, name)
44
+ lib.load_jars
45
+ @loaded_libraries[name] = true
91
46
  end
92
47
 
93
- def get_library_paths(library_name, extension = nil)
94
- dir = get_library_directory_path(library_name, extension)
95
- Dir.glob("#{dir}/*.{rb,jar}")
96
- end
97
-
98
- protected
99
-
100
- def get_library_directory_path(library_name, extension = nil)
101
- extensions = extension ? [extension] : %w(jar rb)
102
- extensions.each do |ext|
103
- [
104
- "#{SKETCH_ROOT}/library/#{library_name}",
105
- "#{Processing::RP_CONFIG['PROCESSING_ROOT']}/modes/java/libraries/#{library_name}/library",
106
- "#{K9_ROOT}/library/#{library_name}/library",
107
- "#{K9_ROOT}/library/#{library_name}",
108
- "#{Sketchbook.path}/#{library_name}/library"
109
- ].each do |jpath|
110
- if File.exist?(jpath) && !Dir.glob(format('%s/*.%s', jpath, ext)).empty?
111
- return jpath
112
- end
113
- end
114
- end
115
- nil
48
+ def require_library(lib, name)
49
+ @loaded_libraries[name] = require lib.path
116
50
  end
117
51
  end
118
52
  end
@@ -0,0 +1,34 @@
1
+ require 'rbconfig'
2
+
3
+ # Utility to load native binaries on Java CLASSPATH
4
+ class NativeFolder
5
+ attr_reader :os, :bit
6
+
7
+ WIN_FORMAT = 'windows%d'
8
+ LINUX_FORMAT = 'linux%d'
9
+ WIN_PATTERNS = [
10
+ /bccwin/i,
11
+ /cygwin/i,
12
+ /djgpp/i,
13
+ /ming/i,
14
+ /mswin/i,
15
+ /wince/i
16
+ ].freeze
17
+
18
+ def initialize
19
+ @os = RbConfig::CONFIG['host_os'].downcase
20
+ @bit = java.lang.System.get_property('os.arch') =~ /64/ ? 64 : 32
21
+ end
22
+
23
+ def name
24
+ return 'macosx' if os =~ /darwin/ || os =~ /mac/
25
+ return format(WIN_FORMAT, bit) if WIN_PATTERNS.include? os
26
+ return format(LINUX_FORMAT, bit) if os =~ /linux/
27
+ end
28
+
29
+ def extension
30
+ return '*.so' if os =~ /linux/
31
+ return '*.dll' if WIN_PATTERNS.include? os
32
+ '*.dylib' # MacOS
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ # This class knows how to dynamically set the 'java' native library path
2
+ # It might not work with java 9?
3
+ class NativeLoader
4
+ attr_reader :separator, :current_path
5
+
6
+ module JC
7
+ java_import 'java.lang.Class'
8
+ java_import 'java.lang.System'
9
+ java_import 'java.io.File'
10
+ end
11
+
12
+ def initialize
13
+ @separator = JC::File.pathSeparatorChar
14
+ @current_path = JC::System.getProperty('java.library.path')
15
+ end
16
+
17
+ def add_native_path(pth)
18
+ current_path << separator << pth
19
+ JC::System.setProperty('java.library.path', current_path)
20
+ field = JC::Class.for_name('java.lang.ClassLoader')
21
+ .get_declared_field('sys_paths')
22
+ return unless field
23
+ field.accessible = true # some jruby magic
24
+ field.set(JC::Class.for_name('java.lang.System').get_class_loader, nil)
25
+ end
26
+ end
@@ -84,7 +84,7 @@ module Processing
84
84
  end
85
85
 
86
86
  options[:live] = false
87
- opts.on('-l', '--live', 'As above, with pry console bound to $app') do
87
+ opts.on('-l', '--live', 'As above, with pry console bound to Processing.app') do
88
88
  options[:live] = true
89
89
  end
90
90
 
@@ -35,7 +35,7 @@ module Processing
35
35
  no_methods = source.match(/^[^#]*(def\s+setup|def\s+draw)/).nil?
36
36
  if wrapped
37
37
  load SKETCH_PATH
38
- Processing::App.sketch_class.new unless $app
38
+ Processing::App.sketch_class.new unless Processing.app
39
39
  return
40
40
  end
41
41
  name = RP_CONFIG.fetch('sketch_title', 'Naked Sketch')
@@ -43,7 +43,7 @@ module Processing
43
43
  height = RP_CONFIG.fetch('height', 200)
44
44
  code = no_methods ? format(NAKED_WRAP, name, source, width, height) : format(BARE_WRAP, source)
45
45
  Object.class_eval code, SKETCH_PATH, -1
46
- Processing::App.sketch_class.new unless $app
46
+ Processing::App.sketch_class.new unless Processing.app
47
47
  end
48
48
 
49
49
  # Read in the sketch source code. Needs to work both online and offline.
@@ -11,7 +11,7 @@ MESSAGE = "You need to 'jruby -S gem install pry' for 'live' mode".freeze
11
11
 
12
12
  if Gem::Specification.find_all_by_name('pry').any?
13
13
  require 'pry'
14
- $app.pry
14
+ Processing.app.pry
15
15
  else
16
16
  raise(PryException.new, MESSAGE)
17
17
  end
@@ -33,7 +33,7 @@ module Processing
33
33
  Kernel.loop do
34
34
  if @files.find { |file| FileTest.exist?(file) && File.stat(file).mtime > @time }
35
35
  puts 'reloading sketch...'
36
- $app && $app.close
36
+ Processing.app && Processing.app.close
37
37
  java.lang.System.gc
38
38
  @time = Time.now
39
39
  start_runner
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  # A wrapper for version
3
3
  module JRubyArt
4
- VERSION = '1.4.0'.freeze
4
+ VERSION = '1.4.1'.freeze
5
5
  end
data/lib/rpextras.jar CHANGED
Binary file
@@ -10,8 +10,8 @@ module ControlPanel
10
10
  def initialize(control_panel, name, range, initial_value, proc = nil)
11
11
  min = range.begin * 100
12
12
  max = (
13
- (range.exclude_end? && range.begin.respond_to?(:succ)) ?
14
- range.max : range.end) * 100
13
+ (range.exclude_end? && range.begin.respond_to?(:succ)) ?
14
+ range.max : range.end) * 100
15
15
  super(min, max)
16
16
  set_minor_tick_spacing((max - min).abs / 10)
17
17
  set_paint_ticks true
@@ -20,7 +20,7 @@ module ControlPanel
20
20
  label = control_panel.add_element(self, name)
21
21
  add_change_listener do
22
22
  update_label(label, name, value)
23
- $app.instance_variable_set("@#{name}", value) unless value.nil?
23
+ Processing.app.instance_variable_set("@#{name}", value) unless value.nil?
24
24
  proc.call(value) if proc
25
25
  end
26
26
  set_value(initial_value ? initial_value * 100 : min)
@@ -45,7 +45,7 @@ module ControlPanel
45
45
  set_preferred_size(java.awt.Dimension.new(190, 30))
46
46
  control_panel.add_element(self, name)
47
47
  add_action_listener do
48
- $app.instance_variable_set("@#{name}", value) unless value.nil?
48
+ Processing.app.instance_variable_set("@#{name}", value) unless value.nil?
49
49
  proc.call(value) if proc
50
50
  end
51
51
  set_selected_index(initial_value ? elements.index(initial_value) : 0)
@@ -65,7 +65,7 @@ module ControlPanel
65
65
  set_horizontal_alignment javax.swing.SwingConstants::CENTER
66
66
  control_panel.add_element(self, name, false)
67
67
  add_action_listener do
68
- $app.instance_variable_set("@#{name}", value)
68
+ Processing.app.instance_variable_set("@#{name}", value) unless value.nil?
69
69
  proc.call(value) if proc
70
70
  end
71
71
  end
@@ -82,8 +82,8 @@ module ControlPanel
82
82
  set_preferred_size(java.awt.Dimension.new(170, 64))
83
83
  control_panel.add_element(self, name, false, true)
84
84
  add_action_listener do
85
- $app.send(name)
86
- proc.call if proc
85
+ Processing.app.send(name.to_s)
86
+ proc.call(value) if proc
87
87
  end
88
88
  end
89
89
  end
@@ -110,7 +110,7 @@ module ControlPanel
110
110
  set_size 200, 30 + (64 * elements.size)
111
111
  set_default_close_operation javax.swing.JFrame::HIDE_ON_CLOSE
112
112
  set_resizable false
113
- set_location($app.width + 10, 0) unless $app.width + 10 > $app.displayWidth
113
+ set_location(Processing.app.width + 10, 0) unless Processing.app.width + 10 > Processing.app.displayWidth
114
114
  panel.visible = true
115
115
  end
116
116
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  # Here's a little library for quickly hooking up in sketch sliders.
3
- # Copyright (c) 2016 Martin Prout.
3
+ # Copyright (c) 2016-17 Martin Prout.
4
4
 
5
5
  java_import 'monkstone.slider.CustomHorizontalSlider'
6
6
  java_import 'monkstone.slider.CustomVerticalSlider'
data/vendors/Rakefile CHANGED
@@ -9,7 +9,7 @@ WARNING = <<-EOS.freeze
9
9
  EOS
10
10
 
11
11
 
12
- JRUBYC_VERSION = '9.1.12.0'
12
+ JRUBYC_VERSION = '9.1.13.0'
13
13
 
14
14
  EXAMPLES = '2.4'
15
15
  HOME_DIR = ENV['HOME']
@@ -29,9 +29,7 @@ file "jruby-complete-#{JRUBYC_VERSION}.jar" do
29
29
  rescue
30
30
  warn(WARNING)
31
31
  end
32
-
33
- check_sha256("jruby-complete-#{JRUBYC_VERSION}.jar", "f97a65d79aa57f01328783dd00f81568f70dbf26a3ed2a502d6a985224d0ac72")
34
-
32
+ check_sha256("jruby-complete-#{JRUBYC_VERSION}.jar", "96acc80d383e3268df6d1e4947367966729a9c130dfeb889e4e3af77e63a2433")
35
33
  end
36
34
 
37
35
  directory "../lib/ruby"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jruby_art
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Ashkenas
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-08-06 00:00:00.000000000 Z
13
+ date: 2017-09-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -63,7 +63,10 @@ files:
63
63
  - lib/jruby_art/java_opts.rb
64
64
  - lib/jruby_art/jruby_complete.rb
65
65
  - lib/jruby_art/launcher.rb
66
+ - lib/jruby_art/library.rb
66
67
  - lib/jruby_art/library_loader.rb
68
+ - lib/jruby_art/native_folder.rb
69
+ - lib/jruby_art/native_loader.rb
67
70
  - lib/jruby_art/runner.rb
68
71
  - lib/jruby_art/runners/base.rb
69
72
  - lib/jruby_art/runners/live.rb
@@ -101,9 +104,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
104
  requirements:
102
105
  - A decent graphics card
103
106
  - java runtime >= 1.8.0_131+
104
- - processing = 3.3.5
107
+ - processing = 3.3.6
105
108
  rubyforge_project:
106
- rubygems_version: 2.6.11
109
+ rubygems_version: 2.6.13
107
110
  signing_key:
108
111
  specification_version: 4
109
112
  summary: Code as Art, Art as Code. Processing and Ruby are meant for each other.