atome 0.5.3.8.1 → 0.5.4.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +52 -17
  3. data/app_builder_helpers/Rakefile +20 -3
  4. data/exe/atome +33 -1
  5. data/lib/atome/atome.rb +64 -75
  6. data/lib/atome/extensions/atome.rb +82 -52
  7. data/lib/atome/extensions/mathematic.rb +8 -12
  8. data/lib/atome/extensions/matrix.rb +141 -202
  9. data/lib/atome/genesis/generators/atome.rb +13 -96
  10. data/lib/atome/genesis/generators/communication.rb +0 -1
  11. data/lib/atome/genesis/generators/effect.rb +0 -6
  12. data/lib/atome/genesis/generators/event.rb +64 -77
  13. data/lib/atome/genesis/generators/geometry.rb +0 -18
  14. data/lib/atome/genesis/generators/identity.rb +56 -52
  15. data/lib/atome/genesis/generators/material.rb +3 -54
  16. data/lib/atome/genesis/generators/spatial.rb +8 -8
  17. data/lib/atome/genesis/generators/utility.rb +82 -68
  18. data/lib/atome/genesis/genesis.rb +15 -4
  19. data/lib/atome/genesis/sparkle.rb +38 -19
  20. data/lib/atome/helpers/callbacks.rb +47 -1
  21. data/lib/atome/helpers/essentials.rb +21 -18
  22. data/lib/atome/helpers/sanitizer.rb +0 -10
  23. data/lib/atome/helpers/utilities.rb +143 -45
  24. data/lib/atome/kernel/batch.rb +13 -36
  25. data/lib/atome/kernel/universe.rb +3 -1
  26. data/lib/atome/presets/atome.rb +14 -23
  27. data/lib/atome/renderers/browser/atome.rb +2 -1
  28. data/lib/atome/renderers/browser/browser.rb +2 -0
  29. data/lib/atome/renderers/browser/event.rb +18 -0
  30. data/lib/atome/renderers/browser/helpers/browser_helper.rb +17 -0
  31. data/lib/atome/renderers/browser/helpers/drag_helper.rb +13 -0
  32. data/lib/atome/renderers/browser/helpers/drop_helper.rb +13 -0
  33. data/lib/atome/renderers/browser/helpers/event_helper.rb +16 -11
  34. data/lib/atome/renderers/browser/helpers/over_helper.rb +13 -0
  35. data/lib/atome/renderers/browser/helpers/text_helper.rb +14 -2
  36. data/lib/atome/renderers/browser/identity.rb +23 -5
  37. data/lib/atome/renderers/browser/spatial.rb +3 -2
  38. data/lib/atome/renderers/browser/utility.rb +7 -6
  39. data/lib/atome/renderers/renderer.rb +1 -0
  40. data/lib/atome/version.rb +2 -2
  41. data/lib/atome.rb +1 -0
  42. data/sig/atome.rbs +36 -0
  43. data/sig/batch.rbs +7 -0
  44. data/sig/browser_helper.rbs +14 -0
  45. data/sig/essentials.rbs +11 -0
  46. data/sig/matrix.rbs +5 -0
  47. data/sig/object.rbs +3 -0
  48. data/vendor/assets/aui.rb +5 -0
  49. data/vendor/assets/src/index.html +15 -3
  50. data/vendor/assets/src/js/atome/atome.js +1 -1
  51. data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +1 -1
  52. data/vendor/assets/src/js/atome/atome_helpers/atome_communication.js +40 -0
  53. data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +40 -3
  54. data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +12 -0
  55. data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +166 -0
  56. data/vendor/assets/src/js/atome/atome_helpers/atome_file.js +6 -1
  57. data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +43 -0
  58. data/vendor/assets/src/medias/images/icons/email.svg +12 -12
  59. data/vendor/assets/src/medias/rubies/demos.rb +63 -0
  60. data/vendor/assets/src/medias/rubies/examples/add.rb +3 -4
  61. data/vendor/assets/src/medias/rubies/examples/animation.rb +2 -2
  62. data/vendor/assets/src/medias/rubies/examples/atome_new.rb +18 -6
  63. data/vendor/assets/src/medias/rubies/examples/attach.rb +15 -0
  64. data/vendor/assets/src/medias/rubies/examples/attached.rb +5 -6
  65. data/vendor/assets/src/medias/rubies/examples/batch.rb +17 -0
  66. data/vendor/assets/src/medias/rubies/examples/blur.rb +2 -2
  67. data/vendor/assets/src/medias/rubies/examples/box.rb +2 -2
  68. data/vendor/assets/src/medias/rubies/examples/code.rb +1 -1
  69. data/vendor/assets/src/medias/rubies/examples/color.rb +20 -4
  70. data/vendor/assets/src/medias/rubies/examples/delete.rb +18 -2
  71. data/vendor/assets/src/medias/rubies/examples/detached.rb +3 -3
  72. data/vendor/assets/src/medias/rubies/examples/drag.rb +53 -2
  73. data/vendor/assets/src/medias/rubies/examples/drop.rb +26 -0
  74. data/vendor/assets/src/medias/rubies/examples/fullscreen.rb +2 -2
  75. data/vendor/assets/src/medias/rubies/examples/image.rb +2 -2
  76. data/vendor/assets/src/medias/rubies/examples/link.rb +7 -5
  77. data/vendor/assets/src/medias/rubies/examples/markers.rb +2 -2
  78. data/vendor/assets/src/medias/rubies/examples/materials.rb +15 -0
  79. data/vendor/assets/src/medias/rubies/examples/matrix.rb +85 -41
  80. data/vendor/assets/src/medias/rubies/examples/matrix_changes.rb +483 -0
  81. data/vendor/assets/src/medias/rubies/examples/matrix_simple.rb +32 -0
  82. data/vendor/assets/src/medias/rubies/examples/monitoring.rb +44 -18
  83. data/vendor/assets/src/medias/rubies/examples/mute.rb +1 -1
  84. data/vendor/assets/src/medias/rubies/examples/on.rb +1 -1
  85. data/vendor/assets/src/medias/rubies/examples/over.rb +6 -4
  86. data/vendor/assets/src/medias/rubies/examples/pause.rb +1 -1
  87. data/vendor/assets/src/medias/rubies/examples/physical.rb +19 -0
  88. data/vendor/assets/src/medias/rubies/examples/play.rb +1 -1
  89. data/vendor/assets/src/medias/rubies/examples/read.rb +2 -2
  90. data/vendor/assets/src/medias/rubies/examples/repeat.rb +3 -2
  91. data/vendor/assets/src/medias/rubies/examples/shadow.rb +1 -1
  92. data/vendor/assets/src/medias/rubies/examples/sort.rb +3 -4
  93. data/vendor/assets/src/medias/rubies/examples/tags.rb +10 -0
  94. data/vendor/assets/src/medias/rubies/examples/text.rb +4 -4
  95. data/vendor/assets/src/medias/rubies/examples/time.rb +3 -3
  96. data/vendor/assets/src/medias/rubies/examples/video.rb +2 -2
  97. data/vendor/assets/src/medias/rubies/examples/web.rb +2 -2
  98. data/vendor/assets/src/medias/rubies/{examples → unstable}/_2_solve.rb +1 -1
  99. data/vendor/assets/src/medias/rubies/{examples → unstable}/_audio.rb +1 -1
  100. data/vendor/assets/src/medias/rubies/{examples → unstable}/_dataset.rb +4 -4
  101. data/vendor/assets/src/medias/rubies/unstable/_matrix.rb +58 -0
  102. data/vendor/assets/src/medias/rubies/{examples → unstable}/_table2.rb +2 -2
  103. data/vendor/assets/src/medias/rubies/{examples → unstable}/_vie.rb +2 -2
  104. data/vendor/assets/src/utilities/mode.rb +0 -0
  105. data/vendor/assets/src-tauri/tauri.conf.json +2 -2
  106. metadata +34 -14
  107. data/vendor/assets/src/medias/rubies/examples/parents.rb +0 -15
  108. data/vendor/assets/src/medias/rubies/examples/table.rb +0 -479
  109. /data/vendor/assets/src/medias/rubies/{examples → unstable}/!run.rb +0 -0
  110. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_attach.rb +0 -0
  111. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_os.rb +0 -0
  112. /data/vendor/assets/src/medias/rubies/{examples → unstable}/_test.rb +0 -0
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
-
5
- new({particle: :touch , type: :hash, store: false })
3
+ new({ particle: :touch, type: :hash, store: false })
6
4
  new({ post: :touch }) do |params, user_bloc|
7
5
  @touch = {} if @touch == nil
8
6
  @touch[params] = user_bloc
@@ -10,91 +8,80 @@ new({ post: :touch }) do |params, user_bloc|
10
8
  store_value(:touch)
11
9
  end
12
10
 
13
- new({particle: :play }) do
11
+ new({ particle: :play }) do
14
12
  @atome[:pause] = :false
15
13
  end
16
- new({particle: :time })
17
- new({particle: :pause }) do
14
+ new({ particle: :time })
15
+ new({ particle: :pause }) do
18
16
  @atome[:play] = :false
19
17
  end
20
- new({particle: :on })
21
- new({particle: :fullscreen })
22
- new({particle: :mute })
23
- new({particle: :drag })
24
- new({ sanitizer: :drag }) do |params|
18
+ new({ particle: :on })
19
+ new({ particle: :fullscreen })
20
+ new({ particle: :mute })
21
+ new({ particle: :drag, store: false })
22
+
23
+ new({ sanitizer: :drag }) do |params, proc|
25
24
  params = { move: true } if params == true
25
+ params = { end: proc } if params == :end
26
+ params = { start: proc } if params == :start
27
+ params
28
+ end
29
+
30
+ new({ post: :drag }) do |params|
31
+ # puts "params is : > #{params}"
32
+ @drag = {} if @drag == nil
33
+ # @drag[params] = user_bloc
34
+ params.each do |k, v|
35
+ @drag[k] = v
36
+ end
37
+ # @drag=params
38
+ # as store for touch is set to false we have to manually save the instance variable
39
+ store_value(:drag)
40
+ end
41
+
42
+ # @touch[params] = user_bloc
43
+
44
+ new ({ particle: :drop })
45
+
46
+ new ({ sanitizer: :drop }) do |params|
47
+ params = { action: true } if params == true
26
48
  params
27
49
  end
28
- new({particle: :sort }) do |_value, sort_proc|
50
+
51
+ new ({ particle: :over })
52
+
53
+ new ({ sanitizer: :over }) do |params, user_proc|
54
+
55
+ params = :enter if params == true
56
+ case params
57
+ when :enter
58
+ @enter_action_proc = user_proc
59
+ when :leave
60
+ @leave_action_proc = user_proc
61
+ end
62
+ params
63
+ end
64
+
65
+ new({ particle: :sort }) do |_value, sort_proc|
29
66
  @sort_proc = sort_proc
30
67
  end
31
- new({particle: :targets })
32
- new({particle: :start })
33
- new({pre: :start }) do |_value, user_proc|
68
+ new({ particle: :targets })
69
+ new({ particle: :start })
70
+ new({ pre: :start }) do |_value, user_proc|
34
71
  @animation_start_proc = user_proc
35
72
  end
36
- new({particle: :stop })
37
- new({pre: :stop }) do |_value, user_proc|
73
+ new({ particle: :stop })
74
+ new({ pre: :stop }) do |_value, user_proc|
38
75
  @animation_stop_proc = user_proc
39
76
  end
40
- new({particle: :begin })
41
- new({particle: :end })
42
- new({particle: :duration })
43
- new({particle: :mass })
44
- new({particle: :damping })
45
- new({particle: :stiffness })
46
- new({particle: :velocity })
47
- new({particle: :repeat })
48
- new({particle: :ease })
49
- new({particle: :unbind })
50
- new({particle: :over })
51
-
77
+ new({ particle: :begin })
78
+ new({ particle: :end })
79
+ new({ particle: :duration })
80
+ new({ particle: :mass })
81
+ new({ particle: :damping })
82
+ new({ particle: :stiffness })
83
+ new({ particle: :velocity })
84
+ new({ particle: :repeat })
85
+ new({ particle: :ease })
86
+ new({ particle: :unbind })
52
87
 
53
- # generator = Genesis.generator
54
- #
55
- # # touch
56
- # generator.build_particle(:touch)
57
- # # video
58
- # generator.build_particle(:play) do
59
- # @atome[:pause] = :false
60
- # end
61
- # generator.build_particle(:time)
62
- # generator.build_particle(:pause) do
63
- # @atome[:play] = :false
64
- # end
65
- # generator.build_particle(:on)
66
- # generator.build_particle(:fullscreen)
67
- # generator.build_particle(:mute)
68
- # # TODO : add the at event to ny particle : (width, left, ...) maybe use monitor particle
69
- # # generator.build_particle(:at)
70
- # # drag
71
- # generator.build_particle(:drag)
72
- # generator.build_sanitizer(:drag) do |params|
73
- # params = { move: true } if params == true
74
- # params
75
- # end
76
- # # sort
77
- # generator.build_particle(:sort) do |_value, sort_proc|
78
- # @sort_proc = sort_proc
79
- # end
80
- # # animation
81
- # generator.build_particle(:targets)
82
- # generator.build_particle(:start)
83
- # generator.build_option(:pre_render_start) do |_value, user_proc|
84
- # @animation_start_proc = user_proc
85
- # end
86
- # generator.build_particle(:stop)
87
- # generator.build_option(:pre_render_stop) do |_value, user_proc|
88
- # @animation_stop_proc = user_proc
89
- # end
90
- # generator.build_particle(:begin)
91
- # generator.build_particle(:end)
92
- # generator.build_particle(:duration)
93
- # generator.build_particle(:mass)
94
- # generator.build_particle(:damping)
95
- # generator.build_particle(:stiffness)
96
- # generator.build_particle(:velocity)
97
- # generator.build_particle(:repeat)
98
- # generator.build_particle(:ease)
99
- # generator.build_particle(:unbind)
100
- # generator.build_particle(:over)
@@ -14,21 +14,3 @@ new({particle: :size }) do |params|
14
14
  height(params)
15
15
  end
16
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,56 +1,72 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- new({ particle: :attached })
4
- new({ sanitizer: :attached }) do |params|
5
- params = [params] unless params.instance_of? Array
6
- params
3
+ new({ particle: :attach })
4
+ new({ sanitizer: :attach }) do |parents_ids|
5
+ parents_ids = parents_ids if parents_ids.instance_of? Atome
6
+ parents_ids = [parents_ids] unless parents_ids.instance_of?(Array)
7
+ parents_ids.each do |parents_id|
8
+ parents_id = parents_id if parents_id.instance_of? Atome
9
+ parents_found = grab(parents_id)
10
+ # TODO : factorise the code below
11
+ current_type = atome[:type]
12
+ parents_found.atome[current_type] = [] unless parents_found.atome[current_type]
13
+
14
+ # the condition below is needed when user passed a hash instead of the id of the child cf :
15
+ parent_type_container = if parents_found.atome[current_type].instance_of? Array
16
+ parents_found.atome[current_type]
17
+ else
18
+ [parents_found.atome[current_type][:id]]
19
+ end
20
+ # here we add the child into it's parents type container
21
+ parent_type_container << atome[:id]
22
+ # TODO : factorise the code above
23
+ parents_found.atome[:attached] = [] unless parents_found.atome[:attached]
24
+ parents_found.atome[:attached] << atome[:id]
25
+ end
26
+ parents_ids
7
27
  end
8
- new({ pre: :attached }) do |children_ids|
28
+
29
+ new({ particle: :attached })
30
+ new({ sanitizer: :attached }) do |children_ids|
31
+ children_ids = children_ids if children_ids.instance_of? Atome
32
+ children_ids = [children_ids] unless children_ids.instance_of?(Array)
9
33
  children_ids.each do |child_id|
10
- child_id = child_id.value if child_id.instance_of? Atome
34
+ child_id = child_id if child_id.instance_of? Atome
11
35
  child_found = grab(child_id)
12
36
  parents_found = @atome[:id]
13
- child_found.family(parents_found)
37
+ # TODO : factorise the code below
38
+ child_found_type = child_found.type
39
+ @atome[child_found_type] = [] unless @atome[child_found_type]
40
+
41
+ # the condition below is needed when user passed a hash instead of the id of the child cf :
42
+ # circle(color: {red: 0, green: 1}) instead of color({id: :the_col}); circle(color: [:the_col])
43
+ child_type_container = if @atome[child_found_type].instance_of? Array
44
+ @atome[child_found_type]
45
+ else
46
+ [@atome[child_found_type][:id]]
47
+ end
48
+ child_type_container << child_id
49
+ # TODO : factorise the code above
14
50
  child_found.atome[:attach] = [parents_found]
15
51
  end
16
52
  end
17
- new({ particle: :type })
18
- new({ particle: :children })
19
53
 
20
- new ({ sanitizer: :children }) do |params|
21
- # TODO factorise the line below and 'sanitized_params' for all particle type of Array
22
- params = [params] unless params.instance_of? Array
23
- sanitized_params = []
24
- params.each do |child_id|
25
- child_id = child_id.value if child_id.instance_of? Atome
26
- sanitized_params << child_id
27
- child_found = grab(child_id)
28
- parents_found = @atome[:id]
29
- # FIXME : broadcast may malfunction because of the commented line below,
30
- # FIXME suite : if uncomment object hierarchy is broken (cf Vie Project)
31
- # FIXME : parent child problem may be caused by th eline below
32
- child_found.family(parents_found)
33
- child_found.atome[:parents] = [parents_found]
34
- end
35
- sanitized_params
36
- end
54
+ new({ particle: :detached, store: false })
37
55
 
38
- new({ particle: :parents })
39
- new({ sanitizer: :parents }) do |params|
40
- params = [params] unless params.instance_of? Array
41
- sanitized_params = []
42
- params.each do |parents_id|
43
- parents_id = parents_id.value if parents_id.instance_of? Atome
44
- sanitized_params << parents_id
45
- parents_found = grab(parents_id)
46
- family(parents_id)
47
- parents_found.atome[:children] << atome[:id]
56
+ new({ sanitizer: :detached }) do |values|
57
+ if values.instance_of? Array
58
+ values.each do |value|
59
+ detach_atome(value)
60
+ end
61
+ else
62
+ detach_atome(values)
63
+ # we sanitize the values so it always return an array to the renderer
64
+ values = [values]
48
65
  end
49
- sanitized_params
66
+ values
50
67
  end
51
68
 
52
- new({ particle: :family })
53
- new({ particle: :link })
69
+ new({ particle: :type })
54
70
  new({ particle: :id })
55
71
  new({ sanitizer: :id }) do |params|
56
72
  if @atome[:id] != params
@@ -62,19 +78,7 @@ new({ sanitizer: :id }) do |params|
62
78
  end
63
79
  new({ particle: :name })
64
80
  new({ particle: :active })
65
- new({ particle: :attach })
66
- new({ pre: :attach }) do |parents_ids|
67
- parents_ids.each do |parents_id|
68
- parents_id = parents_id.value if parents_id.instance_of? Atome
69
- parents_found = grab(parents_id)
70
- family(parents_id)
71
- parents_found.atome[:attached] = [] unless parents_found.atome[:attached]
72
- parents_found.atome[:attached] << atome[:id]
73
- end
74
- end
75
- new({ particle: :detached }) do |value|
76
- attached.value.delete(value)
77
- end
81
+
78
82
  new({ particle: :intricate, type: :array })
79
83
  new({ particle: :clones }) do |clones_found|
80
84
  clones_found.each_with_index do |clone_found, index|
@@ -30,6 +30,7 @@ new({ pre: :style }) do |styles_send, _user_proc|
30
30
  end
31
31
  end
32
32
  new({ particle: :hide })
33
+
33
34
  new({ particle: :remove }) do |particle_to_remove|
34
35
  case particle_to_remove
35
36
  when :color
@@ -43,62 +44,10 @@ new({ particle: :remove }) do |particle_to_remove|
43
44
  end
44
45
  new({ particle: :classes }) do |value|
45
46
  Universe.classes[value] ||= []
46
- Universe.classes[value] |= [id.value]
47
+ Universe.classes[value] |= [id]
47
48
  end
48
49
  new({ particle: :remove_classes }) do |value|
49
50
  # Universe.classes.delete(value)
50
- Universe.classes[value].delete(id.value)
51
+ Universe.classes[value].delete(id)
51
52
  end
52
53
  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,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- new({ particle: :left }) do |_params, user_proc|
3
+ new({ particle: :left, type: :integer }) do |_params, user_proc|
4
4
  instance_exec(&user_proc) if user_proc.is_a?(Proc)
5
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})
6
+ new({ particle: :right, type: :integer })
7
+ new({ particle: :top, type: :integer })
8
+ new({ particle: :bottom, type: :integer })
9
+ new({ particle: :rotate, type: :integer })
10
+ new({ particle: :direction, type: :string })
11
+ new({ particle: :center, type: :string})
12
+ new ({particle: :depth, type: :integer})
13
13
 
@@ -1,21 +1,62 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
- new({particle: :renderers })
5
- new({particle: :code })
6
- new({particle: :run }) do |params|
3
+ new({ particle: :renderers })
4
+ new({ particle: :code })
5
+ new({ particle: :run }) do |params|
7
6
  code_found = @atome[:code]
8
7
  instance_exec(params, &code_found) if code_found.is_a?(Proc)
9
8
  end
10
- new({particle: :broadcast })
11
- new({particle: :data })
12
- new({particle: :additional })
13
- new({particle: :delete }) do |params|
9
+ new({ particle: :broadcast })
10
+ new({ particle: :data })
11
+ # new({particle: :additional })
12
+ new({ particle: :delete, render: false }) do |params, &user_proc|
14
13
  if params == true
15
- # the machine delete the current atome
16
- Universe.delete(@atome[:id])
14
+ # We use the tag persistent to exclude color of system object and other default colors
15
+ unless tag && tag[:persistent]
16
+ # now we detach the atome from it's parent
17
+ # now we init rendering
18
+ rendering(:delete, params, &user_proc)
19
+ # the machine delete the current atome from the universe
20
+ id_found = @atome[:id]
21
+ Universe.delete(id_found)
22
+ parents_found = @atome[:attach]
23
+ parents_found.each do |parent_id_found|
24
+ parent_found = grab(parent_id_found)
25
+ next unless parent_found
26
+
27
+ previous_parent_type_child = parent_found.atome[type]
28
+ previous_parent_attached_child = parent_found.atome[:attached]
29
+ # FIXME : find why we can't use delete on the array nut must use an iterator
30
+ new_type_container = []
31
+ previous_parent_type_child.each do |atome_found|
32
+ new_type_container << atome_found unless atome_found == id_found
33
+ end
34
+ parent_found.atome[type] = new_type_container
35
+ # FIXME : find why we can't use delete on the array nut must use an iterator
36
+ new_attached_container = []
37
+ previous_parent_attached_child.each do |atome_found|
38
+ new_attached_container << atome_found unless atome_found == id_found
39
+ end
40
+ parent_found.atome[:attached] = new_attached_container
41
+
42
+ end
43
+
44
+ end
45
+
46
+ elsif params == :materials
47
+ # this will delete any child with a visual type cf : images, shapes, videos, ...
48
+ materials.each do |atome_id_found|
49
+ grab(atome_id_found).delete(true)
50
+ end
17
51
  elsif params[:id]
18
52
  # the machine try to an atome by it's ID and delete it
53
+ # We check for recursive, if found we delete attached atomes too
54
+ if params[:recursive] == true
55
+ materials_found = grab(params[:id]).materials
56
+ materials_found.each do |atome_id_found|
57
+ grab(atome_id_found).delete(true)
58
+ end
59
+ end
19
60
  grab(params[:id]).delete(true)
20
61
  elsif params.instance_of? Hash
21
62
  # the machine try to find the sub particle id and remove it eg a.delete(monitor: :my_monitor) remove the monitor
@@ -24,13 +65,30 @@ new({particle: :delete }) do |params|
24
65
  atome[param][value] = nil
25
66
  end
26
67
  else
27
- # the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
28
68
  send(params, 0)
29
69
  end
30
70
  end
31
- new({particle: :clear })
32
- new({particle: :path })
33
- new({particle: :schedule }) do |date, proc|
71
+
72
+ new({ particle: :clear })
73
+ new({ post: :clear }) do
74
+
75
+ attached_found = []
76
+ @atome[:attached].each do |attached_id_found|
77
+ attached_found << attached_id_found
78
+ end
79
+ attached_found.each do |child_id_found|
80
+ # puts "===>> should be deleted : #{child_id_found}"
81
+ child_found = grab(child_id_found)
82
+
83
+ child_found.delete(true) if child_found
84
+
85
+ # Universe.delete(child_id_found)
86
+ end
87
+ # attached([])
88
+ # puts "params are => #{id}"
89
+ end
90
+ new({ particle: :path })
91
+ new({ particle: :schedule }) do |date, proc|
34
92
  date = date.to_s
35
93
  delimiters = [',', ' ', ':', '-']
36
94
  format_date = date.split(Regexp.union(delimiters))
@@ -38,63 +96,19 @@ new({particle: :schedule }) do |date, proc|
38
96
  send("#{renderer}_schedule", format_date, &proc)
39
97
  end
40
98
  end
41
- new({particle: :read }) do |file, proc|
99
+ new({ particle: :read }) do |file, proc|
42
100
  Universe.renderer_list.each do |renderer|
43
101
  send("#{renderer}_reader", file, &proc)
44
102
  end
45
103
  end
46
- new({particle: :cursor })
47
- new({particle: :preset })
48
- new({particle: :relations,type: :hash })
104
+ new({ particle: :cursor })
105
+ new({ particle: :preset })
106
+ new({ particle: :relations, type: :hash })
107
+ new({ particle: :tag, render: false, type: :hash })
108
+ new({ particle: :batch, render: false })
109
+ new({ sanitizer: :batch }) do |params|
110
+ Batch.new(params)
111
+ # puts "index msg : we must treat the batch : #{params}"
49
112
 
113
+ end
50
114
 
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 })
@@ -21,7 +21,9 @@ 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
- # the line below create an empty particle method for each renderer, eg: browser_left, headless_left, ...
24
+ # the line below create an empty particle method for each renderer, eg: browser_left, headless_width, ...
25
+ # the line below create the corresponding particle method for Batch class
26
+ particle_method_for_batch(particle_name)
25
27
  auto_render_generator(particle_name) if render
26
28
  new_particle(particle_name, store, render, &particle_proc)
27
29
  # the line below create all alternatives methods such as create 'method='
@@ -29,17 +31,25 @@ class Atome
29
31
  end
30
32
 
31
33
  def build_atome(atome_name, &atome_proc)
34
+ # TODO : atomes should tell the Universe if they're parts of materials category or else
32
35
  # we add the new method to the atome's collection of methods
33
36
  Universe.add_to_atome_list(atome_name)
37
+ # the method below generate Atome method creation at Object level,
38
+ # so a syntax like : 'text(:hello)' is possible instead of the mandatory : grab(:view).text(:hello)
39
+ atome_method_for_object(atome_name)
40
+ # the line below create the corresponding atome method for Batch class
41
+ atome_method_for_batch(atome_name)
34
42
  unless Essentials.default_params[atome_name]
35
43
  # if it doesn't exist
36
- # we create default params for the new created atome, adding the hash to : module essential , @default_params
37
- Essentials.new_default_params(atome_name => { type: atome_name, children: [], parents: [:view] })
44
+ # we create default params for the new created atome, adding the hash to : module essential, @default_params
45
+ Essentials.new_default_params(atome_name => { type: atome_name, attach: [:view] })
38
46
  end
39
47
 
40
- # the line below create an empty atome method for each renderer, eg: browser_left, headless_left, ...
48
+ # the line below create an empty atome method for each renderer, eg: browser_shape, headless_color, ...
41
49
  auto_render_generator(atome_name)
50
+ # create_atome(atome_name)
42
51
  new_atome(atome_name, &atome_proc)
52
+
43
53
  end
44
54
 
45
55
  def auto_render_generator(element)
@@ -57,6 +67,7 @@ class Atome
57
67
  end
58
68
 
59
69
  def build_option(method_name, &method_proc)
70
+ #puts "2 => #{method_name}"
60
71
  Universe.add_optional_method(method_name.to_sym, &method_proc)
61
72
  end
62
73
  end