jruby_art 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jruby_art/app.rb +0 -3
- data/lib/jruby_art/creators/creator.rb +63 -61
- data/lib/jruby_art/helpers/numeric.rb +4 -2
- data/lib/jruby_art/helpers/string_extra.rb +21 -38
- data/lib/jruby_art/installer.rb +92 -0
- data/lib/jruby_art/java_args.rb +21 -0
- data/lib/jruby_art/library_loader.rb +3 -24
- data/lib/jruby_art/runner.rb +17 -76
- data/lib/jruby_art/runners/base.rb +1 -0
- data/lib/jruby_art/sketchbook.rb +24 -0
- data/lib/jruby_art/version.rb +1 -1
- data/lib/rpextras.jar +0 -0
- data/library/chooser/chooser.rb +19 -0
- data/vendors/Rakefile +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dc367d2baeead82e8b4017a333879cc81ad5a2a
|
4
|
+
data.tar.gz: b901245c19d4c67b6f80e406ab211e0e98420ee3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acbfbaae7b7df8296c0decb9ac2907bc839409311538e47903e850bdd4fe6b4db59ba6f47d3378ed821abe41872753302397176d265b870bebbef4e88b891a90
|
7
|
+
data.tar.gz: 387499d644a78e6a176383d43f5cc54402575b96cc07e61b0f92063ad89a584788130bb20e9a1a7aae93482be69620e202d6c3e2c9f3b229e38b6cacd15ece24
|
data/lib/jruby_art/app.rb
CHANGED
@@ -2,11 +2,9 @@
|
|
2
2
|
# frozen_string_literal: false
|
3
3
|
|
4
4
|
require 'java'
|
5
|
-
# require 'jruby/core_ext'
|
6
5
|
require_relative '../rpextras'
|
7
6
|
require_relative '../jruby_art/helper_methods'
|
8
7
|
require_relative '../jruby_art/helpers/aabb'
|
9
|
-
require_relative '../jruby_art/helpers/string_extra'
|
10
8
|
require_relative '../jruby_art/library_loader'
|
11
9
|
require_relative '../jruby_art/config'
|
12
10
|
|
@@ -188,7 +186,6 @@ module Processing
|
|
188
186
|
java_import format('processing.opengl.%s', klass)
|
189
187
|
end
|
190
188
|
end
|
191
|
-
# become_java!
|
192
189
|
end # Processing::App
|
193
190
|
|
194
191
|
# @HACK purists may prefer 'forwardable' to the use of Proxy
|
@@ -1,9 +1,8 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: false
|
3
2
|
|
4
3
|
BASIC = <<-CODE
|
5
4
|
def setup
|
6
|
-
|
5
|
+
sketch_title '%s'
|
7
6
|
end
|
8
7
|
|
9
8
|
def draw
|
@@ -11,16 +10,16 @@ def draw
|
|
11
10
|
end
|
12
11
|
|
13
12
|
def settings
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
size %s, %s
|
14
|
+
# pixel_density(2) # here for hi-dpi displays only
|
15
|
+
# smooth # here
|
17
16
|
end
|
18
17
|
|
19
18
|
CODE
|
20
19
|
|
21
20
|
BASIC_MODE = <<-CODE
|
22
21
|
def setup
|
23
|
-
|
22
|
+
sketch_title '%s'
|
24
23
|
end
|
25
24
|
|
26
25
|
def draw
|
@@ -28,8 +27,8 @@ def draw
|
|
28
27
|
end
|
29
28
|
|
30
29
|
def settings
|
31
|
-
|
32
|
-
|
30
|
+
size %s, %s, %s
|
31
|
+
# smooth # here
|
33
32
|
end
|
34
33
|
|
35
34
|
CODE
|
@@ -38,19 +37,19 @@ CLASS_BASIC = <<-CODE
|
|
38
37
|
# encoding: utf-8
|
39
38
|
# frozen_string_literal: false
|
40
39
|
class %s < Processing::App
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
def setup
|
41
|
+
sketch_title '%s'
|
42
|
+
end
|
44
43
|
|
45
|
-
|
44
|
+
def draw
|
46
45
|
|
47
|
-
|
46
|
+
end
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
def settings
|
49
|
+
size %s, %s
|
50
|
+
# pixel_density(2) # here for hi-dpi displays only
|
51
|
+
# smooth # here
|
52
|
+
end
|
54
53
|
end
|
55
54
|
CODE
|
56
55
|
|
@@ -63,18 +62,18 @@ require 'jruby_art/app'
|
|
63
62
|
Processing::App::SKETCH_PATH = __FILE__
|
64
63
|
|
65
64
|
class %s < Processing::App
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
def setup
|
66
|
+
sketch_title '%s'
|
67
|
+
end
|
69
68
|
|
70
|
-
|
69
|
+
def draw
|
71
70
|
|
72
|
-
|
71
|
+
end
|
73
72
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
73
|
+
def settings
|
74
|
+
size %s, %s
|
75
|
+
# smooth # here
|
76
|
+
end
|
78
77
|
end
|
79
78
|
|
80
79
|
%s.new unless defined? $app
|
@@ -84,18 +83,18 @@ CLASS_MODE = <<-CODE
|
|
84
83
|
# encoding: utf-8
|
85
84
|
# frozen_string_literal: false
|
86
85
|
class %s < Processing::App
|
87
|
-
|
88
|
-
|
89
|
-
|
86
|
+
def setup
|
87
|
+
sketch_title '%s'
|
88
|
+
end
|
90
89
|
|
91
|
-
|
90
|
+
def draw
|
92
91
|
|
93
|
-
|
92
|
+
end
|
94
93
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
94
|
+
def settings
|
95
|
+
size %s, %s, %s
|
96
|
+
# smooth # here
|
97
|
+
end
|
99
98
|
end
|
100
99
|
CODE
|
101
100
|
|
@@ -108,18 +107,18 @@ require 'jruby_art/app'
|
|
108
107
|
Processing::App::SKETCH_PATH = __FILE__
|
109
108
|
|
110
109
|
class %s < Processing::App
|
111
|
-
|
112
|
-
|
113
|
-
|
110
|
+
def setup
|
111
|
+
sketch_title '%s'
|
112
|
+
end
|
114
113
|
|
115
|
-
|
114
|
+
def draw
|
116
115
|
|
117
|
-
|
116
|
+
end
|
118
117
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
118
|
+
def settings
|
119
|
+
size %s, %s, %s
|
120
|
+
# smooth # here
|
121
|
+
end
|
123
122
|
end
|
124
123
|
|
125
124
|
%s.new unless defined? $app
|
@@ -129,19 +128,21 @@ INNER = <<-CODE
|
|
129
128
|
# encoding: utf-8
|
130
129
|
# frozen_string_literal: false
|
131
130
|
class %s
|
132
|
-
|
131
|
+
include Processing::Proxy
|
133
132
|
|
134
133
|
end
|
135
134
|
CODE
|
136
135
|
|
137
|
-
#
|
138
|
-
module
|
136
|
+
# creator wrapper module using StringExtra
|
137
|
+
module Creator
|
139
138
|
require_relative '../helpers/string_extra'
|
139
|
+
using StringExtra
|
140
140
|
# Write file to disk
|
141
141
|
class SketchWriter
|
142
142
|
attr_reader :file
|
143
|
+
|
143
144
|
def initialize(path)
|
144
|
-
underscore =
|
145
|
+
underscore = path.underscore
|
145
146
|
@file = "#{File.dirname(path)}/#{underscore}.rb"
|
146
147
|
end
|
147
148
|
|
@@ -153,11 +154,10 @@ module Processing
|
|
153
154
|
end
|
154
155
|
|
155
156
|
# An abstract class providing common methods for real creators
|
156
|
-
class
|
157
|
+
class Base
|
157
158
|
ALL_DIGITS = /\A\d+\Z/
|
158
|
-
|
159
159
|
def already_exist(path)
|
160
|
-
underscore =
|
160
|
+
underscore = path.underscore
|
161
161
|
new_file = "#{File.dirname(path)}/#{underscore}.rb"
|
162
162
|
return if !FileTest.exist?(path) && !FileTest.exist?(new_file)
|
163
163
|
puts 'That file already exists!'
|
@@ -181,7 +181,7 @@ module Processing
|
|
181
181
|
end
|
182
182
|
|
183
183
|
# This class creates bare sketches, with an optional render mode
|
184
|
-
class BasicSketch <
|
184
|
+
class BasicSketch < Base
|
185
185
|
# Create a blank sketch, given a path.
|
186
186
|
def basic_template
|
187
187
|
format(BASIC, @title, @width, @height)
|
@@ -197,7 +197,7 @@ module Processing
|
|
197
197
|
already_exist(path)
|
198
198
|
main_file = File.basename(path, '.rb') # allow uneeded extension input
|
199
199
|
writer = SketchWriter.new(main_file)
|
200
|
-
@title =
|
200
|
+
@title = main_file.titleize
|
201
201
|
@width = args[0]
|
202
202
|
@height = args[1]
|
203
203
|
@mode = args[2].upcase unless args[2].nil?
|
@@ -207,7 +207,7 @@ module Processing
|
|
207
207
|
end
|
208
208
|
|
209
209
|
# This class creates class wrapped sketches, with an optional render mode
|
210
|
-
class ClassSketch <
|
210
|
+
class ClassSketch < Base
|
211
211
|
def class_template
|
212
212
|
format(CLASS_BASIC, @name, @title, @width, @height)
|
213
213
|
end
|
@@ -215,15 +215,16 @@ module Processing
|
|
215
215
|
def class_template_mode
|
216
216
|
format(CLASS_MODE, @name, @title, @width, @height, @mode)
|
217
217
|
end
|
218
|
+
|
218
219
|
# Create a class wrapped sketch, given a path.
|
219
220
|
def create!(path, args)
|
220
221
|
return usage if /\?/ =~ path || /--help/ =~ path
|
221
222
|
main_file = File.basename(path, '.rb') # allow uneeded extension input
|
222
223
|
# Check to make sure that the main file doesn't exist already
|
223
224
|
already_exist(path)
|
224
|
-
@name =
|
225
|
+
@name = main_file.camelize
|
225
226
|
writer = SketchWriter.new(main_file)
|
226
|
-
@title =
|
227
|
+
@title = main_file.titleize
|
227
228
|
@width, @height = args[0], args[1]
|
228
229
|
@mode = args[2].upcase unless args[2].nil?
|
229
230
|
template = @mode.nil? ? class_template : class_template_mode
|
@@ -232,7 +233,7 @@ module Processing
|
|
232
233
|
end
|
233
234
|
|
234
235
|
# This class creates class wrapped sketches, with an optional render mode
|
235
|
-
class EmacsSketch <
|
236
|
+
class EmacsSketch < Base
|
236
237
|
def emacs_template
|
237
238
|
format(EMACS_BASIC, @name, @title, @width, @height, @name)
|
238
239
|
end
|
@@ -246,9 +247,9 @@ module Processing
|
|
246
247
|
main_file = File.basename(path, '.rb') # allow uneeded extension input
|
247
248
|
# Check to make sure that the main file doesn't exist already
|
248
249
|
already_exist(path)
|
249
|
-
@name =
|
250
|
+
@name = main_file.camelize
|
250
251
|
writer = SketchWriter.new(main_file)
|
251
|
-
@title =
|
252
|
+
@title = main_file.titleize
|
252
253
|
@width, @height = args[0], args[1]
|
253
254
|
@mode = args[2].upcase unless args[2].nil?
|
254
255
|
template = @mode.nil? ? emacs_template : emacs_template_mode
|
@@ -257,10 +258,11 @@ module Processing
|
|
257
258
|
end
|
258
259
|
|
259
260
|
# This class creates a pseudo 'java inner class' of the sketch
|
260
|
-
class
|
261
|
+
class InnerSketch < Base
|
261
262
|
def inner_class_template
|
262
263
|
format(INNER, @name)
|
263
264
|
end
|
265
|
+
|
264
266
|
# Create a pseudo inner class, given a path.
|
265
267
|
def create!(path, _args_)
|
266
268
|
return usage if /\?/ =~ path || /--help/ =~ path
|
@@ -1,12 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: false
|
3
|
+
# Re-open Numeric so that we can do simple degree and radian conversions
|
4
|
+
# conversion factors are 180 / Math::PI and Math::PI / 180
|
3
5
|
|
4
6
|
class Numeric #:nodoc:
|
5
7
|
def degrees
|
6
|
-
self *
|
8
|
+
self * 57.29577951308232
|
7
9
|
end
|
8
10
|
|
9
11
|
def radians
|
10
|
-
self *
|
12
|
+
self * 0.017453292519943295
|
11
13
|
end
|
12
14
|
end
|
@@ -1,45 +1,28 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: false
|
2
|
+
# String refinement for sketch creator
|
3
|
+
module StringExtra
|
4
|
+
refine String do
|
5
|
+
def titleize
|
6
|
+
underscore
|
7
|
+
.humanize
|
8
|
+
.gsub(/\b([a-z])/) { Regexp.last_match[1].capitalize }
|
9
|
+
end
|
3
10
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
class StringExtra
|
8
|
-
extend Forwardable
|
9
|
-
def_delegators :@str, :upcase, :capitalize, :length, :downcase, :gsub, :tr
|
10
|
-
def initialize(str)
|
11
|
-
@str = str
|
12
|
-
end
|
13
|
-
|
14
|
-
def titleize
|
15
|
-
gsub(/::/, '/')
|
16
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
17
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
18
|
-
.tr('-', '_')
|
19
|
-
.downcase
|
20
|
-
.gsub(/_id$/, '')
|
21
|
-
.tr('_', ' ').capitalize
|
22
|
-
.gsub(/\b([a-z])/) { Regexp.last_match[1].capitalize }
|
23
|
-
end
|
24
|
-
|
25
|
-
def humanize
|
26
|
-
gsub(/_id$/, '').tr(/_/, ' ').capitalize
|
27
|
-
end
|
11
|
+
def humanize
|
12
|
+
gsub(/_id$/, '').tr('_', ' ').capitalize
|
13
|
+
end
|
28
14
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
.sub('-', '_')
|
34
|
-
.downcase
|
35
|
-
end
|
15
|
+
def camelize
|
16
|
+
gsub(%r{/\/(.?)/}) { '::' + Regexp.last_match[1].upcase }
|
17
|
+
.gsub(/(^|_)(.)/) { Regexp.last_match[2].upcase }
|
18
|
+
end
|
36
19
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
20
|
+
def underscore
|
21
|
+
gsub(/::/, '/')
|
22
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
23
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
24
|
+
.tr('-', '_')
|
25
|
+
.downcase
|
43
26
|
end
|
44
27
|
end
|
45
28
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
VERSION = '3.1.1' # processing version
|
5
|
+
|
6
|
+
# Abstract Installer class
|
7
|
+
class Installer
|
8
|
+
attr_reader :os, :sketch, :gem_root, :home
|
9
|
+
def initialize(root, os)
|
10
|
+
@os = os
|
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
|
16
|
+
end
|
17
|
+
|
18
|
+
# Optimistically set processing root
|
19
|
+
def set_processing_root
|
20
|
+
require 'psych'
|
21
|
+
folder = File.expand_path("#{home}/.jruby_art")
|
22
|
+
Dir.mkdir(folder) unless File.exist? folder
|
23
|
+
path = File.join(folder, 'config.yml')
|
24
|
+
proot = "#{home}/processing-#{VERSION}"
|
25
|
+
proot = "/Java/Processing-#{VERSION}" if os == :windows
|
26
|
+
proot = "/Applications/Processing.app/Contents/Java" if os == :mac
|
27
|
+
data = {
|
28
|
+
'PROCESSING_ROOT' => proot,
|
29
|
+
'JRUBY' => true.to_s,
|
30
|
+
'sketchbook_path' => sketch,
|
31
|
+
'MAX_WATCH' => '20'
|
32
|
+
}
|
33
|
+
open(path, 'w:UTF-8') { |file| file.write(data.to_yaml) }
|
34
|
+
end
|
35
|
+
|
36
|
+
def root_exist?
|
37
|
+
return false if config.nil?
|
38
|
+
File.exist? config['PROCESSING_ROOT']
|
39
|
+
end
|
40
|
+
|
41
|
+
def config
|
42
|
+
k9config = File.expand_path("#{home}/.jruby_art/config.yml")
|
43
|
+
return nil unless File.exist? k9config
|
44
|
+
YAML.load_file(k9config)
|
45
|
+
end
|
46
|
+
|
47
|
+
# in place of default installer class
|
48
|
+
def install
|
49
|
+
puts 'Usage: k9 setup [check | install | unpack_samples]'
|
50
|
+
end
|
51
|
+
|
52
|
+
# Display the current version of JRubyArt.
|
53
|
+
def show_version
|
54
|
+
puts format('JRubyArt version %s', JRubyArt::VERSION)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Configuration checker
|
59
|
+
class Check < Installer
|
60
|
+
def install
|
61
|
+
show_version
|
62
|
+
return super unless config
|
63
|
+
installed = File.exist? File.join(gem_root, 'lib/ruby/jruby-complete.jar')
|
64
|
+
proot = ' PROCESSING_ROOT = Not Set!!!' unless root_exist?
|
65
|
+
proot ||= " PROCESSING_ROOT = #{config['PROCESSING_ROOT']}"
|
66
|
+
sketchbook = " sketchbook_path = #{config['sketchbook_path']}"
|
67
|
+
max_watch = " MAX_WATCH = #{config['MAX_WATCH']}"
|
68
|
+
jruby = config['JRUBY']
|
69
|
+
puts proot
|
70
|
+
puts " JRUBY = #{jruby}" unless jruby.nil?
|
71
|
+
puts " jruby-complete installed = #{installed}"
|
72
|
+
puts sketchbook
|
73
|
+
puts max_watch
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# Examples Installer
|
78
|
+
class UnpackSamples < Installer
|
79
|
+
def install
|
80
|
+
system "cd #{gem_root}/vendors && rake unpack_samples"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# JRuby-Complete installer
|
85
|
+
class JRubyComplete < Installer
|
86
|
+
def install
|
87
|
+
system "cd #{gem_root}/vendors && rake"
|
88
|
+
return if root_exist?
|
89
|
+
set_processing_root
|
90
|
+
warn 'PROCESSING_ROOT set optimistically, run check to confirm'
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
# class to parse java_args.txt or java_args in config.yml
|
3
|
+
class JavaArgs
|
4
|
+
attr_reader :java
|
5
|
+
|
6
|
+
def initialize(sketch_root)
|
7
|
+
arg_file = File.join(sketch_root, 'data/java_args.txt')
|
8
|
+
@java = []
|
9
|
+
if FileTest.exist?(arg_file)
|
10
|
+
@java += File.read(arg_file).split(/\s+/)
|
11
|
+
elsif Processing::RP_CONFIG['java_args']
|
12
|
+
@java += Processing::RP_CONFIG['java_args'].split(/\s+/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# wrap java args for jruby
|
17
|
+
def jruby
|
18
|
+
return [] if java.length == 0
|
19
|
+
java.map { |arg| "-J#{arg}" }
|
20
|
+
end
|
21
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# frozen_string_literal: false
|
3
3
|
|
4
4
|
require_relative '../jruby_art'
|
5
|
-
|
5
|
+
require_relative 'sketchbook'
|
6
6
|
# The processing wrapper module
|
7
7
|
module Processing
|
8
8
|
# Encapsulate library loader functionality as a class
|
@@ -10,7 +10,7 @@ module Processing
|
|
10
10
|
attr_reader :sketchbook_library_path
|
11
11
|
|
12
12
|
def initialize
|
13
|
-
@sketchbook_library_path = File.join(
|
13
|
+
@sketchbook_library_path = File.join(Sketchbook.find_path, 'libraries')
|
14
14
|
@loaded_libraries = Hash.new(false)
|
15
15
|
end
|
16
16
|
|
@@ -117,27 +117,6 @@ module Processing
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
nil
|
120
|
-
end
|
121
|
-
|
122
|
-
def find_sketchbook_path
|
123
|
-
preferences_paths = []
|
124
|
-
sketchbook_paths = []
|
125
|
-
sketchbook_path = Processing::RP_CONFIG.fetch('sketchbook_path', false)
|
126
|
-
return sketchbook_path if sketchbook_path
|
127
|
-
[
|
128
|
-
"'Application Data/Processing'", 'AppData/Roaming/Processing',
|
129
|
-
'Library/Processing', 'Documents/Processing',
|
130
|
-
'.processing', 'sketchbook'
|
131
|
-
].each do |prefix|
|
132
|
-
spath = format('%s/%s', ENV['HOME'], prefix)
|
133
|
-
pref_path = format('%s/preferences.txt', spath)
|
134
|
-
preferences_paths << pref_path if FileTest.file?(pref_path)
|
135
|
-
sketchbook_paths << spath if FileTest.directory?(spath)
|
136
|
-
end
|
137
|
-
return sketchbook_paths.first if preferences_paths.empty?
|
138
|
-
lines = IO.readlines(preferences_paths.first)
|
139
|
-
matchedline = lines.grep(/^sketchbook/).first
|
140
|
-
matchedline[/=(.+)/].delete('=')
|
141
|
-
end
|
120
|
+
end
|
142
121
|
end
|
143
122
|
end
|
data/lib/jruby_art/runner.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: false
|
3
2
|
|
4
3
|
require 'ostruct'
|
@@ -6,6 +5,8 @@ require 'fileutils'
|
|
6
5
|
require 'rbconfig'
|
7
6
|
require_relative '../jruby_art/config'
|
8
7
|
require_relative '../jruby_art/version'
|
8
|
+
require_relative '../jruby_art/installer'
|
9
|
+
require_relative '../jruby_art/java_args'
|
9
10
|
|
10
11
|
# processing wrapper module
|
11
12
|
module Processing
|
@@ -94,10 +95,10 @@ module Processing
|
|
94
95
|
# boilerplate filled out.
|
95
96
|
def create(sketch, args)
|
96
97
|
require_relative '../jruby_art/creators/creator'
|
97
|
-
return
|
98
|
-
return
|
99
|
-
return
|
100
|
-
|
98
|
+
return Creator::Inner.new.create!(sketch, args) if @options.inner
|
99
|
+
return Creator::ClassSketch.new.create!(sketch, args) if @options.wrap
|
100
|
+
return Creator::EmacsSketch.new.create!(sketch, args) if @options.emacs
|
101
|
+
Creator::BasicSketch.new.create!(sketch, args)
|
101
102
|
end
|
102
103
|
|
103
104
|
# Just simply run a JRubyArt sketch.
|
@@ -117,42 +118,13 @@ module Processing
|
|
117
118
|
def watch(sketch, args)
|
118
119
|
ensure_exists(sketch)
|
119
120
|
spin_up('watch.rb', sketch, args)
|
120
|
-
end
|
121
|
-
|
122
|
-
def setup(choice)
|
123
|
-
proc_root = FileTest.exist?("#{ENV['HOME']}/.jruby_art/config.yml")
|
124
|
-
case choice
|
125
|
-
when /check/
|
126
|
-
check(proc_root, FileTest.exist?("#{K9_ROOT}/lib/ruby/jruby-complete.jar"))
|
127
|
-
when /install/
|
128
|
-
install(proc_root)
|
129
|
-
when /unpack_samples/
|
130
|
-
system "cd #{K9_ROOT}/vendors && rake unpack_samples"
|
131
|
-
else
|
132
|
-
puts 'Usage: k9 setup [check | install | unpack_samples]'
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def install(root_exist)
|
137
|
-
system "cd #{K9_ROOT}/vendors && rake"
|
138
|
-
return if root_exist
|
139
|
-
set_processing_root
|
140
|
-
warn 'PROCESSING_ROOT set optimistically, run check to confirm'
|
141
|
-
end
|
142
|
-
|
143
|
-
def check(root_exist, installed)
|
144
|
-
show_version
|
145
|
-
root = ' PROCESSING_ROOT = Not Set!!!' unless root_exist
|
146
|
-
root ||= " PROCESSING_ROOT = #{Processing::RP_CONFIG['PROCESSING_ROOT']}"
|
147
|
-
jruby = Processing::RP_CONFIG['JRUBY']
|
148
|
-
puts root
|
149
|
-
puts " JRUBY = #{jruby}" unless jruby.nil?
|
150
|
-
puts " jruby-complete installed = #{installed}"
|
151
|
-
end
|
121
|
+
end
|
152
122
|
|
153
|
-
|
154
|
-
|
155
|
-
|
123
|
+
def setup(choice)
|
124
|
+
return Check.new(K9_ROOT, host_os).install if choice =~ /check/
|
125
|
+
return JRubyComplete.new(K9_ROOT, host_os).install if choice =~ /install/
|
126
|
+
return UnpackSamples.new(K9_ROOT, host_os).install if choice =~ /unpack_sample/
|
127
|
+
Installer.new(K9_ROOT, host_os).install
|
156
128
|
end
|
157
129
|
|
158
130
|
# Show the standard help/usage message.
|
@@ -170,10 +142,10 @@ module Processing
|
|
170
142
|
def spin_up(starter_script, sketch, args)
|
171
143
|
runner = "#{K9_ROOT}/lib/jruby_art/runners/#{starter_script}"
|
172
144
|
@options.nojruby = true if Processing::RP_CONFIG['JRUBY'] == 'false'
|
173
|
-
java_args =
|
145
|
+
java_args = JavaArgs.new(SKETCH_ROOT)
|
174
146
|
if @options.nojruby
|
175
147
|
command = ['java',
|
176
|
-
java_args,
|
148
|
+
java_args.java,
|
177
149
|
'-cp',
|
178
150
|
jruby_complete,
|
179
151
|
'org.jruby.Main',
|
@@ -182,7 +154,7 @@ module Processing
|
|
182
154
|
args].flatten
|
183
155
|
else
|
184
156
|
command = ['jruby',
|
185
|
-
java_args,
|
157
|
+
java_args.jruby,
|
186
158
|
runner,
|
187
159
|
sketch,
|
188
160
|
args].flatten
|
@@ -192,22 +164,7 @@ module Processing
|
|
192
164
|
# exec replaces the Ruby process with the JRuby one.
|
193
165
|
rescue Java::JavaLang::ClassNotFoundException
|
194
166
|
end
|
195
|
-
end
|
196
|
-
|
197
|
-
# If you need to pass in arguments to Java, such as the ones on this page:
|
198
|
-
# http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/java.html
|
199
|
-
# add them to a java_args.txt in your data directory next to your sketch.
|
200
|
-
def discover_java_args(sketch)
|
201
|
-
arg_file = "#{File.dirname(sketch)}/data/java_args.txt"
|
202
|
-
args = []
|
203
|
-
if FileTest.exist?(arg_file)
|
204
|
-
args += File.read(arg_file).split(/\s+/)
|
205
|
-
elsif Processing::RP_CONFIG['java_args']
|
206
|
-
args += Processing::RP_CONFIG['java_args'].split(/\s+/)
|
207
|
-
end
|
208
|
-
args.map! { |arg| "-J#{arg}" } unless @options.nojruby
|
209
|
-
args
|
210
|
-
end
|
167
|
+
end
|
211
168
|
|
212
169
|
# NB: We really do mean to use 'and' not '&&' for flow control purposes
|
213
170
|
|
@@ -238,25 +195,9 @@ module Processing
|
|
238
195
|
when /solaris|bsd/ then :unix
|
239
196
|
else
|
240
197
|
WIN_PATTERNS.find { |r| detect_os =~ r }
|
241
|
-
|
198
|
+
raise "unknown os: #{detect_os.inspect}" if Regexp.last_match.nil?
|
242
199
|
:windows
|
243
200
|
end
|
244
201
|
end
|
245
|
-
|
246
|
-
# Optimistically set processing root
|
247
|
-
def set_processing_root
|
248
|
-
require 'psych'
|
249
|
-
@os ||= host_os
|
250
|
-
data = {}
|
251
|
-
path = File.expand_path("#{ENV['HOME']}/.jruby_art/config.yml")
|
252
|
-
if os == :mac
|
253
|
-
data['PROCESSING_ROOT'] = '/Applications/Processing.app/Contents/Java'
|
254
|
-
else
|
255
|
-
root = "#{ENV['HOME']}/processing-3.1.1"
|
256
|
-
data['PROCESSING_ROOT'] = root
|
257
|
-
end
|
258
|
-
data['JRUBY'] = 'true'
|
259
|
-
open(path, 'w:UTF-8') { |f| f.write(data.to_yaml) }
|
260
|
-
end
|
261
202
|
end # class Runner
|
262
203
|
end # module Processing
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
# Utility to find sketchbook and hence java libraries
|
3
|
+
module Sketchbook
|
4
|
+
def self.find_path
|
5
|
+
preferences_paths = []
|
6
|
+
sketchbook_paths = []
|
7
|
+
sketchbook_path = Processing::RP_CONFIG.fetch('sketchbook_path', false)
|
8
|
+
return sketchbook_path if sketchbook_path
|
9
|
+
[
|
10
|
+
"'Application Data/Processing'", 'AppData/Roaming/Processing',
|
11
|
+
'Library/Processing', 'Documents/Processing',
|
12
|
+
'.processing', 'sketchbook'
|
13
|
+
].each do |prefix|
|
14
|
+
spath = format('%s/%s', ENV['HOME'], prefix)
|
15
|
+
pref_path = format('%s/preferences.txt', spath)
|
16
|
+
preferences_paths << pref_path if FileTest.file?(pref_path)
|
17
|
+
sketchbook_paths << spath if FileTest.directory?(spath)
|
18
|
+
end
|
19
|
+
return sketchbook_paths.first if preferences_paths.empty?
|
20
|
+
lines = IO.readlines(preferences_paths.first)
|
21
|
+
matchedline = lines.grep(/^sketchbook/).first
|
22
|
+
matchedline[/=(.+)/].delete('=')
|
23
|
+
end
|
24
|
+
end
|
data/lib/jruby_art/version.rb
CHANGED
data/lib/rpextras.jar
CHANGED
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Usage: :wq
|
3
|
+
# load_library :chooser
|
4
|
+
#
|
5
|
+
# def setup
|
6
|
+
# java_signature 'void selectInput(String, String)'
|
7
|
+
# selectInput('Select a file to process:', 'fileSelected')
|
8
|
+
# end
|
9
|
+
#
|
10
|
+
# def fileSelected(selection)
|
11
|
+
# if selection.nil?
|
12
|
+
# puts 'Window was closed or the user hit cancel.'
|
13
|
+
# else
|
14
|
+
# puts format('User selected %s', selection.get_absolute_path)
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
class Processing::App
|
18
|
+
include Java::MonkstoneFilechooser::Chooser
|
19
|
+
end
|
data/vendors/Rakefile
CHANGED
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.1.
|
4
|
+
version: 1.1.2
|
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: 2016-
|
13
|
+
date: 2016-06-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -48,7 +48,7 @@ description: " JRubyArt is a ruby wrapper for the processing art framework.\n
|
|
48
48
|
so that you can easily create sliders, buttons,\n checkboxes and drop-down menus,
|
49
49
|
and hook them into your sketch's instance\n variables and hundreds of worked examples
|
50
50
|
to get you started...\n"
|
51
|
-
email:
|
51
|
+
email: mamba2928@yahoo.co.uk
|
52
52
|
executables:
|
53
53
|
- k9
|
54
54
|
extensions: []
|
@@ -63,15 +63,19 @@ files:
|
|
63
63
|
- lib/jruby_art/helpers/aabb.rb
|
64
64
|
- lib/jruby_art/helpers/numeric.rb
|
65
65
|
- lib/jruby_art/helpers/string_extra.rb
|
66
|
+
- lib/jruby_art/installer.rb
|
67
|
+
- lib/jruby_art/java_args.rb
|
66
68
|
- lib/jruby_art/library_loader.rb
|
67
69
|
- lib/jruby_art/runner.rb
|
68
70
|
- lib/jruby_art/runners/base.rb
|
69
71
|
- lib/jruby_art/runners/live.rb
|
70
72
|
- lib/jruby_art/runners/run.rb
|
71
73
|
- lib/jruby_art/runners/watch.rb
|
74
|
+
- lib/jruby_art/sketchbook.rb
|
72
75
|
- lib/jruby_art/version.rb
|
73
76
|
- lib/rpextras.jar
|
74
77
|
- library/boids/boids.rb
|
78
|
+
- library/chooser/chooser.rb
|
75
79
|
- library/control_panel/control_panel.rb
|
76
80
|
- library/library_proxy/README.md
|
77
81
|
- library/library_proxy/library_proxy.rb
|