atome 0.5.3.8.1 → 0.5.4.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +52 -17
- data/app_builder_helpers/Rakefile +20 -3
- data/exe/atome +33 -1
- data/lib/atome/atome.rb +64 -75
- data/lib/atome/extensions/atome.rb +82 -52
- data/lib/atome/extensions/mathematic.rb +8 -12
- data/lib/atome/extensions/matrix.rb +141 -202
- data/lib/atome/genesis/generators/atome.rb +13 -96
- data/lib/atome/genesis/generators/communication.rb +0 -1
- data/lib/atome/genesis/generators/effect.rb +0 -6
- data/lib/atome/genesis/generators/event.rb +64 -77
- data/lib/atome/genesis/generators/geometry.rb +0 -18
- data/lib/atome/genesis/generators/identity.rb +56 -52
- data/lib/atome/genesis/generators/material.rb +3 -54
- data/lib/atome/genesis/generators/spatial.rb +8 -8
- data/lib/atome/genesis/generators/utility.rb +82 -68
- data/lib/atome/genesis/genesis.rb +15 -4
- data/lib/atome/genesis/sparkle.rb +38 -19
- data/lib/atome/helpers/callbacks.rb +47 -1
- data/lib/atome/helpers/essentials.rb +21 -18
- data/lib/atome/helpers/sanitizer.rb +0 -10
- data/lib/atome/helpers/utilities.rb +143 -45
- data/lib/atome/kernel/batch.rb +13 -36
- data/lib/atome/kernel/universe.rb +3 -1
- data/lib/atome/presets/atome.rb +14 -23
- data/lib/atome/renderers/browser/atome.rb +2 -1
- data/lib/atome/renderers/browser/browser.rb +2 -0
- data/lib/atome/renderers/browser/event.rb +18 -0
- data/lib/atome/renderers/browser/helpers/browser_helper.rb +17 -0
- data/lib/atome/renderers/browser/helpers/drag_helper.rb +13 -0
- data/lib/atome/renderers/browser/helpers/drop_helper.rb +13 -0
- data/lib/atome/renderers/browser/helpers/event_helper.rb +16 -11
- data/lib/atome/renderers/browser/helpers/over_helper.rb +13 -0
- data/lib/atome/renderers/browser/helpers/text_helper.rb +14 -2
- data/lib/atome/renderers/browser/identity.rb +23 -5
- data/lib/atome/renderers/browser/spatial.rb +3 -2
- data/lib/atome/renderers/browser/utility.rb +7 -6
- data/lib/atome/renderers/renderer.rb +1 -0
- data/lib/atome/version.rb +2 -2
- data/lib/atome.rb +1 -0
- data/sig/atome.rbs +36 -0
- data/sig/batch.rbs +7 -0
- data/sig/browser_helper.rbs +14 -0
- data/sig/essentials.rbs +11 -0
- data/sig/matrix.rbs +5 -0
- data/sig/object.rbs +3 -0
- data/vendor/assets/aui.rb +5 -0
- data/vendor/assets/src/index.html +15 -3
- data/vendor/assets/src/js/atome/atome.js +1 -1
- data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +1 -1
- data/vendor/assets/src/js/atome/atome_helpers/atome_communication.js +40 -0
- data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +40 -3
- data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +12 -0
- data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +166 -0
- data/vendor/assets/src/js/atome/atome_helpers/atome_file.js +6 -1
- data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +43 -0
- data/vendor/assets/src/medias/images/icons/email.svg +12 -12
- data/vendor/assets/src/medias/rubies/demos.rb +63 -0
- data/vendor/assets/src/medias/rubies/examples/add.rb +3 -4
- data/vendor/assets/src/medias/rubies/examples/animation.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/atome_new.rb +18 -6
- data/vendor/assets/src/medias/rubies/examples/attach.rb +15 -0
- data/vendor/assets/src/medias/rubies/examples/attached.rb +5 -6
- data/vendor/assets/src/medias/rubies/examples/batch.rb +17 -0
- data/vendor/assets/src/medias/rubies/examples/blur.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/box.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/code.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/color.rb +20 -4
- data/vendor/assets/src/medias/rubies/examples/delete.rb +18 -2
- data/vendor/assets/src/medias/rubies/examples/detached.rb +3 -3
- data/vendor/assets/src/medias/rubies/examples/drag.rb +53 -2
- data/vendor/assets/src/medias/rubies/examples/drop.rb +26 -0
- data/vendor/assets/src/medias/rubies/examples/fullscreen.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/image.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/link.rb +7 -5
- data/vendor/assets/src/medias/rubies/examples/markers.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/materials.rb +15 -0
- data/vendor/assets/src/medias/rubies/examples/matrix.rb +85 -41
- data/vendor/assets/src/medias/rubies/examples/matrix_changes.rb +483 -0
- data/vendor/assets/src/medias/rubies/examples/matrix_simple.rb +32 -0
- data/vendor/assets/src/medias/rubies/examples/monitoring.rb +44 -18
- data/vendor/assets/src/medias/rubies/examples/mute.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/on.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/over.rb +6 -4
- data/vendor/assets/src/medias/rubies/examples/pause.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/physical.rb +19 -0
- data/vendor/assets/src/medias/rubies/examples/play.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/read.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/repeat.rb +3 -2
- data/vendor/assets/src/medias/rubies/examples/shadow.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/sort.rb +3 -4
- data/vendor/assets/src/medias/rubies/examples/tags.rb +10 -0
- data/vendor/assets/src/medias/rubies/examples/text.rb +4 -4
- data/vendor/assets/src/medias/rubies/examples/time.rb +3 -3
- data/vendor/assets/src/medias/rubies/examples/video.rb +2 -2
- data/vendor/assets/src/medias/rubies/examples/web.rb +2 -2
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_2_solve.rb +1 -1
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_audio.rb +1 -1
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_dataset.rb +4 -4
- data/vendor/assets/src/medias/rubies/unstable/_matrix.rb +58 -0
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_table2.rb +2 -2
- data/vendor/assets/src/medias/rubies/{examples → unstable}/_vie.rb +2 -2
- data/vendor/assets/src/utilities/mode.rb +0 -0
- data/vendor/assets/src-tauri/tauri.conf.json +2 -2
- metadata +34 -14
- data/vendor/assets/src/medias/rubies/examples/parents.rb +0 -15
- data/vendor/assets/src/medias/rubies/examples/table.rb +0 -479
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/!run.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_attach.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_os.rb +0 -0
- /data/vendor/assets/src/medias/rubies/{examples → unstable}/_test.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81fc451e1fa30a44d57e1fb6405f96e3e9fc8930740c750d9267a89bc2952fa0
|
4
|
+
data.tar.gz: 9048ed1b43c9a1f8c732a3b63af02a47480a6dd82a33f9c8d0f9e2f36e9a5f57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa62f9692742e709ce866a2b5eb983d198e15d635ff5a47e1e1a5f809942abd9e8b6a7e3328fcf8fd2bb2b41cf3925ec03f03ee6acc15018ebfef424b2fd05de
|
7
|
+
data.tar.gz: a2c193b0b0613985aa7c55e425158264dcbd7df127e1b5df5a3b65df2f2a9d2de725059010135f12576604cfe1afb9006f8142bf289c3a70962641ce55df027f
|
data/Rakefile
CHANGED
@@ -11,48 +11,83 @@ end
|
|
11
11
|
|
12
12
|
task default: :test
|
13
13
|
|
14
|
-
task :
|
14
|
+
task :test_build do
|
15
15
|
FileUtils.copy_entry('vendor/assets/src/js/', 'test/test_app/src/js/')
|
16
16
|
FileUtils.copy_entry('vendor/assets/src/css/', 'test/test_app/src/css/')
|
17
17
|
FileUtils.copy_entry('vendor/assets/src/medias/', 'test/test_app/src/medias/')
|
18
|
-
|
18
|
+
|
19
|
+
`rake build`
|
20
|
+
`cd pkg; gem install atome --local`
|
19
21
|
`cd test/test_app;atome update`
|
22
|
+
`cd test/test_app;atome refresh`
|
20
23
|
puts 'solution re-build!'
|
21
|
-
|
24
|
+
|
22
25
|
end
|
23
26
|
|
24
|
-
task :
|
27
|
+
task :test_browser do
|
25
28
|
FileUtils.copy_entry('vendor/assets/src/js/', 'test/test_app/src/js/')
|
26
29
|
FileUtils.copy_entry('vendor/assets/src/css/', 'test/test_app/src/css/')
|
27
30
|
FileUtils.copy_entry('vendor/assets/src/medias/', 'test/test_app/src/medias/')
|
28
|
-
`gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
|
29
31
|
`cd test/test_app;atome update;atome run compile`
|
32
|
+
`open test/test_app/src/index.html`
|
30
33
|
puts 'atome browser is running'
|
31
34
|
end
|
32
35
|
|
36
|
+
task :test_build_browser do
|
37
|
+
FileUtils.copy_entry('vendor/assets/src/js/', 'test/test_app/src/js/')
|
38
|
+
FileUtils.copy_entry('vendor/assets/src/css/', 'test/test_app/src/css/')
|
39
|
+
FileUtils.copy_entry('vendor/assets/src/medias/', 'test/test_app/src/medias/')
|
33
40
|
|
34
|
-
|
41
|
+
`rake build`
|
42
|
+
`cd pkg; gem install atome --local`
|
43
|
+
`cd test/test_app;atome update`
|
44
|
+
`cd test/test_app;atome refresh`
|
45
|
+
`cd test/test_app;atome update;atome run browser guard `
|
46
|
+
# `open test/test_app/src/index.html`
|
47
|
+
puts 'atome browser is running'
|
48
|
+
end
|
49
|
+
|
50
|
+
task :test_build_osx do
|
35
51
|
FileUtils.copy_entry('vendor/assets/src/js/', 'test/test_app/src/js/')
|
36
52
|
FileUtils.copy_entry('vendor/assets/src/css/', 'test/test_app/src/css/')
|
37
53
|
FileUtils.copy_entry('vendor/assets/src/medias/', 'test/test_app/src/medias/')
|
38
|
-
|
39
|
-
`
|
54
|
+
|
55
|
+
`rake build`
|
56
|
+
`cd pkg; gem install atome --local`
|
57
|
+
`cd test/test_app;atome update`
|
58
|
+
`cd test/test_app;atome refresh`
|
59
|
+
`cd test/test_app;atome update;atome run osx guard`
|
60
|
+
# `cd test/test_app;atome run osx guard`
|
61
|
+
puts 'atome osx is running'
|
62
|
+
end
|
63
|
+
|
64
|
+
task :cleanup do
|
65
|
+
`gem cleanup atome;yes | gem uninstall atome;cd pkg`
|
40
66
|
end
|
41
67
|
|
42
68
|
|
43
|
-
task :
|
44
|
-
|
69
|
+
task :test_server do
|
70
|
+
FileUtils.copy_entry('vendor/assets/src/js/', 'test/test_app/src/js/')
|
71
|
+
FileUtils.copy_entry('vendor/assets/src/css/', 'test/test_app/src/css/')
|
72
|
+
FileUtils.copy_entry('vendor/assets/src/medias/', 'test/test_app/src/medias/')
|
73
|
+
`gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;cd pkg; gem install atome --local`
|
74
|
+
`cd test/test_app;atome update;atome run server guard`
|
45
75
|
end
|
46
76
|
|
77
|
+
|
78
|
+
# task :run_server do
|
79
|
+
# `cd test/test_app;atome run server guard`
|
80
|
+
# end
|
81
|
+
|
47
82
|
task :refresh do
|
48
83
|
FileUtils.copy_entry('vendor/assets/src/medias/rubies/examples/', 'test/test_app/src/medias/rubies/examples/')
|
49
84
|
`cd test/test_app;atome build`
|
50
85
|
puts "refreshed!"
|
51
86
|
end
|
52
87
|
|
53
|
-
task :
|
54
|
-
`open http://127.0.0.1:1430/`
|
55
|
-
end
|
88
|
+
# task :open_server do
|
89
|
+
# `open http://127.0.0.1:1430/`
|
90
|
+
# end
|
56
91
|
|
57
92
|
task :run_example_server do
|
58
93
|
FileUtils.copy_entry('vendor/assets/src/medias/rubies/examples/', 'test/test_app/src/medias/rubies/examples/')
|
@@ -60,11 +95,11 @@ task :run_example_server do
|
|
60
95
|
end
|
61
96
|
|
62
97
|
|
63
|
-
task :taurification do
|
64
|
-
|
65
|
-
end
|
98
|
+
# task :taurification do
|
99
|
+
# `cd test/test_app;cargo tauri dev`
|
100
|
+
# end
|
66
101
|
|
67
|
-
task :
|
102
|
+
task :test_osx do
|
68
103
|
`cd test/test_app;atome run osx guard`
|
69
104
|
end
|
70
105
|
|
@@ -108,14 +108,29 @@ def build_user_code(user_project_path, source_code)
|
|
108
108
|
application_js = "#{user_project_path}/src/js/application.js"
|
109
109
|
builder = Opal::Builder.new
|
110
110
|
builder.append_paths("#{user_project_path}/")
|
111
|
-
application_content = builder.build(source_code).to_s
|
112
111
|
|
112
|
+
builder.build("#{source_code}/src/utilities/mode.rb").to_s
|
113
|
+
|
114
|
+
# aui = builder.build("#{source_code}/aui.rb").to_s
|
115
|
+
application_content = builder.build("#{source_code}/application/index.rb").to_s
|
116
|
+
|
117
|
+
# full_app=aui+"\n"+system_infos+"\n"+application_content
|
113
118
|
File.open(application_js, 'w') do |f|
|
114
119
|
f.puts application_content
|
115
120
|
end
|
116
121
|
# minimize_application(user_project_path)
|
117
122
|
end
|
118
123
|
|
124
|
+
def build_system_infos(user_project_path, source_code)
|
125
|
+
system_infos_js = "#{user_project_path}/src/js/infos.js"
|
126
|
+
builder = Opal::Builder.new
|
127
|
+
builder.append_paths("#{user_project_path}/")
|
128
|
+
system_infos = builder.build("#{source_code}/src/utilities/mode.rb").to_s
|
129
|
+
File.open(system_infos_js, 'w') do |f|
|
130
|
+
f.puts system_infos
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
119
134
|
def minimize_aui(user_project_path)
|
120
135
|
aui_js = "#{user_project_path}/src/js/aui.js"
|
121
136
|
aui_content = File.open(aui_js).read
|
@@ -220,15 +235,17 @@ end
|
|
220
235
|
|
221
236
|
task :build_user_code, :user_project_path, :production do |_t, args|
|
222
237
|
user_project_path = args[:user_project_path]
|
223
|
-
source_code = "#{user_project_path}
|
238
|
+
source_code = "#{user_project_path}"
|
239
|
+
build_system_infos(user_project_path, source_code)
|
224
240
|
build_user_code(user_project_path, source_code)
|
225
241
|
end
|
226
242
|
|
227
243
|
task :system_builder, :user_project_path, :production do |_t, args|
|
228
244
|
user_project_path = args[:user_project_path]
|
229
245
|
production = args[:production]
|
230
|
-
source_code = '../vendor/assets
|
246
|
+
source_code = '../vendor/assets'
|
231
247
|
build_common_libraries(user_project_path, production)
|
248
|
+
build_system_infos(user_project_path, source_code)
|
232
249
|
build_user_code(user_project_path, source_code)
|
233
250
|
|
234
251
|
# TODO: catch and message to user when when there's no force and folder already exist
|
data/exe/atome
CHANGED
@@ -123,7 +123,7 @@ def guard_check
|
|
123
123
|
end
|
124
124
|
|
125
125
|
def browser_case(location)
|
126
|
-
|
126
|
+
`cd #{location}/src;open index.html`
|
127
127
|
# `echo jello`
|
128
128
|
# guard_check
|
129
129
|
end
|
@@ -215,27 +215,59 @@ if ARGV.include?('guard')
|
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
218
|
+
def set_atome_mode(location, mode)
|
219
|
+
mode_file = "#{location}/src/utilities/mode.rb"
|
220
|
+
file_found = File.open(mode_file)
|
221
|
+
atome_mode=<<~STR
|
222
|
+
$host = :#{mode}
|
223
|
+
STR
|
224
|
+
File.open(file_found, 'w') do |f|
|
225
|
+
f.puts atome_mode
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
218
229
|
if ARGV.include?('run')
|
219
230
|
path = if location != '/'
|
220
231
|
"#{`pwd`.chomp}/#{location}"
|
221
232
|
else
|
222
233
|
found_path('run')
|
223
234
|
end
|
235
|
+
demo_location = "#{path}/src/medias/rubies"
|
236
|
+
|
237
|
+
filenames = Dir.glob(demo_location+'/examples/*.rb')
|
238
|
+
demos_list_content=[]
|
239
|
+
filenames.each do |path|
|
240
|
+
filename= File.basename(path)
|
241
|
+
demos_list_content << filename
|
242
|
+
end
|
243
|
+
demos_list_file = "#{demo_location}/demos_list.rb"
|
244
|
+
File.open(demos_list_file, 'w') do |f|
|
245
|
+
# f.puts "class Atome_demo\n def demos_list\n #{demos_list_content}\n end\nend"
|
246
|
+
f.puts "def demos_list\n #{demos_list_content}\nend"
|
247
|
+
end
|
248
|
+
|
249
|
+
|
224
250
|
|
225
251
|
case build_target
|
226
252
|
when 'android'
|
253
|
+
set_atome_mode(path,'tauri')
|
227
254
|
# TODO: write code here
|
228
255
|
when 'browser'
|
256
|
+
set_atome_mode(path,'browser')
|
229
257
|
run_application(:browser, path)
|
230
258
|
when 'freebsd'
|
259
|
+
set_atome_mode(path,'native')
|
231
260
|
# TODO: write code here
|
232
261
|
when 'ios'
|
262
|
+
set_atome_mode(path,'tauri')
|
233
263
|
# TODO: write code here
|
234
264
|
when 'linux'
|
235
265
|
# TODO: write code here
|
236
266
|
when 'osx'
|
267
|
+
set_atome_mode(path,'tauri')
|
237
268
|
run_application(:osx, path)
|
238
269
|
when 'server'
|
270
|
+
set_atome_mode(path,'server')
|
239
271
|
config_location = "#{path}/server/config.ru"
|
240
272
|
file = File.open(config_location)
|
241
273
|
text = file.read
|
data/lib/atome/atome.rb
CHANGED
@@ -3,8 +3,7 @@
|
|
3
3
|
# TODO : remove monitoring
|
4
4
|
# TODO : remove child
|
5
5
|
# TODO : remove parents
|
6
|
-
|
7
|
-
# create_particle(:type, true, true)
|
6
|
+
|
8
7
|
# main entry here
|
9
8
|
class Atome
|
10
9
|
# TODO : clean or delete @private_atome
|
@@ -13,34 +12,26 @@ class Atome
|
|
13
12
|
private
|
14
13
|
|
15
14
|
def initialize(atomes = {}, &atomes_proc)
|
16
|
-
|
15
|
+
|
17
16
|
atomes.each_value do |elements|
|
18
|
-
# the instance variable below contain the id all any atomes that need to be informed when changes occurs
|
19
|
-
@broadcast = {}
|
20
|
-
# now we store the proc in a an atome's property called :bloc
|
21
|
-
elements[:code] = atomes_proc if atomes_proc
|
22
|
-
@atome = elements
|
23
|
-
# we initiate the rendering suing set_type method,
|
24
|
-
# eg for for browser we will call :browser_type generate method in identity.rb file
|
25
|
-
set_type(@atome[:type], &atomes_proc)
|
26
|
-
collapse
|
27
17
|
|
18
|
+
if Universe.atomes.key?(elements[:id])
|
19
|
+
puts "The id #{elements[:id]} is already taken, you must change it"
|
20
|
+
# `throw new Error("this id is already exist, you must change it");`
|
21
|
+
else
|
22
|
+
# the instance variable below contain the id all any atomes that need to be informed when changes occurs
|
23
|
+
@broadcast = {}
|
24
|
+
# # now we store the proc in a an atome's property called :bloc
|
25
|
+
elements[:code] = atomes_proc if atomes_proc
|
26
|
+
|
27
|
+
@atome = elements
|
28
|
+
# we initiate the rendering suing set_type method,
|
29
|
+
# eg for for browser we will call :browser_type generate method in identity.rb file
|
30
|
+
collapse
|
31
|
+
end
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
31
|
-
def set_type(params, &atomes_proc)
|
32
|
-
# @atome[params]
|
33
|
-
# puts "params is : #{@atome[:children]}"
|
34
|
-
# @atome[:children]={shapes: [params]}
|
35
|
-
# @atome[:shape]=:poil
|
36
|
-
# puts "type is : #{@atome[params].class}"
|
37
|
-
# unless @atome[params]
|
38
|
-
# @atome[params] = []
|
39
|
-
# end
|
40
|
-
# @atome[params] << params
|
41
|
-
rendering(:type, params, &atomes_proc)
|
42
|
-
end
|
43
|
-
|
44
35
|
def new_particle(element, store, render, &method_proc)
|
45
36
|
Atome.define_method element do |params = nil, &user_proc|
|
46
37
|
if params || params == false
|
@@ -49,8 +40,12 @@ class Atome
|
|
49
40
|
params = sanitize(element, params, &user_proc)
|
50
41
|
create_particle(element, store, render)
|
51
42
|
send("set_#{element}", params, &user_proc)
|
43
|
+
elsif element == :batch # TODO : find a better solution than a condition if possible
|
44
|
+
@atome[:batch]
|
52
45
|
else
|
53
|
-
|
46
|
+
|
47
|
+
@atome[element]
|
48
|
+
# get_particle(element, &user_proc)
|
54
49
|
end
|
55
50
|
end
|
56
51
|
end
|
@@ -63,41 +58,55 @@ class Atome
|
|
63
58
|
end
|
64
59
|
end
|
65
60
|
|
66
|
-
def
|
61
|
+
def atome_parsing(element, params, &user_proc)
|
67
62
|
params = sanitize(element, params)
|
63
|
+
current_atome = send(element)
|
64
|
+
|
65
|
+
# The condition below check if we need to add or replace the newly created atome
|
66
|
+
if current_atome && !(@atome[:add] && @atome[:add][element])
|
67
|
+
detached(current_atome)
|
68
|
+
@atome[element] = []
|
69
|
+
end
|
70
|
+
# TODO :replace with the line below but need extensive testing as it crash some demos ex: animation
|
71
|
+
params = atome_common(element, params)
|
68
72
|
run_optional_proc("pre_render_#{@atome[:type]}".to_sym, self, params, &user_proc)
|
69
|
-
create_atome(element)
|
70
73
|
run_optional_proc("post_render_#{@atome[:type]}".to_sym, self, params, &user_proc)
|
71
|
-
send("set_#{element}", params, &user_proc)
|
74
|
+
send("set_#{element}", params, &user_proc) # it call Atome.define_method "set_#{element}" in new_atome method
|
72
75
|
end
|
73
76
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
# alert "generated_parents: #{id.value}"
|
79
|
-
# generated_parents = params[:parents] || [id.value]
|
80
|
-
# generated_children = params[:children] || []
|
81
|
-
# temp_default[:id] = generated_id
|
82
|
-
# temp_default[:parents] = generated_parents
|
83
|
-
# temp_default[:clones] = []
|
84
|
-
# temp_default[:renderers] = generated_render
|
85
|
-
# temp_default[:children] = generated_children
|
86
|
-
# temp_default.merge(params)
|
87
|
-
# end
|
77
|
+
def atome_catcher(atome_catch)
|
78
|
+
# puts "atome_catch is : #{atome_catch.class}"
|
79
|
+
atome_catch
|
80
|
+
end
|
88
81
|
|
89
82
|
def new_atome(element, &method_proc)
|
83
|
+
# the method define below is the slowest but params are analysed and sanitized
|
90
84
|
Atome.define_method element do |params = nil, &user_proc|
|
91
|
-
|
92
85
|
if params
|
93
86
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
94
|
-
|
87
|
+
atome_parsing(element, params, &user_proc)
|
95
88
|
else
|
96
|
-
|
89
|
+
# puts "******> we are searching for the atome return(noobs) #{element} : #{id}"
|
90
|
+
# puts "no atome params"
|
91
|
+
atome_catcher(@atome[element])
|
97
92
|
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
# the method define below is the fastest params are passed directly
|
97
|
+
Atome.define_method "set_#{element}" do |params, &user_proc|
|
98
|
+
# we add the newly created atome to the list of "child in it's category, eg if it's a shape we add the new atome
|
99
|
+
# to the shape particles list : @atome[:shape] << params[:id]
|
100
|
+
new_atome = Atome.new({ element => params }, &user_proc)
|
101
|
+
# Now we return the newly created atome instead of the current atome that is the parent cf: b=box; c=b.circle
|
102
|
+
# c must return the circle not the parent box
|
103
|
+
# puts "******> we are searching for the atome return(set) #{element} : #{id}"
|
104
|
+
# puts "no set atome params"
|
105
|
+
atome_catcher(new_atome)
|
106
|
+
|
98
107
|
end
|
99
108
|
# the method below generate Atome method creation at Object level
|
100
|
-
create_method_at_object_level(element)
|
109
|
+
# create_method_at_object_level(element)
|
101
110
|
end
|
102
111
|
|
103
112
|
def new_render_engine(renderer_name, &method_proc)
|
@@ -109,6 +118,12 @@ class Atome
|
|
109
118
|
def run_optional_proc(proc_name, atome = self, params, &user_proc)
|
110
119
|
# params = instance_variable_get("@#{element}")
|
111
120
|
option_found = Universe.get_optional_method(proc_name)
|
121
|
+
|
122
|
+
# if option_found.is_a?(Proc)
|
123
|
+
# # alert "#{proc_name} : #{params} "
|
124
|
+
# else
|
125
|
+
# puts "proc_name : #{proc_name}, \noption_found : (#{option_found})"
|
126
|
+
# end
|
112
127
|
atome.instance_exec(params, user_proc, atome, &option_found) if option_found.is_a?(Proc)
|
113
128
|
end
|
114
129
|
|
@@ -134,9 +149,9 @@ class Atome
|
|
134
149
|
store_code_bloc(element, &user_proc) if user_proc
|
135
150
|
# Params is now an instance variable so it should be passed thru different methods
|
136
151
|
instance_variable_set("@#{element}", params) if store
|
137
|
-
run_optional_proc("pre_render_#{element}"
|
152
|
+
run_optional_proc("pre_render_#{element}", self, params, &user_proc)
|
138
153
|
rendering(element, params, &user_proc) if render
|
139
|
-
run_optional_proc("post_render_#{element}"
|
154
|
+
run_optional_proc("post_render_#{element}", self, params, &user_proc)
|
140
155
|
broadcasting(element)
|
141
156
|
store_value(element) if store
|
142
157
|
self
|
@@ -152,31 +167,5 @@ class Atome
|
|
152
167
|
@atome[element]
|
153
168
|
end
|
154
169
|
|
155
|
-
def get_particle(element, &user_proc)
|
156
|
-
virtual_atome = Atome.new({})
|
157
|
-
virtual_atome.value = (@atome[element])
|
158
|
-
virtual_atome.real_atome = @atome
|
159
|
-
virtual_atome.property = element
|
160
|
-
virtual_atome.user_proc = user_proc
|
161
|
-
# run_optional_proc("pre_get_#{@atome[:type]}".to_sym, 'virtual_atome', &user_proc)
|
162
|
-
# run_optional_proc("pre_get_#{element}".to_sym, self, 'virtual_atome', &user_proc)
|
163
|
-
virtual_atome
|
164
|
-
end
|
165
|
-
|
166
|
-
def get_atome(element, &user_proc)
|
167
|
-
virtual_atome = Atome.new({})
|
168
|
-
virtual_atome.real_atome = @atome
|
169
|
-
virtual_atome.property = element
|
170
|
-
virtual_atome.user_proc = user_proc
|
171
|
-
virtual_atome.value = @atome[element]
|
172
|
-
virtual_atome
|
173
|
-
end
|
174
|
-
|
175
|
-
def create_atome(new_atome)
|
176
|
-
Atome.define_method "set_#{new_atome}" do |params, &user_proc|
|
177
|
-
Atome.new({ new_atome => params }, &user_proc)
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
170
|
Universe.connected
|
182
171
|
end
|
@@ -1,53 +1,83 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
grab(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
2
|
+
|
3
|
+
class Object
|
4
|
+
def new(params, &bloc)
|
5
|
+
generator = Genesis.generator
|
6
|
+
if params.key?(:particle)
|
7
|
+
# render indicate if the particle needs to be rendered
|
8
|
+
# store tell the system if it need to store the particle value
|
9
|
+
# type help the system what type of type the particle will receive and store
|
10
|
+
generator.build_particle(params[:particle], { render: params[:render], return: params[:return],
|
11
|
+
store: params[:store], type: params[:type] }, &bloc)
|
12
|
+
elsif params.key?(:atome)
|
13
|
+
atome_return = params[:return] || params[:atome]
|
14
|
+
generator.build_atome(params[:atome], &bloc)
|
15
|
+
elsif params.key?(:sanitizer)
|
16
|
+
generator.build_sanitizer(params[:sanitizer], &bloc)
|
17
|
+
elsif params.key?(:pre)
|
18
|
+
generator.build_option("pre_render_#{params[:pre]}", &bloc)
|
19
|
+
elsif params.key?(:post)
|
20
|
+
generator.build_option("post_render_#{params[:post]}", &bloc)
|
21
|
+
elsif params.key?(:browser)
|
22
|
+
generator.build_render("browser_#{params[:browser]}", &bloc)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def batch (atomes)
|
27
|
+
grab(:black_matter).batch(atomes)
|
28
|
+
end
|
29
|
+
|
30
|
+
def identity_generator(type = :element)
|
31
|
+
"#{attach[0]}_#{type}_#{Universe.counter}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def grab(atome_to_get)
|
35
|
+
|
36
|
+
Universe.atomes[atome_to_get]
|
37
|
+
end
|
38
|
+
|
39
|
+
def box(params = {}, &proc)
|
40
|
+
grab(:view).box(params, &proc)
|
41
|
+
end
|
42
|
+
|
43
|
+
def circle(params = {}, &proc)
|
44
|
+
grab(:view).circle(params, &proc)
|
45
|
+
end
|
46
|
+
|
47
|
+
def matrix(params = {}, &proc)
|
48
|
+
grab(:view).matrix(params, &proc)
|
49
|
+
end
|
50
|
+
|
51
|
+
# def method_missing(method, *args, &block)
|
52
|
+
# args.each do |atome_found|
|
53
|
+
# args.each do |arg|
|
54
|
+
# default_parent = Essentials.default_params[method][:attach][0] # we get the first parents
|
55
|
+
# # create_method_at_object_level(element)
|
56
|
+
# atome_found = grab(default_parent).send(method, arg, &block)
|
57
|
+
# # we force then return of atome found else its return an hash # TODO : we may find a cleaner solution
|
58
|
+
# return atome_found
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
|
63
|
+
# the method below generate Atome method creation at Object level
|
64
|
+
def atome_method_for_object(element)
|
65
|
+
|
66
|
+
Object.define_method element do |params, &user_proc|
|
67
|
+
default_parent = Essentials.default_params[element][:attach][0] # we get the first parents
|
68
|
+
grab(default_parent).send(element, params, &user_proc)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def atome_method_for_batch(element)
|
73
|
+
Batch.define_method element do |params, &user_proc|
|
74
|
+
dispatch(element, [params], &user_proc)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
def particle_method_for_batch(element)
|
78
|
+
Batch.define_method element do |params, &user_proc|
|
79
|
+
dispatch(element, [params], &user_proc)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -1,24 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Atome
|
4
|
-
def /val
|
5
|
-
|
6
|
-
value/val
|
4
|
+
def /(val)
|
5
|
+
value / val
|
7
6
|
end
|
8
7
|
|
9
|
-
def *val
|
10
|
-
|
11
|
-
value*val
|
8
|
+
def *(val)
|
9
|
+
value * val
|
12
10
|
end
|
13
11
|
|
14
|
-
def -val
|
15
|
-
|
16
|
-
value-val
|
12
|
+
def -(val)
|
13
|
+
value - val
|
17
14
|
end
|
18
15
|
|
19
16
|
|
20
|
-
def +val
|
21
|
-
|
22
|
-
value+val
|
17
|
+
def +(val)
|
18
|
+
value + val
|
23
19
|
end
|
24
20
|
end
|