atome 0.5.3.4 → 0.5.3.7.2

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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +8 -3
  3. data/app_builder_helpers/Rakefile +9 -3
  4. data/exe/atome +6 -19
  5. data/lib/atome/atome.rb +29 -19
  6. data/lib/atome/extensions/atome.rb +23 -1
  7. data/lib/atome/extensions/matrix.rb +10 -5
  8. data/lib/atome/genesis/generators/atome.rb +149 -22
  9. data/lib/atome/genesis/generators/effect.rb +8 -3
  10. data/lib/atome/genesis/generators/event.rb +77 -34
  11. data/lib/atome/genesis/generators/geometry.rb +21 -5
  12. data/lib/atome/genesis/generators/identity.rb +110 -57
  13. data/lib/atome/genesis/generators/material.rb +74 -16
  14. data/lib/atome/genesis/generators/spatial.rb +8 -9
  15. data/lib/atome/genesis/generators/time.rb +1 -1
  16. data/lib/atome/genesis/generators/utility.rb +66 -39
  17. data/lib/atome/genesis/genesis.rb +7 -5
  18. data/lib/atome/genesis/sparkle.rb +8 -2
  19. data/lib/atome/helpers/essentials.rb +2 -6
  20. data/lib/atome/helpers/utilities.rb +15 -0
  21. data/lib/atome/kernel/universe.rb +2 -2
  22. data/lib/atome/presets/atome.rb +60 -61
  23. data/lib/atome/renderers/browser/event.rb +6 -3
  24. data/lib/atome/renderers/browser/geometry.rb +18 -10
  25. data/lib/atome/renderers/browser/helpers/browser_helper.rb +9 -0
  26. data/lib/atome/renderers/browser/helpers/color_helper.rb +4 -4
  27. data/lib/atome/renderers/browser/helpers/event_helper.rb +24 -12
  28. data/lib/atome/renderers/browser/helpers/shape_helper.rb +4 -4
  29. data/lib/atome/renderers/browser/helpers/text_helper.rb +4 -4
  30. data/lib/atome/renderers/browser/helpers/video_helper.rb +1 -1
  31. data/lib/atome/renderers/browser/helpers/web_helper.rb +4 -4
  32. data/lib/atome/renderers/browser/identity.rb +4 -0
  33. data/lib/atome/renderers/browser/material.rb +20 -1
  34. data/lib/atome/renderers/browser/spatial.rb +4 -0
  35. data/lib/atome/version.rb +1 -1
  36. data/sig/atome.rbs +12 -0
  37. data/sig/genesis.rbs +3 -0
  38. data/vendor/assets/application/index.rb +2 -0
  39. data/vendor/assets/src/index.html +1 -1
  40. data/vendor/assets/src/js/atome/atome.js +2 -1
  41. data/vendor/assets/src/medias/images/icons/email.svg +13 -0
  42. data/vendor/assets/src/medias/images/icons/mail_gray.svg +6 -0
  43. data/vendor/assets/src/medias/images/icons/mail_green.svg +6 -0
  44. data/vendor/assets/src/medias/images/icons/mail_orange.svg +6 -0
  45. data/vendor/assets/src/medias/images/icons/undo.svg +4 -0
  46. data/vendor/assets/src/medias/images/logos/Orange/Facebook.svg +8 -0
  47. data/vendor/assets/src/medias/images/logos/Orange/TikTok.svg +11 -0
  48. data/vendor/assets/src/medias/images/logos/Orange/Twitter.svg +8 -0
  49. data/vendor/assets/src/medias/images/logos/Orange/instagram.svg +8 -0
  50. data/vendor/assets/src/medias/images/logos/Orange/vimeo.svg +8 -0
  51. data/vendor/assets/src/medias/images/logos/Orange/youtube.svg +7 -0
  52. data/vendor/assets/src/medias/images/logos/gray/Facebook.svg +8 -0
  53. data/vendor/assets/src/medias/images/logos/gray/TikTok.svg +11 -0
  54. data/vendor/assets/src/medias/images/logos/gray/Twitter.svg +8 -0
  55. data/vendor/assets/src/medias/images/logos/gray/instagram.svg +8 -0
  56. data/vendor/assets/src/medias/images/logos/gray/vimeo.svg +8 -0
  57. data/vendor/assets/src/medias/images/logos/gray/youtube.svg +7 -0
  58. data/vendor/assets/src/medias/images/logos/gray/youtube2.svg +13 -0
  59. data/vendor/assets/src/medias/images/logos/vimeo.svg +17 -0
  60. data/vendor/assets/src/medias/rubies/examples/_table2.rb +106 -36
  61. data/vendor/assets/src/medias/rubies/examples/add.rb +1 -3
  62. data/vendor/assets/src/medias/rubies/examples/attached.rb +16 -0
  63. data/vendor/assets/src/medias/rubies/examples/class.rb +13 -0
  64. data/vendor/assets/src/medias/rubies/examples/depth.rb +6 -0
  65. data/vendor/assets/src/medias/rubies/examples/detached.rb +13 -0
  66. data/vendor/assets/src/medias/rubies/examples/matrix.rb +1 -1
  67. data/vendor/assets/src/medias/rubies/examples/opacity.rb +5 -0
  68. data/vendor/assets/src/medias/rubies/examples/over.rb +19 -0
  69. data/vendor/assets/src/medias/rubies/examples/read.rb +1 -0
  70. data/vendor/assets/src/medias/rubies/examples/text.rb +12 -11
  71. data/vendor/assets/src/medias/rubies/examples/time.rb +5 -1
  72. metadata +30 -10
  73. data/vendor/assets/src/medias/images/cache.svg +0 -10
  74. data/vendor/assets/src/medias/images/eyes.jpg +0 -0
  75. data/vendor/assets/src/medias/images/killer.jpg +0 -0
  76. data/vendor/assets/src/medias/images/logos/GitHub-Mark.eps +0 -7696
  77. data/vendor/assets/src/medias/images/poisson.jpg +0 -0
  78. data/vendor/assets/src/medias/images/sky.jpg +0 -0
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- generator = Genesis.generator
4
-
5
- generator.build_particle(:width)
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
- generator = Genesis.generator
4
-
5
- generator.build_particle(:type)
6
- generator.build_particle(:parents)
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=@atome[:id]
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
- generator.build_particle(:family,{render: true,store: false})
28
-
29
-
30
- generator.build_particle(:link) do |child_id|
31
- child_found = grab(child_id)
32
- child_found.atome[:parents] << @atome[:id]
33
- child_found.refresh
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
- generator.build_particle(:id)
37
- generator.build_sanitizer(:id) do |params|
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
- generator.build_particle(:name)
47
-
48
- generator.build_particle(:active)
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
- generator.build_option(:pre_render_attached) do |children_ids|
64
- children_ids.each do |child_id|
65
- child_id = child_id.value if child_id.instance_of? Atome
66
- child_found = grab(child_id)
67
- parents_found=@atome[:id]
68
- child_found.family(parents_found)
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
- generator = Genesis.generator
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
- generator.build_particle(:green) do
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
- generator.build_particle(:blue) do
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
- generator.build_particle(:alpha) do
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
- generator.build_particle(:diffusion) do
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
- generator.build_particle(:visual)
26
- generator.build_particle(:overflow)
27
- generator.build_particle(:edit)
28
- generator.build_particle(:style)
29
- generator.build_option(:pre_render_style) do |styles_send, _user_proc|
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
- generator.build_particle(:hide)
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
- send(particle_to_remove, 0)
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
- generator = Genesis.generator
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)
@@ -2,4 +2,4 @@
2
2
 
3
3
  generator = Genesis.generator
4
4
  # create particles
5
- generator.build_particle(:markers, { type: :hash })
5
+ new({ particle: :markers, type: :hash })
@@ -1,36 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- generator = Genesis.generator
4
3
 
5
- generator.build_particle(:renderers)
6
- generator.build_particle(:code)
7
- generator.build_particle(:run) do |params|
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
- generator.build_particle(:broadcast)
12
- generator.build_particle(:additional)
13
- generator.build_particle(:data)
14
- # generator.build_particle(:delete) do |params|
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
- # # the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
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
- generator.build_particle(:clear)
53
- generator.build_particle(:path)
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
- generator.build_particle(:read) do |file, proc|
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={},&particle_proc)
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
- auto_render_generator(particle_name) if render # automatise the creation of an empty render method for current particle
25
- new_particle(particle_name,store,render , &particle_proc)
26
- additional_particle_methods(particle_name, store,render ,&particle_proc) # create alternative methods such as create 'method='
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: 0.15, green: 0.15, blue: 0.15, alpha: 1 } }
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
- # view creation
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: [:view_color], children: [],
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