atome 0.5.3.4 → 0.5.3.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +8 -3
  3. data/app_builder_helpers/Rakefile +8 -2
  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/freebsd.svg +8 -0
  53. data/vendor/assets/src/medias/images/logos/gray/Facebook.svg +8 -0
  54. data/vendor/assets/src/medias/images/logos/gray/TikTok.svg +11 -0
  55. data/vendor/assets/src/medias/images/logos/gray/Twitter.svg +8 -0
  56. data/vendor/assets/src/medias/images/logos/gray/instagram.svg +8 -0
  57. data/vendor/assets/src/medias/images/logos/gray/vimeo.svg +8 -0
  58. data/vendor/assets/src/medias/images/logos/gray/youtube.svg +7 -0
  59. data/vendor/assets/src/medias/images/logos/gray/youtube2.svg +13 -0
  60. data/vendor/assets/src/medias/images/logos/vimeo.svg +17 -0
  61. data/vendor/assets/src/medias/rubies/examples/_table2.rb +106 -36
  62. data/vendor/assets/src/medias/rubies/examples/add.rb +1 -3
  63. data/vendor/assets/src/medias/rubies/examples/attached.rb +16 -0
  64. data/vendor/assets/src/medias/rubies/examples/class.rb +13 -0
  65. data/vendor/assets/src/medias/rubies/examples/depth.rb +6 -0
  66. data/vendor/assets/src/medias/rubies/examples/detached.rb +13 -0
  67. data/vendor/assets/src/medias/rubies/examples/matrix.rb +1 -1
  68. data/vendor/assets/src/medias/rubies/examples/opacity.rb +5 -0
  69. data/vendor/assets/src/medias/rubies/examples/over.rb +19 -0
  70. data/vendor/assets/src/medias/rubies/examples/read.rb +1 -0
  71. data/vendor/assets/src/medias/rubies/examples/text.rb +12 -11
  72. data/vendor/assets/src/medias/rubies/examples/time.rb +5 -1
  73. metadata +31 -81
  74. data/vendor/assets/src/medias/audios/Binrpilot.mp3 +0 -0
  75. data/vendor/assets/src/medias/fonts/Dancing_Script/DancingScript-VariableFont_wght.ttf +0 -0
  76. data/vendor/assets/src/medias/fonts/Dancing_Script/OFL.txt +0 -93
  77. data/vendor/assets/src/medias/fonts/Dancing_Script/README.txt +0 -66
  78. data/vendor/assets/src/medias/fonts/Dancing_Script/static/DancingScript-Bold.ttf +0 -0
  79. data/vendor/assets/src/medias/fonts/Dancing_Script/static/DancingScript-Medium.ttf +0 -0
  80. data/vendor/assets/src/medias/fonts/Dancing_Script/static/DancingScript-Regular.ttf +0 -0
  81. data/vendor/assets/src/medias/fonts/Dancing_Script/static/DancingScript-SemiBold.ttf +0 -0
  82. data/vendor/assets/src/medias/fonts/Mate_SC/MateSC-Regular.ttf +0 -0
  83. data/vendor/assets/src/medias/fonts/Mate_SC/OFL.txt +0 -94
  84. data/vendor/assets/src/medias/fonts/Raleway/OFL.txt +0 -93
  85. data/vendor/assets/src/medias/fonts/Raleway/README.txt +0 -81
  86. data/vendor/assets/src/medias/fonts/Raleway/Raleway-Italic-VariableFont_wght.ttf +0 -0
  87. data/vendor/assets/src/medias/fonts/Raleway/Raleway-VariableFont_wght.ttf +0 -0
  88. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Black.ttf +0 -0
  89. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-BlackItalic.ttf +0 -0
  90. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Bold.ttf +0 -0
  91. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-BoldItalic.ttf +0 -0
  92. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-ExtraBold.ttf +0 -0
  93. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-ExtraBoldItalic.ttf +0 -0
  94. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-ExtraLight.ttf +0 -0
  95. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-ExtraLightItalic.ttf +0 -0
  96. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Italic.ttf +0 -0
  97. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Light.ttf +0 -0
  98. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-LightItalic.ttf +0 -0
  99. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Medium.ttf +0 -0
  100. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-MediumItalic.ttf +0 -0
  101. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Regular.ttf +0 -0
  102. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-SemiBold.ttf +0 -0
  103. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-SemiBoldItalic.ttf +0 -0
  104. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-Thin.ttf +0 -0
  105. data/vendor/assets/src/medias/fonts/Raleway/static/Raleway-ThinItalic.ttf +0 -0
  106. data/vendor/assets/src/medias/fonts/Vollkorn/OFL.txt +0 -93
  107. data/vendor/assets/src/medias/fonts/Vollkorn/README.txt +0 -75
  108. data/vendor/assets/src/medias/fonts/Vollkorn/Vollkorn-Italic-VariableFont_wght.ttf +0 -0
  109. data/vendor/assets/src/medias/fonts/Vollkorn/Vollkorn-VariableFont_wght.ttf +0 -0
  110. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-Black.ttf +0 -0
  111. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-BlackItalic.ttf +0 -0
  112. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-Bold.ttf +0 -0
  113. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-BoldItalic.ttf +0 -0
  114. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-ExtraBold.ttf +0 -0
  115. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-ExtraBoldItalic.ttf +0 -0
  116. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-Italic.ttf +0 -0
  117. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-Medium.ttf +0 -0
  118. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-MediumItalic.ttf +0 -0
  119. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-Regular.ttf +0 -0
  120. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-SemiBold.ttf +0 -0
  121. data/vendor/assets/src/medias/fonts/Vollkorn/static/Vollkorn-SemiBoldItalic.ttf +0 -0
  122. data/vendor/assets/src/medias/images/Icon_Help.png +0 -0
  123. data/vendor/assets/src/medias/images/avion.jpg +0 -0
  124. data/vendor/assets/src/medias/images/boat.png +0 -0
  125. data/vendor/assets/src/medias/images/cache.svg +0 -10
  126. data/vendor/assets/src/medias/images/dices.png +0 -0
  127. data/vendor/assets/src/medias/images/eVe_back.png +0 -0
  128. data/vendor/assets/src/medias/images/elephant.png +0 -0
  129. data/vendor/assets/src/medias/images/eyes.jpg +0 -0
  130. data/vendor/assets/src/medias/images/freebsd.png +0 -0
  131. data/vendor/assets/src/medias/images/grain_texture.png +0 -0
  132. data/vendor/assets/src/medias/images/green_planet.png +0 -0
  133. data/vendor/assets/src/medias/images/image_missing.svg +0 -9
  134. data/vendor/assets/src/medias/images/jeezs.png +0 -0
  135. data/vendor/assets/src/medias/images/keyboard.png +0 -0
  136. data/vendor/assets/src/medias/images/killer.jpg +0 -0
  137. data/vendor/assets/src/medias/images/living_room.png +0 -0
  138. data/vendor/assets/src/medias/images/logo.svg +0 -14
  139. data/vendor/assets/src/medias/images/logos/GitHub-Mark.eps +0 -7696
  140. data/vendor/assets/src/medias/images/moto.png +0 -0
  141. data/vendor/assets/src/medias/images/piano.png +0 -0
  142. data/vendor/assets/src/medias/images/poisson.jpg +0 -0
  143. data/vendor/assets/src/medias/images/sky.jpg +0 -0
  144. data/vendor/assets/src/medias/images/the_mask.svg +0 -8
  145. data/vendor/assets/src/medias/images/tile_black.png +0 -0
  146. data/vendor/assets/src/medias/images/tile_white.png +0 -0
  147. data/vendor/assets/src/medias/videos/avengers.mp4 +0 -0
  148. data/vendor/assets/src/medias/videos/madmax.mp4 +0 -0
  149. data/vendor/assets/src/medias/videos/starwars.mov +0 -0
  150. data/vendor/assets/src/medias/videos/superman.mp4 +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