atome 0.5.3.4 → 0.5.3.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +8 -3
- data/app_builder_helpers/Rakefile +9 -3
- data/exe/atome +6 -19
- data/lib/atome/atome.rb +29 -19
- data/lib/atome/extensions/atome.rb +23 -1
- data/lib/atome/extensions/matrix.rb +10 -5
- data/lib/atome/genesis/generators/atome.rb +149 -22
- data/lib/atome/genesis/generators/effect.rb +8 -3
- data/lib/atome/genesis/generators/event.rb +77 -34
- data/lib/atome/genesis/generators/geometry.rb +21 -5
- data/lib/atome/genesis/generators/identity.rb +110 -57
- data/lib/atome/genesis/generators/material.rb +74 -16
- data/lib/atome/genesis/generators/spatial.rb +8 -9
- data/lib/atome/genesis/generators/time.rb +1 -1
- data/lib/atome/genesis/generators/utility.rb +66 -39
- data/lib/atome/genesis/genesis.rb +7 -5
- data/lib/atome/genesis/sparkle.rb +8 -2
- data/lib/atome/helpers/essentials.rb +2 -6
- data/lib/atome/helpers/utilities.rb +15 -0
- data/lib/atome/kernel/universe.rb +2 -2
- data/lib/atome/presets/atome.rb +60 -61
- data/lib/atome/renderers/browser/event.rb +6 -3
- data/lib/atome/renderers/browser/geometry.rb +18 -10
- data/lib/atome/renderers/browser/helpers/browser_helper.rb +9 -0
- data/lib/atome/renderers/browser/helpers/color_helper.rb +4 -4
- data/lib/atome/renderers/browser/helpers/event_helper.rb +24 -12
- data/lib/atome/renderers/browser/helpers/shape_helper.rb +4 -4
- data/lib/atome/renderers/browser/helpers/text_helper.rb +4 -4
- data/lib/atome/renderers/browser/helpers/video_helper.rb +1 -1
- data/lib/atome/renderers/browser/helpers/web_helper.rb +4 -4
- data/lib/atome/renderers/browser/identity.rb +4 -0
- data/lib/atome/renderers/browser/material.rb +20 -1
- data/lib/atome/renderers/browser/spatial.rb +4 -0
- data/lib/atome/version.rb +1 -1
- data/sig/atome.rbs +12 -0
- data/sig/genesis.rbs +3 -0
- data/vendor/assets/application/index.rb +2 -0
- data/vendor/assets/src/index.html +1 -1
- data/vendor/assets/src/js/atome/atome.js +2 -1
- data/vendor/assets/src/medias/images/icons/email.svg +13 -0
- data/vendor/assets/src/medias/images/icons/mail_gray.svg +6 -0
- data/vendor/assets/src/medias/images/icons/mail_green.svg +6 -0
- data/vendor/assets/src/medias/images/icons/mail_orange.svg +6 -0
- data/vendor/assets/src/medias/images/icons/undo.svg +4 -0
- data/vendor/assets/src/medias/images/logos/Orange/Facebook.svg +8 -0
- data/vendor/assets/src/medias/images/logos/Orange/TikTok.svg +11 -0
- data/vendor/assets/src/medias/images/logos/Orange/Twitter.svg +8 -0
- data/vendor/assets/src/medias/images/logos/Orange/instagram.svg +8 -0
- data/vendor/assets/src/medias/images/logos/Orange/vimeo.svg +8 -0
- data/vendor/assets/src/medias/images/logos/Orange/youtube.svg +7 -0
- data/vendor/assets/src/medias/images/logos/gray/Facebook.svg +8 -0
- data/vendor/assets/src/medias/images/logos/gray/TikTok.svg +11 -0
- data/vendor/assets/src/medias/images/logos/gray/Twitter.svg +8 -0
- data/vendor/assets/src/medias/images/logos/gray/instagram.svg +8 -0
- data/vendor/assets/src/medias/images/logos/gray/vimeo.svg +8 -0
- data/vendor/assets/src/medias/images/logos/gray/youtube.svg +7 -0
- data/vendor/assets/src/medias/images/logos/gray/youtube2.svg +13 -0
- data/vendor/assets/src/medias/images/logos/vimeo.svg +17 -0
- data/vendor/assets/src/medias/rubies/examples/_table2.rb +106 -36
- data/vendor/assets/src/medias/rubies/examples/add.rb +1 -3
- data/vendor/assets/src/medias/rubies/examples/attached.rb +16 -0
- data/vendor/assets/src/medias/rubies/examples/class.rb +13 -0
- data/vendor/assets/src/medias/rubies/examples/depth.rb +6 -0
- data/vendor/assets/src/medias/rubies/examples/detached.rb +13 -0
- data/vendor/assets/src/medias/rubies/examples/matrix.rb +1 -1
- data/vendor/assets/src/medias/rubies/examples/opacity.rb +5 -0
- data/vendor/assets/src/medias/rubies/examples/over.rb +19 -0
- data/vendor/assets/src/medias/rubies/examples/read.rb +1 -0
- data/vendor/assets/src/medias/rubies/examples/text.rb +12 -11
- data/vendor/assets/src/medias/rubies/examples/time.rb +5 -1
- metadata +30 -10
- data/vendor/assets/src/medias/images/cache.svg +0 -10
- data/vendor/assets/src/medias/images/eyes.jpg +0 -0
- data/vendor/assets/src/medias/images/killer.jpg +0 -0
- data/vendor/assets/src/medias/images/logos/GitHub-Mark.eps +0 -7696
- data/vendor/assets/src/medias/images/poisson.jpg +0 -0
- data/vendor/assets/src/medias/images/sky.jpg +0 -0
@@ -1,10 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
generator.build_particle(:height)
|
7
|
-
generator.build_particle(:size) do |params|
|
3
|
+
new({particle: :width })
|
4
|
+
new({particle: :height })
|
5
|
+
new({particle: :size }) do |params|
|
8
6
|
atome_width = atome[:width]
|
9
7
|
atome_height = atome[:height]
|
10
8
|
aspect_ratio = atome_width / atome_height
|
@@ -16,3 +14,21 @@ generator.build_particle(:size) do |params|
|
|
16
14
|
height(params)
|
17
15
|
end
|
18
16
|
end
|
17
|
+
|
18
|
+
|
19
|
+
# generator = Genesis.generator
|
20
|
+
#
|
21
|
+
# generator.build_particle(:width)
|
22
|
+
# generator.build_particle(:height)
|
23
|
+
# generator.build_particle(:size) do |params|
|
24
|
+
# atome_width = atome[:width]
|
25
|
+
# atome_height = atome[:height]
|
26
|
+
# aspect_ratio = atome_width / atome_height
|
27
|
+
# if atome_width > atome_height
|
28
|
+
# width(params)
|
29
|
+
# height(params / aspect_ratio)
|
30
|
+
# else
|
31
|
+
# width(params * aspect_ratio)
|
32
|
+
# height(params)
|
33
|
+
# end
|
34
|
+
# end
|
@@ -1,40 +1,48 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
generator.build_particle(:children)
|
8
|
-
generator.build_option(:pre_render_parents) do |parents_ids|
|
9
|
-
parents_ids.each do |parents_id|
|
10
|
-
parents_id = parents_id.value if parents_id.instance_of? Atome
|
11
|
-
parents_found = grab(parents_id)
|
12
|
-
family(parents_id)
|
13
|
-
parents_found.atome[:children] << atome[:id]
|
3
|
+
new({ particle: :attached })
|
4
|
+
new({ sanitizer: :attached }) do |params|
|
5
|
+
unless params.instance_of? Array
|
6
|
+
params = [params]
|
14
7
|
end
|
8
|
+
params
|
15
9
|
end
|
16
|
-
|
17
|
-
generator.build_option(:pre_render_children) do |children_ids|
|
10
|
+
new({ pre: :attached }) do |children_ids|
|
18
11
|
children_ids.each do |child_id|
|
19
12
|
child_id = child_id.value if child_id.instance_of? Atome
|
20
13
|
child_found = grab(child_id)
|
21
|
-
parents_found
|
14
|
+
parents_found = @atome[:id]
|
22
15
|
child_found.family(parents_found)
|
16
|
+
# parents_found.atome[:attach] = [] unless parents_found.atome[:attach]
|
17
|
+
child_found.atome[:attach] = [parents_found]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
new({ particle: :type })
|
21
|
+
new({ particle: :children })
|
22
|
+
new({ pre: :children }) do |children_ids|
|
23
|
+
children_ids.each do |child_id|
|
24
|
+
child_id = child_id.value if child_id.instance_of? Atome
|
25
|
+
child_found = grab(child_id)
|
26
|
+
parents_found = @atome[:id]
|
27
|
+
# FIXME : broadcast may malfunction because of the commented line below,
|
28
|
+
# FIXME suite : if uncomment object hierreachy is broken (cf Vie Project)
|
29
|
+
# child_found.family(parents_found)
|
23
30
|
child_found.atome[:parents] = [parents_found]
|
24
31
|
end
|
25
32
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
33
|
+
new({ particle: :parents })
|
34
|
+
new({ pre: :parents }) do |parents_ids|
|
35
|
+
parents_ids.each do |parents_id|
|
36
|
+
parents_id = parents_id.value if parents_id.instance_of? Atome
|
37
|
+
parents_found = grab(parents_id)
|
38
|
+
family(parents_id)
|
39
|
+
parents_found.atome[:children] << atome[:id]
|
40
|
+
end
|
34
41
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
42
|
+
new({ particle: :family })
|
43
|
+
new({ particle: :link })
|
44
|
+
new({ particle: :id })
|
45
|
+
new({ sanitizer: :id }) do |params|
|
38
46
|
if @atome[:id] != params
|
39
47
|
Universe.update_atome_id(params, self, @atome[:id])
|
40
48
|
else
|
@@ -42,15 +50,10 @@ generator.build_sanitizer(:id) do |params|
|
|
42
50
|
end
|
43
51
|
params
|
44
52
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
generator.build_particle(:attach)
|
51
|
-
generator.build_particle(:attached)
|
52
|
-
|
53
|
-
generator.build_option(:pre_render_attach) do |parents_ids|
|
53
|
+
new({ particle: :name })
|
54
|
+
new({ particle: :active })
|
55
|
+
new({ particle: :attach })
|
56
|
+
new({ pre: :attach }) do |parents_ids|
|
54
57
|
parents_ids.each do |parents_id|
|
55
58
|
parents_id = parents_id.value if parents_id.instance_of? Atome
|
56
59
|
parents_found = grab(parents_id)
|
@@ -59,31 +62,81 @@ generator.build_option(:pre_render_attach) do |parents_ids|
|
|
59
62
|
parents_found.atome[:attached] << atome[:id]
|
60
63
|
end
|
61
64
|
end
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
# parents_found.atome[:attach] = [] unless parents_found.atome[:attach]
|
70
|
-
child_found.atome[:attach] = [parents_found]
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
generator.build_particle(:intricate, {type: :array })
|
75
|
-
|
76
|
-
|
77
|
-
generator.build_particle(:clones) do |clones_found|
|
78
|
-
clones_found.each_with_index do |clone_found, index|
|
79
|
-
particles_intricated= clone_found[:intricate] ||= []
|
80
|
-
clone_id="#{particles[:id]}_clone_#{index}"
|
81
|
-
original_id=atome[:id]
|
65
|
+
new({ particle: :detached })
|
66
|
+
new({ particle: :intricate, type: :array })
|
67
|
+
new({ particle: :clones }) do |clones_found|
|
68
|
+
clones_found.each_with_index do |clone_found, index|
|
69
|
+
particles_intricated = clone_found[:intricate] ||= []
|
70
|
+
clone_id = "#{particles[:id]}_clone_#{index}"
|
71
|
+
original_id = atome[:id]
|
82
72
|
clone_found[:id] = clone_id
|
83
73
|
clone_found = particles.merge(clone_found)
|
84
|
-
cloned_atome=Atome.new({ clone: clone_found })
|
85
|
-
cloned_atome.monitor({ atomes: [original_id], particles: particles_intricated}) do |_atome, particle, value|
|
86
|
-
cloned_atome.send(particle,value)
|
74
|
+
cloned_atome = Atome.new({ clone: clone_found })
|
75
|
+
cloned_atome.monitor({ atomes: [original_id], particles: particles_intricated }) do |_atome, particle, value|
|
76
|
+
cloned_atome.send(particle, value)
|
87
77
|
end
|
88
78
|
end
|
89
79
|
end
|
80
|
+
|
81
|
+
# generator = Genesis.generator
|
82
|
+
#
|
83
|
+
# generator.build_particle(:type)
|
84
|
+
# generator.build_particle(:parents)
|
85
|
+
# generator.build_particle(:children)
|
86
|
+
# generator.build_option(:pre_render_parents) do |parents_ids|
|
87
|
+
# parents_ids.each do |parents_id|
|
88
|
+
# parents_id = parents_id.value if parents_id.instance_of? Atome
|
89
|
+
# parents_found = grab(parents_id)
|
90
|
+
# family(parents_id)
|
91
|
+
# parents_found.atome[:children] << atome[:id]
|
92
|
+
# end
|
93
|
+
# end
|
94
|
+
# generator.build_option(:pre_render_children) do |children_ids|
|
95
|
+
# children_ids.each do |child_id|
|
96
|
+
# child_id = child_id.value if child_id.instance_of? Atome
|
97
|
+
# child_found = grab(child_id)
|
98
|
+
# parents_found = @atome[:id]
|
99
|
+
# # FIXME : broadcast may malfunction because of the commented line below,
|
100
|
+
# # FIXME suite : if uncomment object hierreachy is broken (cf Vie Project)
|
101
|
+
# # child_found.family(parents_found)
|
102
|
+
# child_found.atome[:parents] = [parents_found]
|
103
|
+
# end
|
104
|
+
# end
|
105
|
+
# generator.build_particle(:family, { render: true, store: false })
|
106
|
+
# generator.build_particle(:link) do |child_id|
|
107
|
+
# child_found = grab(child_id)
|
108
|
+
# child_found.atome[:parents] << @atome[:id]
|
109
|
+
# child_found.refresh
|
110
|
+
# end
|
111
|
+
# generator.build_particle(:id)
|
112
|
+
# generator.build_sanitizer(:id)
|
113
|
+
# generator.build_particle(:name)
|
114
|
+
# generator.build_particle(:active)
|
115
|
+
# generator.build_particle(:attach)
|
116
|
+
# generator.build_option(:pre_render_attach) do |parents_ids|
|
117
|
+
# parents_ids.each do |parents_id|
|
118
|
+
# parents_id = parents_id.value if parents_id.instance_of? Atome
|
119
|
+
# parents_found = grab(parents_id)
|
120
|
+
# family(parents_id)
|
121
|
+
# parents_found.atome[:attached] = [] unless parents_found.atome[:attached]
|
122
|
+
# parents_found.atome[:attached] << atome[:id]
|
123
|
+
# end
|
124
|
+
# end
|
125
|
+
#
|
126
|
+
# generator.build_particle(:detached) do |attach_to_remove|
|
127
|
+
# attached.value.delete(attach_to_remove)
|
128
|
+
# end
|
129
|
+
# generator.build_particle(:intricate, { type: :array })
|
130
|
+
# generator.build_particle(:clones) do |clones_found|
|
131
|
+
# clones_found.each_with_index do |clone_found, index|
|
132
|
+
# particles_intricated = clone_found[:intricate] ||= []
|
133
|
+
# clone_id = "#{particles[:id]}_clone_#{index}"
|
134
|
+
# original_id = atome[:id]
|
135
|
+
# clone_found[:id] = clone_id
|
136
|
+
# clone_found = particles.merge(clone_found)
|
137
|
+
# cloned_atome = Atome.new({ clone: clone_found })
|
138
|
+
# cloned_atome.monitor({ atomes: [original_id], particles: particles_intricated }) do |_atome, particle, value|
|
139
|
+
# cloned_atome.send(particle, value)
|
140
|
+
# end
|
141
|
+
# end
|
142
|
+
# end
|
@@ -1,39 +1,36 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
generator.build_particle(:red) do
|
3
|
+
new({ particle: :red }) do
|
6
4
|
# we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
7
5
|
self
|
8
6
|
end
|
9
|
-
|
7
|
+
new({ particle: :green }) do
|
10
8
|
# we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
11
9
|
self
|
12
10
|
end
|
13
|
-
|
11
|
+
new({ particle: :blue }) do
|
14
12
|
# we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
15
13
|
self
|
16
14
|
end
|
17
|
-
|
15
|
+
new({ particle: :alpha }) do
|
18
16
|
# we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
19
17
|
self
|
20
18
|
end
|
21
|
-
|
19
|
+
new({ particle: :diffusion }) do
|
22
20
|
# we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
23
21
|
self
|
24
22
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
new({ particle: :visual })
|
24
|
+
new({ particle: :overflow })
|
25
|
+
new({ particle: :edit })
|
26
|
+
new({ particle: :style })
|
27
|
+
new({ pre: :style }) do |styles_send, _user_proc|
|
30
28
|
styles_send.each do |particle_send, value|
|
31
29
|
send(particle_send, value)
|
32
30
|
end
|
33
31
|
end
|
34
|
-
|
35
|
-
|
36
|
-
generator.build_particle(:remove) do |particle_to_remove|
|
32
|
+
new({ particle: :hide })
|
33
|
+
new({ particle: :remove }) do |particle_to_remove|
|
37
34
|
case particle_to_remove
|
38
35
|
when :color
|
39
36
|
send(particle_to_remove, :black)
|
@@ -41,6 +38,67 @@ generator.build_particle(:remove) do |particle_to_remove|
|
|
41
38
|
# TODO : code to write
|
42
39
|
puts 'code to write'
|
43
40
|
else
|
44
|
-
|
41
|
+
particle_to_remove_decision(particle_to_remove)
|
45
42
|
end
|
46
43
|
end
|
44
|
+
new({ particle: :classes }) do |value|
|
45
|
+
Universe.classes[value] ||= []
|
46
|
+
Universe.classes[value] |= [id.value]
|
47
|
+
end
|
48
|
+
new({ particle: :remove_classes }) do |value|
|
49
|
+
# Universe.classes.delete(value)
|
50
|
+
Universe.classes[value].delete(id.value)
|
51
|
+
end
|
52
|
+
new ({particle: :opacity})
|
53
|
+
|
54
|
+
# generator = Genesis.generator
|
55
|
+
#
|
56
|
+
# generator.build_particle(:red) do
|
57
|
+
# # we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
58
|
+
# self
|
59
|
+
# end
|
60
|
+
# generator.build_particle(:green) do
|
61
|
+
# # we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
62
|
+
# self
|
63
|
+
# end
|
64
|
+
# generator.build_particle(:blue) do
|
65
|
+
# # we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
66
|
+
# self
|
67
|
+
# end
|
68
|
+
# generator.build_particle(:alpha) do
|
69
|
+
# # we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
70
|
+
# self
|
71
|
+
# end
|
72
|
+
# generator.build_particle(:diffusion) do
|
73
|
+
# # we return self to allow syntax of the type : a.color(:black).red(1).green(0.3)
|
74
|
+
# self
|
75
|
+
# end
|
76
|
+
# generator.build_particle(:visual)
|
77
|
+
# generator.build_particle(:overflow)
|
78
|
+
# generator.build_particle(:edit)
|
79
|
+
# generator.build_particle(:style)
|
80
|
+
# generator.build_option(:pre_render_style) do |styles_send, _user_proc|
|
81
|
+
# styles_send.each do |particle_send, value|
|
82
|
+
# send(particle_send, value)
|
83
|
+
# end
|
84
|
+
# end
|
85
|
+
# generator.build_particle(:hide)
|
86
|
+
# generator.build_particle(:remove) do |particle_to_remove|
|
87
|
+
# case particle_to_remove
|
88
|
+
# when :color
|
89
|
+
# send(particle_to_remove, :black)
|
90
|
+
# when :shadow
|
91
|
+
# # TODO : code to write
|
92
|
+
# puts 'code to write'
|
93
|
+
# else
|
94
|
+
# particle_to_remove_decision(particle_to_remove)
|
95
|
+
# end
|
96
|
+
# end
|
97
|
+
# generator.build_particle(:classes) do |value|
|
98
|
+
# Universe.classes[value] ||= []
|
99
|
+
# Universe.classes[value] |= [id.value]
|
100
|
+
# end
|
101
|
+
# generator.build_particle(:remove_classes) do |value|
|
102
|
+
# # Universe.classes.delete(value)
|
103
|
+
# Universe.classes[value].delete(id.value)
|
104
|
+
# end
|
@@ -1,14 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
# create particles
|
5
|
-
generator.build_particle(:left) do |_params, user_proc|
|
3
|
+
new({ particle: :left }) do |_params, user_proc|
|
6
4
|
instance_exec(&user_proc) if user_proc.is_a?(Proc)
|
7
5
|
end
|
6
|
+
new({ particle: :right })
|
7
|
+
new({ particle: :top })
|
8
|
+
new({ particle: :bottom })
|
9
|
+
new({ particle: :rotate })
|
10
|
+
new({ particle: :direction })
|
11
|
+
new({ particle: :center })
|
12
|
+
new ({particle: :depth})
|
8
13
|
|
9
|
-
generator.build_particle(:right)
|
10
|
-
generator.build_particle(:top)
|
11
|
-
generator.build_particle(:bottom)
|
12
|
-
generator.build_particle(:rotate)
|
13
|
-
generator.build_particle(:direction)
|
14
|
-
generator.build_particle(:center)
|
@@ -1,36 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
generator = Genesis.generator
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
new({particle: :renderers })
|
5
|
+
new({particle: :code })
|
6
|
+
new({particle: :run }) do |params|
|
8
7
|
code_found = @atome[:code]
|
9
8
|
instance_exec(params, &code_found) if code_found.is_a?(Proc)
|
10
9
|
end
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
# if params == true
|
16
|
-
# # the machine delete the current atome
|
17
|
-
# Universe.delete(@atome[:id])
|
18
|
-
# elsif params[:id]
|
19
|
-
# # the machine try to an atome by it's ID and delete it
|
20
|
-
# grab(params[:id]).delete(true)
|
21
|
-
# elsif instance_of? Hash
|
22
|
-
# # the machine try to find the sub particle id and remove it eg a.delete(monitor: :my_monitor) remove the monitor
|
23
|
-
# # with id my_monitor
|
24
|
-
# params.each do |param, value|
|
25
|
-
# atome[param][value] = nil
|
26
|
-
# end
|
27
|
-
# else
|
28
|
-
# # the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
|
29
|
-
# send(params,0)
|
30
|
-
# end
|
31
|
-
# end
|
32
|
-
|
33
|
-
generator.build_particle(:delete) do |params|
|
10
|
+
new({particle: :broadcast })
|
11
|
+
new({particle: :data })
|
12
|
+
new({particle: :additional })
|
13
|
+
new({particle: :delete }) do |params|
|
34
14
|
if params == true
|
35
15
|
# the machine delete the current atome
|
36
16
|
Universe.delete(@atome[:id])
|
@@ -44,14 +24,13 @@ generator.build_particle(:delete) do |params|
|
|
44
24
|
atome[param][value] = nil
|
45
25
|
end
|
46
26
|
else
|
47
|
-
#
|
48
|
-
send(params,0)
|
27
|
+
# the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
|
28
|
+
send(params, 0)
|
49
29
|
end
|
50
30
|
end
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
generator.build_particle(:schedule) do |date, proc|
|
31
|
+
new({particle: :clear })
|
32
|
+
new({particle: :path })
|
33
|
+
new({particle: :schedule }) do |date, proc|
|
55
34
|
date = date.to_s
|
56
35
|
delimiters = [',', ' ', ':', '-']
|
57
36
|
format_date = date.split(Regexp.union(delimiters))
|
@@ -59,15 +38,63 @@ generator.build_particle(:schedule) do |date, proc|
|
|
59
38
|
send("#{renderer}_schedule", format_date, &proc)
|
60
39
|
end
|
61
40
|
end
|
62
|
-
|
41
|
+
new({particle: :read }) do |file, proc|
|
63
42
|
Universe.renderer_list.each do |renderer|
|
64
43
|
send("#{renderer}_reader", file, &proc)
|
65
44
|
end
|
66
45
|
end
|
46
|
+
new({particle: :cursor })
|
47
|
+
new({particle: :preset })
|
48
|
+
new({particle: :relations,type: :hash })
|
67
49
|
|
68
|
-
generator.build_particle(:cursor)
|
69
|
-
|
70
|
-
generator.build_particle(:preset)
|
71
|
-
|
72
|
-
generator.build_particle(:relations, { type: :hash })
|
73
50
|
|
51
|
+
# generator = Genesis.generator
|
52
|
+
#
|
53
|
+
#
|
54
|
+
#
|
55
|
+
#
|
56
|
+
# generator.build_particle(:renderers)
|
57
|
+
# generator.build_particle(:code)
|
58
|
+
# generator.build_particle(:run) do |params|
|
59
|
+
# code_found = @atome[:code]
|
60
|
+
# instance_exec(params, &code_found) if code_found.is_a?(Proc)
|
61
|
+
# end
|
62
|
+
# generator.build_particle(:broadcast)
|
63
|
+
# generator.build_particle(:additional)
|
64
|
+
# generator.build_particle(:data)
|
65
|
+
# generator.build_particle(:delete) do |params|
|
66
|
+
# if params == true
|
67
|
+
# # the machine delete the current atome
|
68
|
+
# Universe.delete(@atome[:id])
|
69
|
+
# elsif params[:id]
|
70
|
+
# # the machine try to an atome by it's ID and delete it
|
71
|
+
# grab(params[:id]).delete(true)
|
72
|
+
# elsif params.instance_of? Hash
|
73
|
+
# # the machine try to find the sub particle id and remove it eg a.delete(monitor: :my_monitor) remove the monitor
|
74
|
+
# # with id my_monitor
|
75
|
+
# params.each do |param, value|
|
76
|
+
# atome[param][value] = nil
|
77
|
+
# end
|
78
|
+
# else
|
79
|
+
# # the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
|
80
|
+
# send(params, 0)
|
81
|
+
# end
|
82
|
+
# end
|
83
|
+
# generator.build_particle(:clear)
|
84
|
+
# generator.build_particle(:path)
|
85
|
+
# generator.build_particle(:schedule) do |date, proc|
|
86
|
+
# date = date.to_s
|
87
|
+
# delimiters = [',', ' ', ':', '-']
|
88
|
+
# format_date = date.split(Regexp.union(delimiters))
|
89
|
+
# Universe.renderer_list.each do |renderer|
|
90
|
+
# send("#{renderer}_schedule", format_date, &proc)
|
91
|
+
# end
|
92
|
+
# end
|
93
|
+
# generator.build_particle(:read) do |file, proc|
|
94
|
+
# Universe.renderer_list.each do |renderer|
|
95
|
+
# send("#{renderer}_reader", file, &proc)
|
96
|
+
# end
|
97
|
+
# end
|
98
|
+
# generator.build_particle(:cursor)
|
99
|
+
# generator.build_particle(:preset)
|
100
|
+
# generator.build_particle(:relations, { type: :hash })
|
@@ -11,7 +11,7 @@ end
|
|
11
11
|
|
12
12
|
# Genesis method here
|
13
13
|
class Atome
|
14
|
-
def build_particle(particle_name,options={}
|
14
|
+
def build_particle(particle_name, options = {}, &particle_proc)
|
15
15
|
type = options[:type]
|
16
16
|
type = :string if options[:type].nil?
|
17
17
|
store = options[:store]
|
@@ -21,15 +21,17 @@ class Atome
|
|
21
21
|
|
22
22
|
# we add the new method to the particle's collection of methods
|
23
23
|
Universe.add_to_particle_list(particle_name, type)
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
# the line below create an empty particle method for each renderer, eg: browser_left, headless_left, ...
|
25
|
+
auto_render_generator(particle_name) if render
|
26
|
+
new_particle(particle_name, store, render, &particle_proc)
|
27
|
+
# the line below create all alternatives methods such as create 'method='
|
28
|
+
additional_particle_methods(particle_name, store, render, &particle_proc)
|
27
29
|
end
|
28
30
|
|
29
|
-
|
30
31
|
def build_atome(atome_name, &atome_proc)
|
31
32
|
# we add the new method to the atome's collection of methods
|
32
33
|
Universe.add_to_atome_list(atome_name)
|
34
|
+
# the line below create an empty atome method for each renderer, eg: browser_left, headless_left, ...
|
33
35
|
auto_render_generator(atome_name)
|
34
36
|
new_atome(atome_name, &atome_proc)
|
35
37
|
end
|
@@ -38,7 +38,7 @@ Atome.new(
|
|
38
38
|
# color creation
|
39
39
|
Atome.new(
|
40
40
|
{ color: { renderers: default_render, id: :view_color, type: :color,
|
41
|
-
red:
|
41
|
+
red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } }
|
42
42
|
)
|
43
43
|
|
44
44
|
Atome.new(
|
@@ -66,7 +66,13 @@ Atome.new(
|
|
66
66
|
left: 0, top: 0, red: 0.7, green: 0.7, blue: 0.7, alpha: 1, diffusion: :linear } }
|
67
67
|
)
|
68
68
|
|
69
|
-
#
|
69
|
+
# system object creation
|
70
|
+
# the black_matter is used to store un materialized atomes
|
71
|
+
Atome.new(
|
72
|
+
{ shape: { renderers: default_render, id: :black_matter, type: :shape, parents: [:user_view], children: [],
|
73
|
+
left: 0, right: 0, top: 0, bottom: 0, width: 0, height: 0, overflow: :hidden
|
74
|
+
} })
|
75
|
+
# view port
|
70
76
|
Atome.new(
|
71
77
|
{ shape: { renderers: default_render, id: :view, type: :shape, parents: [:user_view], children: [],
|
72
78
|
attached: [:view_color], left: 0, right: 0, top: 0, bottom: 0, width: :auto, height: :auto, overflow: :auto
|
@@ -4,27 +4,23 @@
|
|
4
4
|
module Essentials
|
5
5
|
@default_params = {
|
6
6
|
render_engines: [:browser],
|
7
|
+
collector: { type: :element, renderers: [], children: [] },
|
7
8
|
animation: { type: :animation, children: [] },
|
8
9
|
element: { type: :element, renderers: [], children: [] },
|
9
10
|
matrix: { renderers: [], id: '', type: :shape, parents: [], width: 99, height: 99,
|
10
11
|
attached: [:matrix_color], children: [],
|
11
|
-
# color: { left: 0, top: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
12
12
|
left: 100, top: 100, clones: [], preset: :matrix },
|
13
13
|
box: { renderers: [], id: '', type: :shape, parents: [], width: 99, height: 99,
|
14
14
|
attached: [:box_color], children: [],
|
15
|
-
# color: { left: 0, top: 0, red: 1, green: 0.3, blue: 0.3, alpha: 1, diffusion: :linear },
|
16
15
|
left: 100, top: 100, clones: [], preset: :box },
|
17
16
|
circle: { renderers: [], id: '', type: :shape, parents: [], width: 99, height: 99, smooth: '100%',
|
18
|
-
# color: { left: 0, top: 0, red: 0.3, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
19
17
|
attached: [:circle_color], children: [],
|
20
18
|
left: 100, top: 100, clones: [], preset: :circle },
|
21
19
|
shape: { renderers: [], id: '', type: :shape, parents: [], width: 99, height: 99,
|
22
|
-
attached: [:
|
23
|
-
# color: { left: 0, top: 0, red: 0.6, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
20
|
+
attached: [:shape_color], children: [],
|
24
21
|
left: 100, top: 100, clones: [] },
|
25
22
|
text: { renderers: [], id: '', type: :text, parents: [:view], visual: { size: 25 },
|
26
23
|
attached: [:text_color], children: [],
|
27
|
-
# color: { left: 0, top: 0, red: 0.3, green: 0.3, blue: 0.3, alpha: 1, diffusion: :linear },
|
28
24
|
data: 'this is a text sample', width: 199, height: 33, clones: [] },
|
29
25
|
drm: { type: :drm },
|
30
26
|
shadow: {},
|
@@ -133,10 +133,25 @@ class Atome
|
|
133
133
|
end
|
134
134
|
|
135
135
|
end
|
136
|
+
def []=(params, value)
|
137
|
+
# TODO : it may miss some code, see above
|
138
|
+
self.value[params] = value
|
139
|
+
end
|
136
140
|
|
137
141
|
def set(params)
|
138
142
|
params.each do |particle, value|
|
139
143
|
send(particle, value)
|
140
144
|
end
|
141
145
|
end
|
146
|
+
|
147
|
+
def particle_to_remove_decision(particle_to_remove)
|
148
|
+
if particle_to_remove.instance_of? Hash
|
149
|
+
particle_to_remove.each do |particle_found, value|
|
150
|
+
send("remove_#{particle_found}", value)
|
151
|
+
end
|
152
|
+
else
|
153
|
+
send(particle_to_remove, 0)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
142
157
|
end
|
@@ -3,14 +3,14 @@
|
|
3
3
|
# universe method here
|
4
4
|
class Universe
|
5
5
|
@atomes = {}
|
6
|
+
@classes = {}
|
6
7
|
@atome_list = []
|
7
8
|
@particle_list = {}
|
8
9
|
@renderer_list = %i[html browser headless server]
|
9
10
|
@options = {}
|
10
11
|
@sanitizers = {}
|
11
|
-
|
12
12
|
class << self
|
13
|
-
attr_reader :atomes, :renderer_list, :atome_list, :particle_list
|
13
|
+
attr_reader :atomes, :renderer_list, :atome_list, :particle_list, :classes
|
14
14
|
|
15
15
|
def add_to_particle_list(particle = nil, type)
|
16
16
|
instance_variable_get('@particle_list')[particle]=type
|