atome 0.5.3.8.8 → 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 +43 -57
- data/lib/atome/extensions/atome.rb +82 -52
- data/lib/atome/extensions/mathematic.rb +8 -12
- data/lib/atome/extensions/matrix.rb +138 -210
- data/lib/atome/genesis/generators/atome.rb +8 -134
- 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 +6 -33
- data/lib/atome/genesis/generators/material.rb +3 -54
- data/lib/atome/genesis/generators/utility.rb +63 -58
- data/lib/atome/genesis/genesis.rb +8 -0
- data/lib/atome/genesis/sparkle.rb +35 -16
- data/lib/atome/helpers/callbacks.rb +47 -1
- data/lib/atome/helpers/essentials.rb +1 -1
- data/lib/atome/helpers/sanitizer.rb +0 -10
- data/lib/atome/helpers/utilities.rb +74 -28
- data/lib/atome/kernel/batch.rb +13 -35
- data/lib/atome/kernel/universe.rb +2 -0
- data/lib/atome/presets/atome.rb +4 -12
- data/lib/atome/renderers/browser/atome.rb +1 -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/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 +5 -1
- data/lib/atome/renderers/browser/spatial.rb +3 -2
- data/lib/atome/renderers/browser/utility.rb +7 -7
- data/lib/atome/version.rb +2 -2
- data/lib/atome.rb +1 -0
- data/sig/atome.rbs +16 -0
- data/sig/batch.rbs +7 -0
- data/sig/browser_helper.rbs +14 -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/rubies/demos.rb +63 -0
- data/vendor/assets/src/medias/rubies/examples/add.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/animation.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/atome_new.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/attach.rb +10 -10
- data/vendor/assets/src/medias/rubies/examples/attached.rb +2 -3
- 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 +3 -3
- data/vendor/assets/src/medias/rubies/examples/delete.rb +17 -1
- data/vendor/assets/src/medias/rubies/examples/detached.rb +3 -3
- data/vendor/assets/src/medias/rubies/examples/drag.rb +52 -1
- data/vendor/assets/src/medias/rubies/examples/drop.rb +26 -0
- data/vendor/assets/src/medias/rubies/examples/fullscreen.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/markers.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/matrix.rb +102 -0
- 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 +1 -1
- 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/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 +2 -2
- data/vendor/assets/src/medias/rubies/examples/video.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/{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 +32 -14
- 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}/_matrix.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 --local`
|
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
@@ -14,15 +14,21 @@ class Atome
|
|
14
14
|
def initialize(atomes = {}, &atomes_proc)
|
15
15
|
|
16
16
|
atomes.each_value do |elements|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
26
32
|
end
|
27
33
|
end
|
28
34
|
|
@@ -34,8 +40,12 @@ class Atome
|
|
34
40
|
params = sanitize(element, params, &user_proc)
|
35
41
|
create_particle(element, store, render)
|
36
42
|
send("set_#{element}", params, &user_proc)
|
43
|
+
elsif element == :batch # TODO : find a better solution than a condition if possible
|
44
|
+
@atome[:batch]
|
37
45
|
else
|
38
|
-
|
46
|
+
|
47
|
+
@atome[element]
|
48
|
+
# get_particle(element, &user_proc)
|
39
49
|
end
|
40
50
|
end
|
41
51
|
end
|
@@ -50,51 +60,37 @@ class Atome
|
|
50
60
|
|
51
61
|
def atome_parsing(element, params, &user_proc)
|
52
62
|
params = sanitize(element, params)
|
53
|
-
current_atome = send(element)
|
63
|
+
current_atome = send(element)
|
54
64
|
|
55
65
|
# The condition below check if we need to add or replace the newly created atome
|
56
66
|
if current_atome && !(@atome[:add] && @atome[:add][element])
|
57
67
|
detached(current_atome)
|
58
68
|
@atome[element] = []
|
59
69
|
end
|
60
|
-
|
61
|
-
|
62
70
|
# TODO :replace with the line below but need extensive testing as it crash some demos ex: animation
|
63
71
|
params = atome_common(element, params)
|
64
|
-
# ############ code to remove below
|
65
|
-
# parent_found = found_parents_and_renderers[:parent]
|
66
|
-
# render_found = found_parents_and_renderers[:renderers]
|
67
|
-
# default_params = Essentials.default_params[element] || {}
|
68
|
-
# generated_id = params[:id] || identity_generator(element)
|
69
|
-
#
|
70
|
-
# default_params = { renderers: render_found, id: generated_id, type: element,
|
71
|
-
# attach: parent_found }.merge(default_params)
|
72
|
-
# params = default_params.merge(params).merge({ clones: [] })
|
73
|
-
# ############ code to remove above
|
74
|
-
# puts params[:renderers]
|
75
|
-
# puts params[:id]
|
76
|
-
# new_params= {renderers: params[:renderers], id: params[:id]}.merge(params)
|
77
|
-
#
|
78
|
-
# params=new_params
|
79
|
-
# puts "new_params : #{params}"
|
80
|
-
###
|
81
|
-
###
|
82
|
-
# puts "params :\n #{params}\n\n, params2 :\n #{params2}"
|
83
72
|
run_optional_proc("pre_render_#{@atome[:type]}".to_sym, self, params, &user_proc)
|
84
73
|
run_optional_proc("post_render_#{@atome[:type]}".to_sym, self, params, &user_proc)
|
85
74
|
send("set_#{element}", params, &user_proc) # it call Atome.define_method "set_#{element}" in new_atome method
|
86
75
|
end
|
87
76
|
|
88
|
-
def
|
77
|
+
def atome_catcher(atome_catch)
|
78
|
+
# puts "atome_catch is : #{atome_catch.class}"
|
79
|
+
atome_catch
|
80
|
+
end
|
89
81
|
|
82
|
+
def new_atome(element, &method_proc)
|
90
83
|
# the method define below is the slowest but params are analysed and sanitized
|
91
84
|
Atome.define_method element do |params = nil, &user_proc|
|
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
|
+
|
98
94
|
end
|
99
95
|
|
100
96
|
# the method define below is the fastest params are passed directly
|
@@ -104,11 +100,13 @@ class Atome
|
|
104
100
|
new_atome = Atome.new({ element => params }, &user_proc)
|
105
101
|
# Now we return the newly created atome instead of the current atome that is the parent cf: b=box; c=b.circle
|
106
102
|
# c must return the circle not the parent box
|
107
|
-
|
103
|
+
# puts "******> we are searching for the atome return(set) #{element} : #{id}"
|
104
|
+
# puts "no set atome params"
|
105
|
+
atome_catcher(new_atome)
|
106
|
+
|
108
107
|
end
|
109
108
|
# the method below generate Atome method creation at Object level
|
110
|
-
create_method_at_object_level(element)
|
111
|
-
|
109
|
+
# create_method_at_object_level(element)
|
112
110
|
end
|
113
111
|
|
114
112
|
def new_render_engine(renderer_name, &method_proc)
|
@@ -120,6 +118,12 @@ class Atome
|
|
120
118
|
def run_optional_proc(proc_name, atome = self, params, &user_proc)
|
121
119
|
# params = instance_variable_get("@#{element}")
|
122
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
|
123
127
|
atome.instance_exec(params, user_proc, atome, &option_found) if option_found.is_a?(Proc)
|
124
128
|
end
|
125
129
|
|
@@ -145,9 +149,9 @@ class Atome
|
|
145
149
|
store_code_bloc(element, &user_proc) if user_proc
|
146
150
|
# Params is now an instance variable so it should be passed thru different methods
|
147
151
|
instance_variable_set("@#{element}", params) if store
|
148
|
-
run_optional_proc("pre_render_#{element}"
|
152
|
+
run_optional_proc("pre_render_#{element}", self, params, &user_proc)
|
149
153
|
rendering(element, params, &user_proc) if render
|
150
|
-
run_optional_proc("post_render_#{element}"
|
154
|
+
run_optional_proc("post_render_#{element}", self, params, &user_proc)
|
151
155
|
broadcasting(element)
|
152
156
|
store_value(element) if store
|
153
157
|
self
|
@@ -163,23 +167,5 @@ class Atome
|
|
163
167
|
@atome[element]
|
164
168
|
end
|
165
169
|
|
166
|
-
def get_particle(element, &user_proc)
|
167
|
-
virtual_atome = Atome.new({})
|
168
|
-
virtual_atome.value = (@atome[element])
|
169
|
-
virtual_atome.real_atome = @atome
|
170
|
-
virtual_atome.property = element
|
171
|
-
virtual_atome.user_proc = user_proc
|
172
|
-
virtual_atome
|
173
|
-
end
|
174
|
-
|
175
|
-
def get_atome(element, &user_proc)
|
176
|
-
virtual_atome = Atome.new({})
|
177
|
-
virtual_atome.real_atome = @atome
|
178
|
-
virtual_atome.property = element
|
179
|
-
virtual_atome.user_proc = user_proc
|
180
|
-
virtual_atome.value = @atome[element]
|
181
|
-
virtual_atome
|
182
|
-
end
|
183
|
-
|
184
170
|
Universe.connected
|
185
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
|