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
@@ -18,64 +18,83 @@ end
|
|
18
18
|
# now let's get the default render engine
|
19
19
|
default_render = Essentials.default_params[:render_engines]
|
20
20
|
|
21
|
+
|
22
|
+
def atome_infos
|
23
|
+
puts "atome version: #{Atome::VERSION}"
|
24
|
+
# puts "application identity: #{Universe.app_identity}"
|
25
|
+
puts "application identity: #{Atome::aui}"
|
26
|
+
# puts "application mode: #{Atome.mode}"
|
27
|
+
puts "host framework: #{$host}"
|
28
|
+
puts "script mode: #{Universe.current_machine}"
|
29
|
+
puts "user: #{Universe.current_user}"
|
30
|
+
puts "server: #{Universe.current_server}"
|
31
|
+
end
|
32
|
+
|
21
33
|
Universe.current_user = :jeezs
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
puts "current user: #{Universe.current_user}"
|
26
|
-
puts "current server: #{Universe.current_server}"
|
34
|
+
|
35
|
+
|
36
|
+
atome_infos
|
27
37
|
|
28
38
|
Atome.new(
|
29
|
-
{ element: { renderers: [], id: :eDen, type: :element,
|
30
|
-
parents: [], children: [] } }
|
39
|
+
{ element: { renderers: [], id: :eDen, type: :element , tag: {system: true}} }
|
31
40
|
)
|
32
41
|
|
33
42
|
Atome.new(
|
34
|
-
{ element: { renderers: [], id: :user_view, type: :element,
|
35
|
-
|
43
|
+
{ element: { renderers: [], id: :user_view, type: :element, tag: {system: true},
|
44
|
+
attach: [:eDen] } }
|
36
45
|
)
|
37
46
|
|
38
47
|
# color creation
|
39
48
|
Atome.new(
|
40
|
-
{ color: { renderers: default_render, id: :view_color, type: :color,
|
49
|
+
{ color: { renderers: default_render, id: :view_color, type: :color,tag: ({persistent: true}),
|
41
50
|
red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } }
|
42
51
|
)
|
43
52
|
|
44
53
|
Atome.new(
|
45
|
-
{ color: { renderers: default_render, id: :shape_color, type: :color,
|
54
|
+
{ color: { renderers: default_render, id: :shape_color, type: :color,tag: ({persistent: true}),
|
46
55
|
red: 0.4, green: 0.4, blue: 0.4, alpha: 1 } }
|
47
56
|
)
|
48
57
|
|
49
58
|
Atome.new(
|
50
|
-
{ color: { renderers: default_render, id: :box_color, type: :color,
|
59
|
+
{ color: { renderers: default_render, id: :box_color, type: :color,tag: ({persistent: true}),
|
51
60
|
red: 0.5, green: 0.5, blue: 0.5, alpha: 1 } }
|
52
61
|
)
|
53
62
|
|
54
63
|
Atome.new(
|
55
|
-
{ color: { renderers: default_render, id: :text_color, type: :color,
|
64
|
+
{ color: { renderers: default_render, id: :text_color, type: :color,tag: ({persistent: true}),
|
56
65
|
red: 0.3, green: 0.3, blue: 0.3, alpha: 1 } }
|
57
66
|
)
|
58
67
|
|
59
68
|
Atome.new(
|
60
|
-
{ color: { renderers: default_render, id: :circle_color, type: :color,
|
69
|
+
{ color: { renderers: default_render, id: :circle_color, type: :color,tag: ({persistent: true}),
|
61
70
|
red: 0.6, green: 0.6, blue: 0.6, alpha: 1 } }
|
62
71
|
)
|
63
72
|
|
64
73
|
Atome.new(
|
65
|
-
|
74
|
+
|
75
|
+
{ color: { renderers: default_render, id: :matrix_color, type: :color,tag: ({persistent: true}),
|
66
76
|
left: 0, top: 0, red: 0.7, green: 0.7, blue: 0.7, alpha: 1, diffusion: :linear } }
|
67
77
|
)
|
68
78
|
|
69
79
|
# system object creation
|
70
80
|
# the black_matter is used to store un materialized atomes
|
71
81
|
Atome.new(
|
72
|
-
{ shape: { renderers: default_render, id: :black_matter, type: :shape,
|
73
|
-
left: 0, right: 0, top: 0, bottom: 0, width: 0, height: 0, overflow: :hidden
|
82
|
+
{ shape: { renderers: default_render, id: :black_matter, type: :shape, attach: [:user_view],
|
83
|
+
left: 0, right: 0, top: 0, bottom: 0, width: 0, height: 0, overflow: :hidden, tag: {system: true}
|
74
84
|
} })
|
85
|
+
|
75
86
|
# view port
|
76
87
|
Atome.new(
|
77
|
-
{ shape: { renderers: default_render, id: :view, type: :shape,
|
78
|
-
attached:
|
88
|
+
{ shape: { renderers: default_render, id: :view, type: :shape, attach: [:user_view], tag: {system: true},
|
89
|
+
attached: :view_color, left: 0, right: 0, top: 0, bottom: 0, width: :auto, height: :auto, overflow: :auto,
|
90
|
+
}
|
91
|
+
}
|
92
|
+
)
|
93
|
+
|
94
|
+
#unreal port
|
95
|
+
Atome.new(
|
96
|
+
{ shape: { renderers: default_render, id: :intuition, type: :shape, attach: [:user_view], tag: {system: true},
|
97
|
+
left: 0, top: 0, width: 0, height: 0, overflow: :visible,
|
79
98
|
}
|
80
99
|
}
|
81
100
|
)
|
@@ -5,6 +5,7 @@ class Atome
|
|
5
5
|
private
|
6
6
|
|
7
7
|
attr_accessor :drag_start_proc, :drag_move_proc, :drag_end_proc,
|
8
|
+
:drop_action_proc,:over_action_proc,
|
8
9
|
:play_start_proc, :play_active_proc, :play_end_proc,
|
9
10
|
:animation_start_proc, :animation_active_proc, :animation_stop_proc
|
10
11
|
|
@@ -15,7 +16,10 @@ class Atome
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def read_callback(file, proc)
|
18
|
-
|
19
|
+
file_content=file.split('</head><body>')[1].split('</body></html>')[0]
|
20
|
+
# FIXME : found why '> is converted to >'
|
21
|
+
file_content=file_content.gsub(">", ">")
|
22
|
+
instance_exec(file_content, &proc) if proc.is_a?(Proc)
|
19
23
|
end
|
20
24
|
|
21
25
|
def time_callback(current_time, markers)
|
@@ -29,6 +33,7 @@ class Atome
|
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
36
|
+
# drag callbacks
|
32
37
|
def drag_start_callback(page_x, page_y, left_val, top_val)
|
33
38
|
@atome[:left] = left_val
|
34
39
|
@atome[:top] = top_val
|
@@ -46,10 +51,51 @@ class Atome
|
|
46
51
|
def drag_end_callback(page_x, page_y, left_val, top_val)
|
47
52
|
@atome[:left] = left_val
|
48
53
|
@atome[:top] = top_val
|
54
|
+
# alert :loo
|
55
|
+
# #now we rest the position
|
56
|
+
# self.left(left_val)
|
57
|
+
# self.top(top_val)
|
49
58
|
proc = @drag_end_proc
|
50
59
|
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
51
60
|
end
|
52
61
|
|
62
|
+
# drop callbacks
|
63
|
+
def drop_action_callback( data_found, _full_event)
|
64
|
+
proc = @drop_action_proc
|
65
|
+
instance_exec(data_found, &proc) if proc.is_a?(Proc)
|
66
|
+
end
|
67
|
+
|
68
|
+
# def over_action_callback( data_found, _full_event)
|
69
|
+
# proc = @enter_action_proc
|
70
|
+
# instance_exec(data_found, &proc) if proc.is_a?(Proc)
|
71
|
+
# end
|
72
|
+
|
73
|
+
# drop callbacks
|
74
|
+
def enter_action_callback( data_found, _full_event)
|
75
|
+
proc = @enter_action_proc
|
76
|
+
instance_exec( data_found,&proc) if proc.is_a?(Proc)
|
77
|
+
end
|
78
|
+
|
79
|
+
def leave_action_callback(data_found)
|
80
|
+
proc = @leave_action_proc
|
81
|
+
instance_exec( data_found,&proc) if proc.is_a?(Proc)
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
# def drag_move_callback(page_x, page_y, left_val, top_val)
|
86
|
+
# proc = @drag_move_proc
|
87
|
+
# @atome[:left] = left_val
|
88
|
+
# @atome[:top] = top_val
|
89
|
+
# instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
90
|
+
# end
|
91
|
+
#
|
92
|
+
# def drag_end_callback(page_x, page_y, left_val, top_val)
|
93
|
+
# @atome[:left] = left_val
|
94
|
+
# @atome[:top] = top_val
|
95
|
+
# proc = @drag_end_proc
|
96
|
+
# instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
97
|
+
# end
|
98
|
+
|
53
99
|
# sort callbacks
|
54
100
|
def sort_callback(atome)
|
55
101
|
sort_proc = @sort_proc
|
@@ -3,28 +3,32 @@
|
|
3
3
|
# use to sanitize and secure user input
|
4
4
|
module Essentials
|
5
5
|
@default_params = {
|
6
|
+
# Warning : type must be define first
|
6
7
|
render_engines: [:browser],
|
7
|
-
collector: { type: :element,
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
# collector: { type: :element, attach: [:black_matter] },
|
9
|
+
image: { type: :image, attach: [:view] },
|
10
|
+
web: { type: :web, attach: [:view] },
|
11
|
+
video: { type: :video, attach: [:view] },
|
12
|
+
animation: { type: :animation, attach: [:black_matter] },
|
13
|
+
element: { type: :element, renderers: [], attach: [:black_matter] },
|
14
|
+
matrix: { type: :shape, width: 99, height: 99,
|
15
|
+
attached: :matrix_color,
|
16
|
+
left: 100, top: 100, clones: [], preset: :matrix, attach: [:view] },
|
17
|
+
box: { type: :shape, width: 99, height: 99,
|
18
|
+
attached: :box_color, attach: [:view],
|
15
19
|
left: 100, top: 100, clones: [], preset: :box },
|
16
|
-
circle: {
|
17
|
-
attached:
|
20
|
+
circle: { type: :shape, width: 99, height: 99, smooth: '100%',
|
21
|
+
attached: :circle_color, attach: [:view],
|
18
22
|
left: 100, top: 100, clones: [], preset: :circle },
|
19
|
-
shape: {
|
20
|
-
attached:
|
23
|
+
shape: { type: :shape, width: 99, height: 99,
|
24
|
+
attached: :shape_color, attach: [:view],
|
21
25
|
left: 100, top: 100, clones: [] },
|
22
|
-
text: {
|
23
|
-
attached:
|
26
|
+
text: { type: :text, visual: { size: 25 },
|
27
|
+
attached: :text_color, attach: [:view],
|
24
28
|
data: 'this is a text sample', width: 199, height: 33, clones: [] },
|
25
|
-
drm: { type: :drm,
|
26
|
-
shadow: {
|
27
|
-
color: {
|
29
|
+
drm: { type: :drm, attach: [:black_matter] },
|
30
|
+
shadow: { type: :shadow, attach: [:black_matter] },
|
31
|
+
color: { type: :color,attach: [:black_matter], red: 0, green: 0, blue: 0, alpha: 1 }
|
28
32
|
}
|
29
33
|
|
30
34
|
def self.default_params
|
@@ -32,7 +36,6 @@ module Essentials
|
|
32
36
|
end
|
33
37
|
|
34
38
|
def self.new_default_params(new_default)
|
35
|
-
# puts "=====+====> #{new_default}, #{new_default.class}"
|
36
39
|
@default_params.merge!(new_default)
|
37
40
|
end
|
38
41
|
|
@@ -10,14 +10,4 @@ class Atome
|
|
10
10
|
{ red: split_data[0].to_f / 100, green: split_data[1].to_f / 100, blue: split_data[2].to_f / 100 }
|
11
11
|
end
|
12
12
|
|
13
|
-
def found_parents_and_renderers
|
14
|
-
if @atome
|
15
|
-
parent_found = [@atome[:id]]
|
16
|
-
render_found = @atome[:renderers]
|
17
|
-
else
|
18
|
-
parent_found = []
|
19
|
-
render_found = Essentials.default_params[:render_engines]
|
20
|
-
end
|
21
|
-
{ parent: parent_found, renderers: render_found }
|
22
|
-
end
|
23
13
|
end
|
@@ -4,9 +4,40 @@
|
|
4
4
|
class Atome
|
5
5
|
private
|
6
6
|
|
7
|
+
# local server messaging
|
8
|
+
def self.controller_sender(message)
|
9
|
+
return if $host == :browser
|
10
|
+
|
11
|
+
json_msg = message.to_json
|
12
|
+
atome_js.JS.controller_sender(json_msg)
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def response_listener(hashed_msg)
|
17
|
+
js_action = hashed_msg.JS[:action]
|
18
|
+
js_body = hashed_msg.JS[:body]
|
19
|
+
send(js_action, js_body)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.controller_listener
|
23
|
+
|
24
|
+
return if $host == :browser
|
25
|
+
|
26
|
+
atome_js.JS.controller_listener()
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
# def self.mode=(val)
|
31
|
+
# @atome_mode=val
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# def self.mode
|
35
|
+
# "@atome_mode"
|
36
|
+
# end
|
37
|
+
|
7
38
|
def collapse
|
8
39
|
@atome.each do |element, value|
|
9
|
-
send(element, value)
|
40
|
+
send(element, value)
|
10
41
|
end
|
11
42
|
end
|
12
43
|
|
@@ -14,22 +45,21 @@ class Atome
|
|
14
45
|
true
|
15
46
|
end
|
16
47
|
|
17
|
-
def sanitize(element, params
|
48
|
+
def sanitize(element, params, &user_proc)
|
18
49
|
bloc_found = Universe.get_sanitizer_method(element)
|
19
|
-
params = instance_exec(params,user_proc, &bloc_found) if bloc_found.is_a?(Proc)
|
50
|
+
params = instance_exec(params, user_proc, &bloc_found) if bloc_found.is_a?(Proc)
|
20
51
|
params
|
21
52
|
end
|
22
53
|
|
23
|
-
|
24
54
|
def history(property, value)
|
25
55
|
"historize : #{property} #{value}"
|
26
56
|
end
|
27
57
|
|
28
58
|
def broadcasting(element)
|
29
|
-
params=instance_variable_get("@#{element}")
|
59
|
+
params = instance_variable_get("@#{element}")
|
30
60
|
@broadcast.each_value do |particle_monitored|
|
31
61
|
if particle_monitored[:particles].include?(element)
|
32
|
-
code_found=particle_monitored[:code]
|
62
|
+
code_found = particle_monitored[:code]
|
33
63
|
instance_exec(self, element, params, &code_found) if code_found.is_a?(Proc)
|
34
64
|
end
|
35
65
|
end
|
@@ -37,14 +67,14 @@ class Atome
|
|
37
67
|
|
38
68
|
public
|
39
69
|
|
40
|
-
def monitor(params=nil, &proc_monitoring)
|
70
|
+
def monitor(params = nil, &proc_monitoring)
|
41
71
|
if params
|
42
|
-
monitoring=atome[:monitor] ||= {}
|
72
|
+
monitoring = atome[:monitor] ||= {}
|
43
73
|
params[:atomes].each do |atome_id|
|
44
74
|
target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
|
45
75
|
monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
|
46
|
-
monitoring[monitor_id]=params.merge({code: proc_monitoring})
|
47
|
-
target_broadcaster[monitor_id] = { particles: params[:particles], code:
|
76
|
+
monitoring[monitor_id] = params.merge({ code: proc_monitoring })
|
77
|
+
target_broadcaster[monitor_id] = { particles: params[:particles], code: proc_monitoring }
|
48
78
|
end
|
49
79
|
else
|
50
80
|
atome[:monitor]
|
@@ -59,7 +89,6 @@ class Atome
|
|
59
89
|
instance_variable_set("@#{element}_code", user_proc)
|
60
90
|
end
|
61
91
|
|
62
|
-
|
63
92
|
def particles(particles_found = nil)
|
64
93
|
if particles_found
|
65
94
|
particles_found.each do |particle_found, value_found|
|
@@ -71,11 +100,28 @@ class Atome
|
|
71
100
|
end
|
72
101
|
|
73
102
|
def <<(particle)
|
74
|
-
|
75
|
-
real_atome[property] <<
|
103
|
+
|
104
|
+
real_atome[property] << particle
|
105
|
+
end
|
106
|
+
|
107
|
+
def add_to_integer(_atome_found, _particle_found, &_user_proc)
|
108
|
+
puts "there's no interest to add anything to an integer!"
|
109
|
+
end
|
110
|
+
|
111
|
+
def add_to_float(_atome_found, _particle_found, &_user_proc)
|
112
|
+
puts "there's no interest to add anything to an integer!"
|
113
|
+
end
|
114
|
+
|
115
|
+
def add_to_bignum(_atome_found, _particle_found, &_user_proc)
|
116
|
+
puts "there's no interest to add anything to an integer!"
|
117
|
+
end
|
118
|
+
|
119
|
+
def add_to_string(_atome_found, _particle_found, &_user_proc)
|
120
|
+
puts "there's no interest to add anything to an string!"
|
76
121
|
end
|
77
122
|
|
78
123
|
def add_to_hash(particle, values, &user_proc)
|
124
|
+
@atome[:add][particle] = true
|
79
125
|
# we update the holder of any new particle if user pass a bloc
|
80
126
|
store_code_bloc(particle, &user_proc) if user_proc
|
81
127
|
values.each do |value_id, value|
|
@@ -84,36 +130,53 @@ class Atome
|
|
84
130
|
end
|
85
131
|
|
86
132
|
def add_to_array(particle, value, &_user_proc)
|
133
|
+
@atome[:add][particle] = true
|
87
134
|
# we update the holder of any new particle if user pass a bloc
|
88
135
|
@atome[particle] << value
|
89
136
|
end
|
90
137
|
|
91
|
-
def add_to_atome(
|
92
|
-
puts "
|
93
|
-
|
138
|
+
def add_to_atome(atome_type, particle_found, &user_proc)
|
139
|
+
# puts "-----> atome_type : #{atome_type}, particle_found : #{particle_found}"
|
140
|
+
# @atome[:add] = [] unless @atome[:add]
|
141
|
+
@atome[:add][atome_type] = particle_found
|
142
|
+
send(atome_type, particle_found, &user_proc)
|
94
143
|
end
|
95
144
|
|
96
145
|
def add(particles, &user_proc)
|
146
|
+
|
147
|
+
@atome[:add] = {} unless @atome[:add]
|
97
148
|
particles.each do |particle, value|
|
98
149
|
particle_type = Universe.particle_list[particle] || 'atome'
|
99
150
|
send("add_to_#{particle_type}", particle, value, &user_proc)
|
151
|
+
# now we remove systematically the added hash so next particle won't be automatically added
|
152
|
+
@atome[:add].delete(particle)
|
100
153
|
end
|
101
154
|
end
|
102
155
|
|
156
|
+
def substract(_particles, &_user_proc)
|
157
|
+
# TODO : write code here to remove add elements"
|
158
|
+
puts "write code here to remove add elements"
|
159
|
+
# @atome[:add]=:poi
|
160
|
+
# particles.each do |particle, value|
|
161
|
+
# particle_type = Universe.particle_list[particle] || 'atome'
|
162
|
+
# puts "<<<<<< this the place to b ....>>>>>>#{particles} #{particle_type}"
|
163
|
+
# send("add_to_#{particle_type}", particle, value, &user_proc)
|
164
|
+
# end
|
165
|
+
end
|
166
|
+
|
103
167
|
def refresh
|
104
168
|
collapse
|
105
169
|
end
|
106
170
|
|
107
|
-
def collector(params = {}, &bloc)
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
end
|
171
|
+
# def collector(params = {}, &bloc)
|
172
|
+
# atome_type = :collector
|
173
|
+
# # generated_render = params[:renderers] || []
|
174
|
+
# # generated_id = params[:id] || identity_generator(atome_type)
|
175
|
+
# #
|
176
|
+
# # generated_parents = params[:parents] || [id]
|
177
|
+
# params = atome_common(atome_type, params)
|
178
|
+
# Batch.new({ atome_type => params }, &bloc)
|
179
|
+
# end
|
117
180
|
|
118
181
|
def each(&proc)
|
119
182
|
value.each do |val|
|
@@ -122,35 +185,34 @@ class Atome
|
|
122
185
|
end
|
123
186
|
|
124
187
|
def include?(value)
|
125
|
-
self.
|
188
|
+
self.include?(value)
|
126
189
|
end
|
127
190
|
|
128
|
-
|
129
|
-
|
130
|
-
def each_with_index(*args)
|
131
|
-
self.value.each_with_index do |val, index|
|
132
|
-
yield(val, index)
|
133
|
-
end
|
191
|
+
def each_with_index(*args, &block)
|
192
|
+
value.each_with_index(&block)
|
134
193
|
end
|
135
194
|
|
136
195
|
def [](range)
|
137
|
-
if
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
196
|
+
if instance_of?(Atome)
|
197
|
+
value[range]
|
198
|
+
# elsif value[range].instance_of?(Atome)
|
199
|
+
# return value[range]
|
200
|
+
elsif value[range].instance_of?(Array)
|
201
|
+
# collector_object = Object.collector({})
|
202
|
+
# collected_atomes = []
|
203
|
+
# value[range].each do |atome_found|
|
204
|
+
# collected_atomes << atome_found
|
205
|
+
# end
|
206
|
+
# collector_object.data(collected_atomes)
|
207
|
+
Batch.new(value[range])
|
208
|
+
# return collector_object
|
148
209
|
end
|
149
210
|
|
150
211
|
end
|
212
|
+
|
151
213
|
def []=(params, value)
|
152
214
|
# TODO : it may miss some code, see above
|
153
|
-
self
|
215
|
+
self[params] = value
|
154
216
|
end
|
155
217
|
|
156
218
|
def set(params)
|
@@ -169,4 +231,40 @@ class Atome
|
|
169
231
|
end
|
170
232
|
end
|
171
233
|
|
234
|
+
def materials
|
235
|
+
# TODO: the code below need a rewrite, we must find a new algorithm to avoid all those conditions
|
236
|
+
images_found = atome[:image] || []
|
237
|
+
videos_found = atome[:video] || []
|
238
|
+
shapes_found = atome[:shape] || []
|
239
|
+
web_found = atome[:web] || []
|
240
|
+
texts_found = atome[:text] || []
|
241
|
+
images_found.concat(videos_found).concat(shapes_found).concat(web_found).concat(texts_found)
|
242
|
+
end
|
243
|
+
|
244
|
+
|
245
|
+
def physical
|
246
|
+
types=[:text, :image, :video, :shape, :web]
|
247
|
+
atomes_found=[]
|
248
|
+
types.each do |type|
|
249
|
+
ids_found = self.send(type)
|
250
|
+
next unless ids_found
|
251
|
+
|
252
|
+
ids_found.each do |id_found|
|
253
|
+
atomes_found << id_found
|
254
|
+
end
|
255
|
+
end
|
256
|
+
atomes_found
|
257
|
+
end
|
258
|
+
|
259
|
+
def detach_atome(atome_id_to_detach)
|
260
|
+
atome_to_detach = grab(atome_id_to_detach)
|
261
|
+
# TODO: remove the condition below and find why it try to detach an atome that doesn't exist
|
262
|
+
return unless atome_to_detach
|
263
|
+
atome_type_found = atome_to_detach.atome[:type]
|
264
|
+
atome_id_found = atome_to_detach.atome[:id]
|
265
|
+
@atome[atome_type_found].delete(atome_id_found)
|
266
|
+
@atome[:attached].delete(atome_id_to_detach)
|
267
|
+
|
268
|
+
end
|
269
|
+
|
172
270
|
end
|
data/lib/atome/kernel/batch.rb
CHANGED
@@ -1,49 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# this class is used to allow batch treatment
|
3
4
|
class Batch
|
4
|
-
|
5
5
|
def each(&proc)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def id(val = nil)
|
12
|
-
if val
|
13
|
-
@id = val
|
14
|
-
else
|
15
|
-
@id
|
6
|
+
@data.each do |val|
|
7
|
+
atome_found = grab(val)
|
8
|
+
instance_exec(atome_found, &proc) if proc.is_a?(Proc)
|
16
9
|
end
|
17
10
|
end
|
18
11
|
|
19
12
|
def initialize(params)
|
20
|
-
@
|
21
|
-
|
22
|
-
Universe.add_to_atomes(@id, self)
|
13
|
+
@data = params
|
14
|
+
# self
|
23
15
|
end
|
24
16
|
|
25
|
-
def dispatch
|
17
|
+
def dispatch(method, args, &block)
|
26
18
|
@data.each do |atome_found|
|
27
|
-
|
19
|
+
args.each do |arg|
|
20
|
+
grab(atome_found).send(method, arg, &block)
|
21
|
+
end
|
28
22
|
end
|
23
|
+
# we return self to allow method chaining
|
24
|
+
self
|
29
25
|
end
|
30
|
-
|
31
|
-
# TODO: automatise collector methods creation when creating a new atome type
|
32
|
-
def color(args, &block)
|
33
|
-
|
34
|
-
dispatch(:color, args, &block)
|
35
|
-
end
|
36
|
-
|
37
|
-
def shadow(args, &block)
|
38
|
-
dispatch(:color, args, &block)
|
39
|
-
end
|
40
|
-
|
41
|
-
def method_missing(method, *args, &block)
|
42
|
-
dispatch(method, args, &block)
|
43
|
-
end
|
44
|
-
|
45
|
-
def data(collection)
|
46
|
-
@data = collection
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
26
|
+
end
|
@@ -19,7 +19,9 @@ class Universe
|
|
19
19
|
|
20
20
|
def add_optional_method(method_name, &method_proc)
|
21
21
|
# this method is used to add optional methods
|
22
|
+
# puts "3 => #{method_name}"
|
22
23
|
instance_variable_get('@options').merge!({ method_name => method_proc })
|
24
|
+
# puts "====> #{instance_variable_get('@options')[method_name]}"
|
23
25
|
end
|
24
26
|
|
25
27
|
def get_optional_method(method_name)
|
@@ -54,7 +56,7 @@ class Universe
|
|
54
56
|
|
55
57
|
def app_identity
|
56
58
|
# each app hav its own identity, this allow to generate new user identities from th
|
57
|
-
@app_identity =
|
59
|
+
@app_identity = 369
|
58
60
|
# the identity is define as follow : parentsCreatorID_softwareInstanceID_objetID
|
59
61
|
# in this case parents is eve so 0, Software instance number is main eVe server which is also 0,
|
60
62
|
# and finally the object is 3 as this the third object created by the main server
|
data/lib/atome/presets/atome.rb
CHANGED
@@ -5,39 +5,30 @@
|
|
5
5
|
# TODO: Factorise codes below
|
6
6
|
# TODO we must clarified/unified the usage of presets and sanitizer it is not clear
|
7
7
|
|
8
|
-
|
9
8
|
class Atome
|
10
|
-
def atome_common(atome_type,
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
def atome_common(atome_type, params)
|
10
|
+
# TODO : optimise the whole code below and make it rubocop friendly
|
11
|
+
essential_params = Essentials.default_params[atome_type] || {}
|
12
|
+
essential_params[:type] = essential_params[:type] || :element
|
13
|
+
essential_params[:renderers] = essential_params[:renderers] || @atome[:renderers]
|
14
|
+
essential_params[:id] = params[:id] || identity_generator(atome_type)
|
15
|
+
essential_params[:attach] = params[:attach] || [@atome[:id]] || [:view]
|
16
|
+
essential_params.merge(params)
|
18
17
|
end
|
19
18
|
|
20
19
|
def box(params = {}, &bloc)
|
21
|
-
default_renderer = Essentials.default_params[:render_engines]
|
22
20
|
atome_type = :box
|
23
|
-
|
24
|
-
generated_id = params[:id] || identity_generator(:box)
|
25
|
-
generated_parents = params[:parents] || [id.value]
|
26
|
-
generated_children = params[:children] || []
|
27
|
-
|
28
|
-
params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
|
29
|
-
|
21
|
+
params = atome_common(atome_type, params)
|
30
22
|
Atome.new({ atome_type => params }, &bloc)
|
31
23
|
end
|
32
24
|
|
33
25
|
def circle(params = {}, &bloc)
|
34
|
-
default_renderer = Essentials.default_params[:render_engines]
|
35
26
|
atome_type = :circle
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
27
|
+
# puts "counter#{Universe.counter}"
|
28
|
+
|
29
|
+
params = atome_common(atome_type, params)
|
30
|
+
# puts "params ==> #{params} : #{Universe.counter}"
|
31
|
+
|
41
32
|
Atome.new({ atome_type => params }, &bloc)
|
42
33
|
end
|
43
34
|
|