lib/atome/helpers/utilities.rb in atome-0.5.2.8 vs lib/atome/helpers/utilities.rb in atome-0.5.3.2

- old
+ new

@@ -26,15 +26,16 @@ def history(property, value) "historize : #{property} #{value}" end - def broadcasting(altered_particle, value) + def broadcasting(element) + params=instance_variable_get("@#{element}") @broadcast.each_value do |particle_monitored| - if particle_monitored[:particles].include?(altered_particle) + if particle_monitored[:particles].include?(element) code_found=particle_monitored[:code] - instance_exec(self, altered_particle, value, &code_found) if code_found.is_a?(Proc) + instance_exec(self, element, params, &code_found) if code_found.is_a?(Proc) end end end public @@ -97,7 +98,45 @@ end end def refresh collapse + end + + def collector(params = {}, &bloc) + atome_type = :collector + generated_render = params[:renderers] || [] + generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}" + generated_parents = params[:parents] || [id.value] + generated_children = params[:children] || [] + params = atome_common(atome_type, generated_id, generated_render, generated_parents, generated_children, params) + Batch.new({ atome_type => params }, &bloc) + end + + def each(&proc) + value.each do |val| + instance_exec(val, &proc) if proc.is_a?(Proc) + end + end + + def [](range) + if value[range].class == Atome + return value[range] + elsif value[range].class == Array + collector_object = Object.collector({}) + collected_atomes = [] + value[range].each do |atome_found| + collected_atomes << atome_found + end + collector_object.data(collected_atomes) + + return collector_object + end + + end + + def set(params) + params.each do |particle, value| + send(particle, value) + end end end