atome 0.5.3.7.3 → 0.5.3.7.8

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