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
@@ -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
|
|