atome 0.5.3.8.1 → 0.5.4.0.9

Sign up to get free protection for your applications and to get access to all the features.
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