atome 0.5.3.7.3 → 0.5.3.7.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c9363d9399a6e64a2ba1fe03cf0be0f8a5ed36fa1d6ab58b59fc7cf7a2d4add
4
- data.tar.gz: 43e83f421a13dba82a3c635f3cc593954fecfa265937f9e87db0fee73cb1897f
3
+ metadata.gz: 9a4400073c94d3ec5f105403f67d7000f183f1cd43b2de943267f2f4dda09248
4
+ data.tar.gz: cd98e412458149fab7088810f96a39d00035f54d2a5c385b88afc16564ad3aa8
5
5
  SHA512:
6
- metadata.gz: f6120ad4f0a7ac8288c612dd31dbb7a4314d778e55e4ab65939c831b9b9c8e2fcbb077a916fd7a7b82757e536ec056bd987a65ef6ebcf7686297087edc5ae35b
7
- data.tar.gz: 4e27af6dd5d4f5b6de378f8e196c93a3788c8e0103eeb5848e58ab616370bdddd9522894aae25499a510af4ccb479063318d5e3a1543d85510a144ea56bc621e
6
+ metadata.gz: 4cb7bb2d5da5fa0021bd568b543cf56a7e172457f3bf8e7907dbaacef4a6a15051bc682145da3447f9d051c0c5ac17bfa5d87038e3a6bdee06a63573efa3947b
7
+ data.tar.gz: 015efb61571056ffe114372af0bfe87b5a4056ca44ef581d0ec685313598936ea3870ae63d7e47b8017e3d655d77599c279ec540310f82edec50668141678696
data/lib/atome/atome.rb CHANGED
@@ -14,7 +14,6 @@ class Atome
14
14
  atomes.each_value do |elements|
15
15
  # the instance variable below contain the id all any atomes that need to be informed when changes occurs
16
16
  @broadcast = {}
17
- # @at_time = {}
18
17
  # now we store the proc in a an atome's property called :bloc
19
18
  elements[:code] = atomes_proc if atomes_proc
20
19
  @atome = elements
@@ -31,7 +30,7 @@ class Atome
31
30
  if params || params == false
32
31
  # the line below execute the proc created when using the build_particle method
33
32
  instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
34
- params = sanitize(element, params)
33
+ params = sanitize(element, params,&user_proc)
35
34
  create_particle(element, store, render)
36
35
  send("set_#{element}", params, &user_proc)
37
36
  else
@@ -50,7 +49,9 @@ class Atome
50
49
 
51
50
  def atome_creation_pre_treatment(element, params, &user_proc)
52
51
  params = sanitize(element, params)
52
+ run_optional_proc("pre_render_#{@atome[:type]}".to_sym, self, params, &user_proc)
53
53
  create_atome(element)
54
+ run_optional_proc("post_render_#{@atome[:type]}".to_sym, self, params, &user_proc)
54
55
  send("set_#{element}", params, &user_proc)
55
56
  end
56
57
 
@@ -88,8 +89,8 @@ class Atome
88
89
  end
89
90
  end
90
91
 
91
- def run_optional_proc(proc_name, atome = self, element, &user_proc)
92
- params = instance_variable_get("@#{element}")
92
+ def run_optional_proc(proc_name, atome = self, params, &user_proc)
93
+ # params = instance_variable_get("@#{element}")
93
94
  option_found = Universe.get_optional_method(proc_name)
94
95
  atome.instance_exec(params, user_proc, atome, &option_found) if option_found.is_a?(Proc)
95
96
  end
@@ -115,14 +116,12 @@ class Atome
115
116
  # we create a proc holder of any new particle if user pass a bloc
116
117
  store_code_bloc(element, &user_proc) if user_proc
117
118
  # Params is now an instance variable so it should be passed thru different methods
118
- instance_variable_set("@#{element}", params)
119
- run_optional_proc("pre_render_#{@atome[:type]}".to_sym, self, element, &user_proc)
120
- run_optional_proc("pre_render_#{element}".to_sym, self, element, &user_proc)
121
- rendering(element, &user_proc) if render
122
- run_optional_proc("post_render_#{@atome[:type]}".to_sym, self, element, &user_proc)
123
- run_optional_proc("post_render_#{element}".to_sym, self, element, &user_proc)
119
+ instance_variable_set("@#{element}", params) if store
120
+ run_optional_proc("pre_render_#{element}".to_sym, self, params, &user_proc)
121
+ rendering(element,params, &user_proc) if render
122
+ run_optional_proc("post_render_#{element}".to_sym, self, params, &user_proc)
124
123
  broadcasting(element)
125
- store_value(element) if store
124
+ store_value(element) if store
126
125
  self
127
126
  end
128
127
 
@@ -154,7 +153,6 @@ class Atome
154
153
  virtual_atome.user_proc = user_proc
155
154
  virtual_atome.value = @atome[element]
156
155
  virtual_atome
157
- "it should contain the atome not : #{element}"
158
156
  end
159
157
 
160
158
  def create_atome(new_atome)
@@ -20,7 +20,13 @@ def new(params, &bloc)
20
20
  end
21
21
  end
22
22
 
23
+ def identity_generator(type=:element)
24
+ "#{type}_#{Universe.counter}"
25
+ # { date: Time.now, location: geolocation }
26
+ end
27
+
23
28
  def grab(atome_to_get)
29
+ atome_to_get = atome_to_get.value if atome_to_get.instance_of? Atome
24
30
  Universe.atomes[atome_to_get]
25
31
  end
26
32
 
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Atome
4
+ def /val
5
+ val=val.value if val.instance_of? Atome
6
+ value/val
7
+ end
8
+
9
+ def *val
10
+ val=val.value if val.instance_of? Atome
11
+ value*val
12
+ end
13
+
14
+ def -val
15
+ val=val.value if val.instance_of? Atome
16
+ value-val
17
+ end
18
+
19
+
20
+ def +val
21
+ val=val.value if val.instance_of? Atome
22
+ value+val
23
+ end
24
+ end
@@ -242,7 +242,9 @@ module Matrix
242
242
  default_renderer = Essentials.default_params[:render_engines]
243
243
  atome_type = :matrix
244
244
  generated_render = params[:renderers] || default_renderer
245
- generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
245
+ # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
246
+ generated_id = params[:id] || identity_generator(:matrix)
247
+
246
248
  generated_parents = params[:parents] || [id.value]
247
249
  generated_children = params[:children] || []
248
250
  params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
@@ -1,7 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  new({ atome: :color })
4
+
4
5
  new({ sanitizer: :color }) do |params|
6
+ # we delete any previous color if there's one
7
+ if color.value
8
+ attached.value.delete(color.value)
9
+ grab(color.value)&.delete(true) # we had the condition because the color may exist but
10
+ # so it is not sanitized so it has no id
11
+ end
5
12
  parent_found = found_parents_and_renderers[:parent]
6
13
  parent_found = [:black_matter] if parent_found == [:view]
7
14
  render_found = found_parents_and_renderers[:renderers]
@@ -10,9 +17,10 @@ new({ sanitizer: :color }) do |params|
10
17
  red: 0, green: 0, blue: 0, alpha: 1 }
11
18
  params = create_color_hash(params) unless params.instance_of? Hash
12
19
  new_params = default_params.merge!(params)
13
- atome[:color] = new_params
20
+ atome[:color] = new_params[:id]
14
21
  new_params
15
22
  end
23
+
16
24
  new({ atome: :image })
17
25
  new({ sanitizer: :image }) do |params|
18
26
  unless params.instance_of? Hash
@@ -39,19 +47,30 @@ new({ sanitizer: :video }) do |params|
39
47
  end
40
48
  new({ atome: :shadow })
41
49
  new({ sanitizer: :shadow }) do |params|
50
+ # we delete any previous shadow if there's one
51
+ if shadow.value
52
+ attached.value.delete(shadow.value)
53
+ grab(shadow.value)&.delete(true) # we had the condition because the color may exist but
54
+ # so it is not sanitized so it has no id
55
+ end
42
56
  parent_found = found_parents_and_renderers[:parent]
43
57
  parent_found = [:user_view] if parent_found == [:view]
44
58
  render_found = found_parents_and_renderers[:renderers]
45
59
  default_params = { renderers: render_found, id: "shadow_#{Universe.atomes.length}", type: :shadow,
46
60
  attach: parent_found,
47
61
  red: 0, green: 0, blue: 0, alpha: 1, blur: 3, left: 3, top: 3 }
48
- default_params.merge!(params)
62
+ # default_params.merge!(params)
63
+ params = create_shadow_hash(params) unless params.instance_of? Hash
64
+ new_params = default_params.merge!(params)
65
+ atome[:shadow] = new_params
66
+ new_params
67
+
49
68
  end
50
69
  new({ atome: :shape })
51
70
  new({ atome: :code })
52
71
  new({ atome: :audio })
53
72
  new({ atome: :element })
54
- new({ sanitizer: :element })do |params|
73
+ new({ sanitizer: :element }) do |params|
55
74
  parent_found = found_parents_and_renderers[:parent]
56
75
  render_found = []
57
76
  default_params = { renderers: render_found, id: "element_#{Universe.atomes.length}", type: :element,
@@ -59,7 +78,7 @@ new({ sanitizer: :element })do |params|
59
78
  default_params.merge!(params)
60
79
  end
61
80
  new({ atome: :web })
62
- new({ sanitizer: :web })do |params|
81
+ new({ sanitizer: :web }) do |params|
63
82
  default_renderer = Essentials.default_params[:render_engines]
64
83
 
65
84
  generated_id = params[:id] || "web_#{Universe.atomes.length}"
@@ -96,86 +115,3 @@ new({ sanitizer: :text }) do |params|
96
115
  params
97
116
  end
98
117
 
99
-
100
- # generator = Genesis.generator
101
- #
102
- # generator.build_atome(:animation)
103
- # generator.build_atome(:color)
104
- # generator.build_sanitizer(:color) do |params|
105
- # parent_found = found_parents_and_renderers[:parent]
106
- # parent_found = [:black_matter] if parent_found == [:view]
107
- # render_found = found_parents_and_renderers[:renderers]
108
- # default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
109
- # attach: parent_found,
110
- # red: 0, green: 0, blue: 0, alpha: 1 }
111
- # params = create_color_hash(params) unless params.instance_of? Hash
112
- # new_params = default_params.merge!(params)
113
- # atome[:color] = new_params
114
- # new_params
115
- # end
116
- #
117
- # generator.build_atome(:video)
118
- # generator.build_sanitizer(:video) do |params|
119
- # parent_found = found_parents_and_renderers[:parent]
120
- # render_found = found_parents_and_renderers[:renderers]
121
- # default_params = { renderers: render_found, id: "video_#{Universe.atomes.length}", type: :video,
122
- # parents: parent_found }
123
- # default_params.merge!(params)
124
- # end
125
- # generator.build_atome(:shadow)
126
- # generator.build_sanitizer(:shadow) do |params|
127
- # parent_found = found_parents_and_renderers[:parent]
128
- # parent_found = [:user_view] if parent_found == [:view]
129
- # render_found = found_parents_and_renderers[:renderers]
130
- # default_params = { renderers: render_found, id: "shadow_#{Universe.atomes.length}", type: :shadow,
131
- # attach: parent_found,
132
- # red: 0, green: 0, blue: 0, alpha: 1, blur: 3, left: 3, top: 3 }
133
- # default_params.merge!(params)
134
- # end
135
- # generator.build_atome(:shape)
136
- # generator.build_atome(:text)
137
- # generator.build_atome(:code)
138
- # generator.build_atome(:audio)
139
- # generator.build_atome(:element)
140
- # generator.build_sanitizer(:element) do |params|
141
- # parent_found = found_parents_and_renderers[:parent]
142
- # render_found = []
143
- # default_params = { renderers: render_found, id: "element_#{Universe.atomes.length}", type: :element,
144
- # parents: parent_found, data: '' }
145
- # default_params.merge!(params)
146
- # end
147
- # generator.build_atome(:collector)
148
- # generator.build_atome(:web)
149
- # generator.build_sanitizer(:web) do |params|
150
- # default_renderer = Essentials.default_params[:render_engines]
151
- #
152
- # generated_id = params[:id] || "web_#{Universe.atomes.length}"
153
- # generated_render = params[:renderers] || default_renderer
154
- # generated_parents = params[:parents] || id.value
155
- # # TODO : the line below should get the value from default params Essentials
156
- # temp_default = { renderers: generated_render, id: generated_id, type: :web, parents: [generated_parents],
157
- # children: [], width: 120, height: 120, path: 'https://www.youtube.com/embed/usQDazZKWAk' }
158
- # params = temp_default.merge(params)
159
- # params
160
- # end
161
- # generator.build_sanitizer(:animation) do |params|
162
- # default_renderer = Essentials.default_params[:render_engines]
163
- # atome_type = :animation
164
- # generated_render = params[:renderers] || default_renderer
165
- # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
166
- # generated_parents = params[:parents] || []
167
- # generated_children = params[:children] || []
168
- # params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
169
- # params
170
- # end
171
- # generator.build_sanitizer(:text) do |params|
172
- # params = { data: params } unless params.instance_of? Hash
173
- # default_renderer = Essentials.default_params[:render_engines]
174
- # atome_type = :text
175
- # generated_render = params[:renderers] || default_renderer
176
- # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
177
- # generated_parents = params[:parents] || [id.value]
178
- # generated_children = params[:children] || []
179
- # params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
180
- # params
181
- # end
@@ -2,7 +2,14 @@
2
2
 
3
3
 
4
4
 
5
- new({particle: :touch })
5
+ new({particle: :touch , type: :hash, store: false })
6
+ new({ post: :touch }) do |params, user_bloc|
7
+ @touch = {} if @touch == nil
8
+ @touch[params] = user_bloc
9
+ # as store for touch is set to false we have to manually save the instance variable
10
+ store_value(:touch)
11
+ end
12
+
6
13
  new({particle: :play }) do
7
14
  @atome[:pause] = :false
8
15
  end
@@ -2,9 +2,7 @@
2
2
 
3
3
  new({ particle: :attached })
4
4
  new({ sanitizer: :attached }) do |params|
5
- unless params.instance_of? Array
6
- params = [params]
7
- end
5
+ params = [params] unless params.instance_of? Array
8
6
  params
9
7
  end
10
8
  new({ pre: :attached }) do |children_ids|
@@ -13,32 +11,44 @@ new({ pre: :attached }) do |children_ids|
13
11
  child_found = grab(child_id)
14
12
  parents_found = @atome[:id]
15
13
  child_found.family(parents_found)
16
- # parents_found.atome[:attach] = [] unless parents_found.atome[:attach]
17
14
  child_found.atome[:attach] = [parents_found]
18
15
  end
19
16
  end
20
17
  new({ particle: :type })
21
18
  new({ particle: :children })
22
- new({ pre: :children }) do |children_ids|
23
- children_ids.each do |child_id|
19
+
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|
24
25
  child_id = child_id.value if child_id.instance_of? Atome
26
+ sanitized_params << child_id
25
27
  child_found = grab(child_id)
26
28
  parents_found = @atome[:id]
27
29
  # 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)
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)
30
33
  child_found.atome[:parents] = [parents_found]
31
34
  end
35
+ sanitized_params
32
36
  end
37
+
33
38
  new({ particle: :parents })
34
- new({ pre: :parents }) do |parents_ids|
35
- parents_ids.each do |parents_id|
39
+ new({ sanitizer: :parents }) do |params|
40
+ params = [params] unless params.instance_of? Array
41
+ sanitized_params = []
42
+ params.each do |parents_id|
36
43
  parents_id = parents_id.value if parents_id.instance_of? Atome
44
+ sanitized_params << parents_id
37
45
  parents_found = grab(parents_id)
38
46
  family(parents_id)
39
47
  parents_found.atome[:children] << atome[:id]
40
48
  end
49
+ sanitized_params
41
50
  end
51
+
42
52
  new({ particle: :family })
43
53
  new({ particle: :link })
44
54
  new({ particle: :id })
@@ -62,8 +72,10 @@ new({ pre: :attach }) do |parents_ids|
62
72
  parents_found.atome[:attached] << atome[:id]
63
73
  end
64
74
  end
65
- new({ particle: :detached })
66
- new({ particle: :intricate, type: :array })
75
+ new({ particle: :detached }) do |value|
76
+ attached.value.delete(value)
77
+ end
78
+ new({ particle: :intricate, type: :array })
67
79
  new({ particle: :clones }) do |clones_found|
68
80
  clones_found.each_with_index do |clone_found, index|
69
81
  particles_intricated = clone_found[:intricate] ||= []
@@ -77,66 +89,3 @@ new({ particle: :clones }) do |clones_found|
77
89
  end
78
90
  end
79
91
  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
@@ -6,6 +6,7 @@ class Atome
6
6
 
7
7
  def collapse
8
8
  @atome.each do |element, value|
9
+ # puts "=============> #{element}"
9
10
  send(element, value) unless element == :type
10
11
  end
11
12
  end
@@ -14,15 +15,12 @@ class Atome
14
15
  true
15
16
  end
16
17
 
17
- def sanitize(element, params)
18
+ def sanitize(element, params,&user_proc)
18
19
  bloc_found = Universe.get_sanitizer_method(element)
19
- params = instance_exec(params, &bloc_found) if bloc_found.is_a?(Proc)
20
+ params = instance_exec(params,user_proc, &bloc_found) if bloc_found.is_a?(Proc)
20
21
  params
21
22
  end
22
23
 
23
- def identity_generator
24
- { date: Time.now, location: geolocation }
25
- end
26
24
 
27
25
  def history(property, value)
28
26
  "historize : #{property} #{value}"
@@ -42,11 +40,11 @@ class Atome
42
40
 
43
41
  def monitor(params=nil, &proc_monitoring)
44
42
  if params
45
- atome[:monitor] ||= {}
43
+ monitoring=atome[:monitor] ||= {}
46
44
  params[:atomes].each do |atome_id|
47
45
  target_broadcaster = grab(atome_id).instance_variable_get('@broadcast')
48
46
  monitor_id = params[:id] || "monitor#{target_broadcaster.length}"
49
- atome[:monitor] [monitor_id]=params.merge({code: proc_monitoring})
47
+ monitoring[monitor_id]=params.merge({code: proc_monitoring})
50
48
  target_broadcaster[monitor_id] = { particles: params[:particles], code: proc_monitoring }
51
49
  end
52
50
  else
@@ -118,6 +116,18 @@ class Atome
118
116
  end
119
117
  end
120
118
 
119
+ def include?(value)
120
+ self.value.include?(value)
121
+ end
122
+
123
+
124
+
125
+ def each_with_index(*args)
126
+ self.value.each_with_index do |val, index|
127
+ yield(val, index)
128
+ end
129
+ end
130
+
121
131
  def [](range)
122
132
  if value[range].class == Atome
123
133
  return value[range]
@@ -17,7 +17,9 @@ class Batch
17
17
  end
18
18
 
19
19
  def initialize(params)
20
- @id = params[:id] || "batch_#{Universe.atomes.length}"
20
+ # @id = params[:id] || "batch_#{Universe.atomes.length}"
21
+ @id = params[:id] || identity_generator(:batch)
22
+ Universe.add_to_atomes(@id, self)
21
23
  Universe.add_to_atomes(@id, self)
22
24
  end
23
25
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  # universe method here
4
4
  class Universe
5
+ @counter=0
5
6
  @atomes = {}
6
7
  @classes = {}
7
8
  @atome_list = []
@@ -10,7 +11,7 @@ class Universe
10
11
  @options = {}
11
12
  @sanitizers = {}
12
13
  class << self
13
- attr_reader :atomes, :renderer_list, :atome_list, :particle_list, :classes
14
+ attr_reader :atomes, :renderer_list, :atome_list, :particle_list, :classes, :counter
14
15
 
15
16
  def add_to_particle_list(particle = nil, type)
16
17
  instance_variable_get('@particle_list')[particle]=type
@@ -43,6 +44,7 @@ class Universe
43
44
  def add_to_atomes(id, atome)
44
45
  # instance_variable_get('@atomes').merge!(atome)
45
46
  @atomes[id] = atome
47
+ @counter=@counter+1
46
48
  end
47
49
 
48
50
  def update_atome_id(id, atome, prev_id)
@@ -5,7 +5,7 @@
5
5
  # TODO: Factorise codes below
6
6
  # TODO we must clarified/unified the usage of presets and sanitizer it is not clear
7
7
 
8
- # shaper creation
8
+
9
9
  class Atome
10
10
  def atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
11
11
  temp_default = Essentials.default_params[atome_type] || {}
@@ -21,7 +21,7 @@ class Atome
21
21
  default_renderer = Essentials.default_params[:render_engines]
22
22
  atome_type = :box
23
23
  generated_render = params[:renderers] || default_renderer
24
- generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
24
+ generated_id = params[:id] || identity_generator(:box)
25
25
  generated_parents = params[:parents] || [id.value]
26
26
  generated_children = params[:children] || []
27
27
 
@@ -34,74 +34,11 @@ class Atome
34
34
  default_renderer = Essentials.default_params[:render_engines]
35
35
  atome_type = :circle
36
36
  generated_render = params[:renderers] || default_renderer
37
- generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
37
+ generated_id = params[:id] || identity_generator(:circle)
38
38
  generated_parents = params[:parents] || [id.value]
39
39
  generated_children = params[:children] || []
40
40
  params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
41
41
  Atome.new({ atome_type => params }, &bloc)
42
42
  end
43
43
 
44
- # def image(params = {}, &bloc)
45
- # default_renderer = Essentials.default_params[:render_engines]
46
- # generated_id = params[:id] || "image_#{Universe.atomes.length}"
47
- # generated_render = params[:renderers] || default_renderer
48
- # generated_parents = params[:parents] || id.value
49
- # # TODO : the line below should get the value from default params Essentials
50
- # temp_default = { renderers: generated_render, id: generated_id, type: :image, parents: [generated_parents],
51
- # children: [], width: 99, height: 99, path: './medias/images/atome.svg' }
52
- # params = temp_default.merge(params)
53
- # Atome.new({ image: params }, &bloc)
54
- # end
55
- #
56
- # def text(params = {}, &bloc)
57
- # default_renderer = Essentials.default_params[:render_engines]
58
- # atome_type = :text
59
- # generated_render = params[:renderers] || default_renderer
60
- # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
61
- # generated_parents = params[:parents] || [id.value]
62
- # generated_children = params[:children] || []
63
- # params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
64
- # Atome.new({ atome_type => params }, &bloc)
65
- # end
66
-
67
- # def element(params = 'kjh', &bloc)
68
- # atome_type = :element
69
- #
70
- # generated_render = params[:renderers] || []
71
- #
72
- # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
73
- # generated_parents = params[:parents] || [id.value]
74
- # generated_children = params[:children] || []
75
- #
76
- # generated_data = ""
77
- # params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
78
- # # FIXME: do not merge generated_data like this but change the atomecommon
79
- # params.merge(generated_data)
80
- #
81
- # Atome.new({ atome_type => params }, &bloc)
82
- # end
83
-
84
- # def web(params = {}, &bloc)
85
- # default_renderer = Essentials.default_params[:render_engines]
86
- #
87
- # generated_id = params[:id] || "web_#{Universe.atomes.length}"
88
- # generated_render = params[:renderers] || default_renderer
89
- # generated_parents = params[:parents] || id.value
90
- # # TODO : the line below should get the value from default params Essentials
91
- # temp_default = { renderers: generated_render, id: generated_id, type: :web, parents: [generated_parents],
92
- # children: [], width: 120, height: 120, path: 'https://www.youtube.com/embed/usQDazZKWAk' }
93
- # params = temp_default.merge(params)
94
- # Atome.new({ image: params }, &bloc)
95
- # end
96
-
97
- # def animation(params = {}, &bloc)
98
- # default_renderer = Essentials.default_params[:render_engines]
99
- # atome_type = :animation
100
- # generated_render = params[:renderers] || default_renderer
101
- # generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
102
- # generated_parents = params[:parents] || []
103
- # generated_children = params[:children] || []
104
- # params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params)
105
- # Atome.new({ atome_type => params }, &bloc)
106
- # end
107
44
  end
@@ -4,6 +4,11 @@ generator = Genesis.generator
4
4
 
5
5
  generator.build_render(:browser_touch) do |value, proc|
6
6
  atome_id = @browser_object.attribute(:id)
7
+ # value.each do |tap_mode, user_proc|
8
+ # alert "#{tap_mode} : #{user_proc}\n #{tap_mode.class} : #{user_proc.class}"
9
+ # BrowserHelper.send("browser_touch_#{tap_mode}", atome_id,self, user_proc)
10
+ # end
11
+ # alert "#{value} : #{proc}\n #{value.class} : #{proc.class}"
7
12
  BrowserHelper.send("browser_touch_#{value}", atome_id,self, proc)
8
13
  end
9
14
 
@@ -4,8 +4,8 @@
4
4
  class Atome
5
5
  private
6
6
 
7
- def rendering(element, &user_proc)
8
- params=instance_variable_get("@#{element}")
7
+ def rendering(element,params, &user_proc)
8
+ # params=instance_variable_get("@#{element}")
9
9
  render_engines = @atome[:renderers]
10
10
  render_engines.each do |render_engine|
11
11
  send("#{render_engine}_#{element}", params, &user_proc)
data/lib/atome/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Atome
4
- VERSION = '0.5.3.7.3'
4
+ VERSION = '0.5.3.7.8'
5
5
  end
data/lib/atome.rb CHANGED
@@ -10,6 +10,7 @@ require 'atome/helpers/essentials'
10
10
  require 'atome/renderers/renderer'
11
11
  require 'atome/helpers/color_helper/color'
12
12
  require 'atome/extensions/atome'
13
+ require 'atome/extensions/mathematic'
13
14
  require 'atome/atome'
14
15
  require 'atome/helpers/callbacks'
15
16
  require 'atome/genesis/generators/atome'
@@ -1,17 +1,17 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
- viewBox="0 0 231.228 231.228" xml:space="preserve">
5
- <g>
6
- <path style="fill:#3FA9F5;" d="M16.398,91.213c-0.596,0.367-1.192,0.412-1.833,0.412c-0.367,0.138-0.779,0.275-1.238,0.275
7
- c-3.85,0.138-6.325-3.804-8.479-6.508s-4.446-5.271-4.767-8.846c0-0.092,0.046-0.183,0.092-0.275
8
- c-0.275-0.963-0.229-1.971,0.183-2.934C14.06,43.499,50.499,24.203,81.987,21.728c0.137,0,0.275,0,0.412,0
9
- c1.512,0,2.658,0.688,3.483,0.688c7.288,4.583,9.946,16.5,12.238,23.192c5.225,15.446,8.525,32.543,12.1,48.447
10
- c3.667,16.546,8.984,58.164,32.955,30.938c6.142-6.967,10.359-16.821,13.475-26.767c-1.054-5.454-0.137-10.817-5.133-15.401
11
- c-5.454-5.042-11.459-7.517-18.884-6.692c-1.238,0.137-2.063-0.55-2.429-1.513c-1.925-1.467-2.979-4.079-1.375-6.784
12
- c16.317-27.592,55.414-68.935,88.598-37.264c34.559,33.047-4.308,91.578-23.971,120.912
13
- c-21.084,31.443-67.469,75.902-109.911,55.368c-14.575-7.059-19.617-23.055-23.376-37.676
14
- c-6.646-25.805-12.742-51.747-19.342-77.598c-0.092-0.183-0.229-0.321-0.367-0.504c-0.963-1.833-1.283-4.217-2.704-5.729
15
- c-2.108-2.292-5.317-2.063-8.021-1.421C24.831,85.163,20.706,88.784,16.398,91.213z"/>
16
- </g>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 231.228 231.228" xml:space="preserve">
5
+ <g>
6
+ <path style="fill:#3FA9F5;" d="M16.398,91.213c-0.596,0.367-1.192,0.412-1.833,0.412c-0.367,0.138-0.779,0.275-1.238,0.275
7
+ c-3.85,0.138-6.325-3.804-8.479-6.508s-4.446-5.271-4.767-8.846c0-0.092,0.046-0.183,0.092-0.275
8
+ c-0.275-0.963-0.229-1.971,0.183-2.934C14.06,43.499,50.499,24.203,81.987,21.728c0.137,0,0.275,0,0.412,0
9
+ c1.512,0,2.658,0.688,3.483,0.688c7.288,4.583,9.946,16.5,12.238,23.192c5.225,15.446,8.525,32.543,12.1,48.447
10
+ c3.667,16.546,8.984,58.164,32.955,30.938c6.142-6.967,10.359-16.821,13.475-26.767c-1.054-5.454-0.137-10.817-5.133-15.401
11
+ c-5.454-5.042-11.459-7.517-18.884-6.692c-1.238,0.137-2.063-0.55-2.429-1.513c-1.925-1.467-2.979-4.079-1.375-6.784
12
+ c16.317-27.592,55.414-68.935,88.598-37.264c34.559,33.047-4.308,91.578-23.971,120.912
13
+ c-21.084,31.443-67.469,75.902-109.911,55.368c-14.575-7.059-19.617-23.055-23.376-37.676
14
+ c-6.646-25.805-12.742-51.747-19.342-77.598c-0.092-0.183-0.229-0.321-0.367-0.504c-0.963-1.833-1.283-4.217-2.704-5.729
15
+ c-2.108-2.292-5.317-2.063-8.021-1.421C24.831,85.163,20.706,88.784,16.398,91.213z"/>
16
+ </g>
17
17
  </svg>
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  my_video = Atome.new(
4
-
4
+ video: { renderers: [:browser], id: :video1, type: :video, parents: [:view],
5
+ path: './medias/videos/avengers.mp4', left: 333, top: 33, width: 777
6
+ }
5
7
  )
6
8
 
7
9
  my_video.touch(true) do
@@ -20,4 +22,4 @@ end
20
22
 
21
23
  my_video.markers({ markers: { begin: 6, code: jumper } })
22
24
 
23
- my_video.add({ markers: { my_stop: { begin: 16, code: stoper } } })
25
+ my_video.add({ markers: { my_stop: { begin: 16, code: stoper } } })
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- bb = box({ id: :the_ref, width: 369 })
4
- bb.color(:red)
3
+ bb = text({ id: :the_ref, width: 369, data: "touch me!" })
4
+ bb.color(:orange)
5
5
  box({ id: :my_box, drag: true })
6
6
  c = circle({ id: :the_circle, left: 222, drag: { move: true, inertia: true, lock: :start } })
7
7
  c.shadow({ renderers: [:browser], id: :shadow2, type: :shadow,
@@ -28,7 +28,7 @@ grab(:the_box_clone_1).rotate(33)
28
28
 
29
29
 
30
30
  wait 5 do
31
- b.clones.value.each do |clone_found|
31
+ b.clones.each do |clone_found|
32
32
  grab(clone_found[:id]).delete(true)
33
33
  end
34
34
  end
@@ -9,7 +9,7 @@ wait 4 do
9
9
  end
10
10
 
11
11
  wait 3 do
12
- b.children.value.each do |attached_atome_id|
12
+ b.children.each do |attached_atome_id|
13
13
  b.delete({id: attached_atome_id})
14
14
  b.shadow({ renderers: [:browser], id: :shadow2, type: :shadow, parents: [], children: [],
15
15
  left: 3, top: 9, blur: 3, direction: '',
@@ -24,6 +24,3 @@ wait 2 do
24
24
  end
25
25
 
26
26
 
27
- wait 1 do
28
- b.delete({id: :the_circle})
29
- end
@@ -2,8 +2,8 @@
2
2
 
3
3
  a = box({ width: 333, height: 333, id: :the_boxy })
4
4
  a.color(:red)
5
- b = box({ width: 33, height: 33, id: :the_box, drag: true })
6
- b.parents([a.id.value])
5
+ b = circle({ width: 33, height: 33, id: :the_box, drag: true })
6
+ b.parents([a.id])
7
7
  b.color(:black)
8
8
  # b.parents([:the_boxy ])
9
9
  b.drag({ move: true }) do |e|
@@ -37,4 +37,11 @@ b.drag({ lock: :x })
37
37
  b.drag({ constraint: :parent })
38
38
  b.drag({ snap: { x: 100, y: 190 } })
39
39
 
40
- # b.drag({ constraint: :the_boxy })
40
+ # b.drag({ constraint: :the_boxy })
41
+
42
+ cc=circle(drag: true)
43
+ bb=box({drag: true, color: :yellow})
44
+
45
+ bb.parents(cc.id)
46
+
47
+ # alert"#{b.parents.class} : #{b.parents}"
@@ -11,7 +11,7 @@ c = Atome.new(shape: { type: :shape, id: :my_pix, children: [], parents: [:view]
11
11
  left: 50, right: 78
12
12
  })
13
13
 
14
- a.monitor({ atomes: grab(:view).children.value, particles: [:left] }) do |atome, element, value|
14
+ a.monitor({ atomes: grab(:view).children, particles: [:left] }) do |atome, element, value|
15
15
  puts "monitoring: #{atome.id}, #{element}, #{value}"
16
16
  end
17
17
 
@@ -31,14 +31,14 @@ end
31
31
 
32
32
  aa.box({ id: :theboxy })
33
33
 
34
- aa.monitor({ atomes: grab(:view).children.value, particles: [:left] }) do |_atome, _element, value|
34
+ aa.monitor({ atomes: grab(:view).children, particles: [:left] }) do |_atome, _element, value|
35
35
  puts "the left value was change to : #{value}"
36
36
  end
37
37
 
38
- aa.monitor({ atomes: grab(:view).children.value, particles: [:width] }) do |_atome, _element, value|
38
+ aa.monitor({ atomes: grab(:view).children, particles: [:width] }) do |_atome, _element, value|
39
39
  puts "the width's value was change to : #{value}"
40
40
  end
41
41
 
42
- aa.monitor({ atomes: grab(:view).children.value, particles: [:left], id: :my_monitorer }) do |_atome, _element, value|
42
+ aa.monitor({ atomes: grab(:view).children, particles: [:left], id: :my_monitorer }) do |_atome, _element, value|
43
43
  puts "the second monitor left value was log to : #{value}"
44
44
  end
@@ -61,7 +61,7 @@ grab(:my_table_26).color(:purple)
61
61
  # test.color(:blue)
62
62
  # m.columns(6).data[0..3].color(:white)
63
63
 
64
- grab(m.id.value).drag({ move: true }) do |e|
64
+ grab(m.id).drag({ move: true }) do |e|
65
65
  puts e
66
66
  end
67
67
  wait 1 do
@@ -127,7 +127,7 @@ m.delete({ relations: :rel_2 })
127
127
  # grab("my_table_9").children .each do |child|
128
128
  # grab(child).color(:white)
129
129
  # end
130
- matrix_ratio=m.height.value/m.width.value
130
+ matrix_ratio=m.height/m.width
131
131
  # alert prev_size
132
132
  $window.on :resize do |e|
133
133
  # m.top(0)
@@ -3,24 +3,30 @@
3
3
  my_text = Atome.new(
4
4
  text: { renderers: [:browser], id: :text1, type: :text, parents: [:view], children: [], visual: { size: 33 },
5
5
  data: 'My first text!', left: 120, top: 33, width: 199, height: 33,
6
- color: { renderers: [:browser], id: :c31, type: :color, parents: [:text1], children: [],
7
- red: 0.6, green: 0.6, blue: 0.6, alpha: 1 }
6
+
8
7
  }
9
8
  )
10
9
 
10
+ Atome.new(color: { renderers: [:browser], id: :c31, type: :color, parents: [:text1], children: [],
11
+ red: 0.6, green: 0.6, blue: 0.6, alpha: 1 })
12
+
11
13
  wait 1 do
12
14
  my_text.data(:kool)
13
15
  end
14
16
 
15
17
  text({ id: :the_text, left: 0 })
16
18
 
17
- text2 = Atome.new(
18
- text: { renderers: [:browser], id: :text2, type: :text, parents: [:view], children: [], visual: { size: 33 },
19
- data: 'My second text!', left: 333, top: 33, width: 199, height: 33,
20
- color: { renderers: [:browser], id: :c31, type: :color, parents: [:text1], children: [],
21
- red: 0.6, green: 0.6, blue: 0.6, alpha: 1 }
22
- }
19
+ text2=Atome.new(
20
+ text: { renderers: [:browser], id: :text2, type: :text, parents: [:view], children: [], visual: { size: 33 },
21
+ data: 'My second text!', left: 333, top: 33, width: 199, height: 33,
22
+
23
+ }
23
24
  )
25
+
26
+
27
+
28
+ Atome.new(color: { renderers: [:browser], id: :c33, type: :color, parents: [:text2], children: [],
29
+ red: 0.6, green: 0.6, blue: 0.1, alpha: 1 })
24
30
  wait 2 do
25
31
  text2.data(:ok)
26
32
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  separator=120
4
4
  b=box({ left: separator, id: :test_box })
5
- c=box({ left: b.left.value+separator })
6
- d=box({ left: c.left.value+separator })
7
- e=box({ left: d.left.value+separator })
5
+ c=box({ left: b.left+separator })
6
+ d=box({ left: c.left+separator })
7
+ e=box({ left: d.left+separator })
8
8
 
9
9
  b.touch(:down) do
10
10
  b.color(:red)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3.7.3
4
+ version: 0.5.3.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Eric Godard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-03 00:00:00.000000000 Z
11
+ date: 2023-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arduino_firmata
@@ -394,6 +394,7 @@ files:
394
394
  - lib/atome/atome.rb
395
395
  - lib/atome/extensions/atome.rb
396
396
  - lib/atome/extensions/geolocation.rb
397
+ - lib/atome/extensions/mathematic.rb
397
398
  - lib/atome/extensions/matrix.rb
398
399
  - lib/atome/extensions/ping.rb
399
400
  - lib/atome/extensions/sha.rb
@@ -556,6 +557,7 @@ files:
556
557
  - vendor/assets/src/medias/images/atome.svg
557
558
  - vendor/assets/src/medias/images/ballanim.png
558
559
  - vendor/assets/src/medias/images/blank.png
560
+ - vendor/assets/src/medias/images/green_planet.png
559
561
  - vendor/assets/src/medias/images/icons/email.svg
560
562
  - vendor/assets/src/medias/images/icons/mail_gray.svg
561
563
  - vendor/assets/src/medias/images/icons/mail_green.svg