atome 0.5.3.8.1 → 0.5.4.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|