atome 0.5.1.1 → 0.5.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +9 -5
- data/app_builder_helpers/Rakefile +1 -1
- data/exe/atome +1 -1
- data/lib/atome/{atome_meta_engine.rb → atome.rb} +20 -22
- data/lib/atome/extensions/atome.rb +2 -2
- data/lib/atome/genesis/generators/atome.rb +25 -0
- data/lib/atome/genesis/generators/event.rb +16 -0
- data/lib/atome/genesis/generators/identity.rb +14 -2
- data/lib/atome/genesis/generators/spatial.rb +1 -0
- data/lib/atome/genesis/generators/utility.rb +18 -1
- data/lib/atome/genesis/genesis.rb +4 -9
- data/lib/atome/helpers/callbacks.rb +80 -0
- data/lib/atome/helpers/essentials.rb +6 -4
- data/lib/atome/helpers/sanitizer.rb +1 -20
- data/lib/atome/helpers/utilities.rb +8 -11
- data/lib/atome/kernel/essentials.rb +0 -7
- data/lib/atome/kernel/universe.rb +27 -10
- data/lib/atome/presets/atome.rb +27 -5
- data/lib/atome/renderers/browser/atome.rb +22 -20
- data/lib/atome/renderers/browser/browser.rb +12 -143
- data/lib/atome/renderers/browser/event.rb +56 -1
- data/lib/atome/renderers/browser/helpers/animation_helper.rb +0 -0
- data/lib/atome/renderers/browser/helpers/browser_helper.rb +18 -0
- data/lib/atome/renderers/browser/helpers/color_helper.rb +35 -0
- data/lib/atome/renderers/browser/helpers/drag_helper.rb +39 -0
- data/lib/atome/renderers/browser/helpers/effect_helper.rb +22 -0
- data/lib/atome/renderers/browser/helpers/image_helper.rb +27 -0
- data/lib/atome/renderers/browser/helpers/shadow_helper.rb +33 -0
- data/lib/atome/renderers/browser/helpers/shape_helper.rb +22 -0
- data/lib/atome/renderers/browser/helpers/text_helper.rb +26 -0
- data/lib/atome/renderers/browser/helpers/video_helper.rb +43 -0
- data/lib/atome/renderers/browser/helpers/web_helper.rb +30 -0
- data/lib/atome/renderers/browser/identity.rb +5 -1
- data/lib/atome/renderers/browser/spatial.rb +4 -3
- data/lib/atome/renderers/browser/utility.rb +18 -5
- data/lib/atome/renderers/headless/headless.rb +10 -0
- data/lib/atome/renderers/headless/utility.rb +6 -0
- data/lib/atome/renderers/html/html.rb +1 -1
- data/lib/atome/renderers/html/spatial.rb +1 -1
- data/lib/atome/renderers/html/utility.rb +2 -0
- data/lib/atome/renderers/renderer.rb +13 -0
- data/lib/atome/renderers/server/server.rb +10 -0
- data/lib/atome/renderers/server/utility.rb +6 -0
- data/lib/atome/version.rb +1 -1
- data/lib/atome.rb +5 -2
- data/sig/atome.rbs +1 -0
- data/vendor/assets/build/css/style.css +2 -1
- data/vendor/assets/build/index.html +9 -6
- data/vendor/assets/build/js/atome/atome.js +150 -72
- data/vendor/assets/build/js/atome/atome_helpers/atome_animate.js +65 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_drag.js +85 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_file.js +7 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_sort.js +20 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_time.js +10 -0
- data/vendor/assets/build/js/atome/atome_helpers/atome_video.js +12 -0
- data/vendor/assets/build/js/third_parties/popmotion.min.js +1 -1
- data/vendor/assets/build/js/third_parties/sortable.min.js +2 -0
- data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +36 -0
- data/vendor/assets/build/medias/rubies/examples/_animation.rb +46 -0
- data/vendor/assets/build/medias/rubies/examples/at.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/box.rb +4 -7
- data/vendor/assets/build/medias/rubies/examples/code.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/drag.rb +27 -33
- data/vendor/assets/build/medias/rubies/examples/fullscreen.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/height.rb +5 -2
- data/vendor/assets/build/medias/rubies/examples/{_id.rb → id.rb} +0 -0
- data/vendor/assets/build/medias/rubies/examples/left.rb +5 -2
- data/vendor/assets/build/medias/rubies/examples/link.rb +20 -0
- data/vendor/assets/build/medias/rubies/examples/monitoring.rb +14 -1
- data/vendor/assets/build/medias/rubies/examples/mute.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/on.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/{parent.rb → parents.rb} +6 -6
- data/vendor/assets/build/medias/rubies/examples/pause.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/play.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/{_read.rb → read.rb} +4 -2
- data/vendor/assets/build/medias/rubies/examples/refresh.rb +8 -0
- data/vendor/assets/build/medias/rubies/examples/right.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/rotate.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/schedule.rb +7 -6
- data/vendor/assets/build/medias/rubies/examples/smooth.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/sort.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/time.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/top.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/touch.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/video.rb +32 -23
- data/vendor/assets/build/medias/rubies/examples/wait.rb +8 -3
- data/vendor/assets/build/medias/rubies/examples/web.rb +7 -4
- data/vendor/assets/build/medias/rubies/examples/width.rb +6 -2
- data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
- data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
- data/vendor/assets/build/medias/videos/starwars.mov +0 -0
- data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
- metadata +46 -11
- data/lib/atome/processors/utilities.rb +0 -10
- data/vendor/assets/build/medias/rubies/examples/_code.rb +0 -12
- data/vendor/assets/build/medias/rubies/examples/_link.rb +0 -17
- data/vendor/assets/build/medias/rubies/examples/_on.rb +0 -18
- data/vendor/assets/build/medias/rubies/examples/_refresh.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 108def7ca1abaccd885638fdea127766d1f97c4ac2559faee3eec445b52bdbac
|
4
|
+
data.tar.gz: bf00b2ccb9e339a08c16221964b11cd6c2440cc415f6886bef2e4c18ac1967f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ecf2a30c425a8b46f88f08cd5b436d6298dd36b8db8984a50190a15a360639c6ac161725c3c5a7b327c740927032315a46a988fbdf5790fe830e31a5d22d4a4
|
7
|
+
data.tar.gz: 5585b8e500d715c86799172790bcc7be0bbc67cfbc438a6fedf03be8aecfea287df999588d4771d4c50f6a62dbad35fa2002f387b425fc602de776c9ff310ca0
|
data/Rakefile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rake/testtask'
|
5
5
|
|
6
6
|
Rake::TestTask.new(:test) do |t|
|
7
|
-
t.libs <<
|
8
|
-
t.libs <<
|
9
|
-
t.test_files = FileList[
|
7
|
+
t.libs << 'test'
|
8
|
+
t.libs << 'lib'
|
9
|
+
t.test_files = FileList['test/**/test_*.rb']
|
10
10
|
end
|
11
11
|
|
12
12
|
task default: :test
|
@@ -19,6 +19,10 @@ task :test_browser do
|
|
19
19
|
`cd test/test_app;atome update;atome run guard`
|
20
20
|
end
|
21
21
|
|
22
|
+
task :run_browser do
|
23
|
+
`cd test/test_app;atome run guard`
|
24
|
+
end
|
25
|
+
|
22
26
|
task :test_server do
|
23
27
|
FileUtils.copy_entry('vendor/assets/build/js/', 'test/test_app/build/js/')
|
24
28
|
FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/css/')
|
@@ -107,6 +107,7 @@ def build_user_code(user_project_path, source_code)
|
|
107
107
|
File.open(application_js, 'w') do |f|
|
108
108
|
f.puts application_content
|
109
109
|
end
|
110
|
+
# minimize_application(user_project_path)
|
110
111
|
end
|
111
112
|
|
112
113
|
def minimize_aui(user_project_path)
|
@@ -215,7 +216,6 @@ task :build_user_code, :user_project_path, :production do |_t, args|
|
|
215
216
|
user_project_path = args[:user_project_path]
|
216
217
|
source_code = "#{user_project_path}/application/index.rb"
|
217
218
|
build_user_code(user_project_path, source_code)
|
218
|
-
minimize_application(user_project_path)
|
219
219
|
end
|
220
220
|
|
221
221
|
task :system_builder, :user_project_path, :production do |_t, args|
|
data/exe/atome
CHANGED
@@ -13,12 +13,15 @@ class Atome
|
|
13
13
|
|
14
14
|
def initialize(atomes = {}, &atomes_proc)
|
15
15
|
atomes.each_value do |elements|
|
16
|
+
# the instance variable below contain the id all any atomes that need to be informed when changes occurs
|
16
17
|
@broadcast = {}
|
17
|
-
|
18
|
-
|
18
|
+
@at_time = {}
|
19
|
+
# now we store the proc in a an atome's property called :bloc
|
20
|
+
elements[:code] = atomes_proc if atomes_proc
|
19
21
|
@atome = elements
|
20
|
-
#
|
21
|
-
type
|
22
|
+
# we initiate the rendering, eg for for browser we will call :browser_type generate method in identity.rb file
|
23
|
+
create_particle(:type, @atome[:type])
|
24
|
+
collapse
|
22
25
|
end
|
23
26
|
end
|
24
27
|
|
@@ -27,7 +30,8 @@ class Atome
|
|
27
30
|
if params
|
28
31
|
# the line below execute the proc created when using the build_particle method
|
29
32
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
30
|
-
|
33
|
+
params = sanitize(element, params)
|
34
|
+
create_particle(element, params, &user_proc)
|
31
35
|
else
|
32
36
|
get_particle(element, &user_proc)
|
33
37
|
end
|
@@ -37,7 +41,8 @@ class Atome
|
|
37
41
|
def additional_particle_methods(element, &method_proc)
|
38
42
|
Atome.define_method "#{element}=" do |params = nil, &user_proc|
|
39
43
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
40
|
-
|
44
|
+
params = sanitize(element, params)
|
45
|
+
create_particle(element, params, &user_proc)
|
41
46
|
end
|
42
47
|
end
|
43
48
|
|
@@ -45,7 +50,7 @@ class Atome
|
|
45
50
|
Atome.define_method element do |params = nil, &user_proc|
|
46
51
|
if params
|
47
52
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
48
|
-
params =
|
53
|
+
params = sanitize(element, params)
|
49
54
|
Atome.new({ element => params })
|
50
55
|
else
|
51
56
|
get_atome(element, &user_proc)
|
@@ -59,15 +64,9 @@ class Atome
|
|
59
64
|
end
|
60
65
|
end
|
61
66
|
|
62
|
-
def
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def run_optional_proc(proc_name, atome = self, value = '')
|
69
|
-
option_found = Universe.get_optionals_methods(proc_name)
|
70
|
-
atome.instance_exec(value, &option_found) if option_found.is_a?(Proc)
|
67
|
+
def run_optional_proc(proc_name, atome = self, value = '', &user_proc)
|
68
|
+
option_found = Universe.get_optional_method(proc_name)
|
69
|
+
atome.instance_exec(value,user_proc, &option_found) if option_found.is_a?(Proc)
|
71
70
|
end
|
72
71
|
|
73
72
|
def inject_value(element, value)
|
@@ -84,7 +83,7 @@ class Atome
|
|
84
83
|
|
85
84
|
# the line below is used for ephemera atomes
|
86
85
|
attr_accessor :property, :value, :real_atome, :user_proc
|
87
|
-
attr_reader :atome, :structure
|
86
|
+
attr_reader :atome, :structure, :at_time
|
88
87
|
|
89
88
|
def set(value)
|
90
89
|
@real_atome[@property] = value
|
@@ -93,11 +92,10 @@ class Atome
|
|
93
92
|
def create_particle(element, value, &user_proc)
|
94
93
|
return false unless security_pass(element, value)
|
95
94
|
|
96
|
-
run_optional_proc("
|
97
|
-
store_value(element, value)
|
98
|
-
run_optional_proc("post_save_#{element}".to_sym, self, value)
|
95
|
+
run_optional_proc("pre_render_#{element}".to_sym, self, value, &user_proc)
|
99
96
|
rendering(element, value, &user_proc)
|
100
|
-
run_optional_proc("post_render_#{element}".to_sym, self, value)
|
97
|
+
run_optional_proc("post_render_#{element}".to_sym, self, value, &user_proc)
|
98
|
+
store_value(element, value)
|
101
99
|
self
|
102
100
|
end
|
103
101
|
|
@@ -111,7 +109,7 @@ class Atome
|
|
111
109
|
virtual_atome.real_atome = @atome
|
112
110
|
virtual_atome.property = element
|
113
111
|
virtual_atome.user_proc = user_proc
|
114
|
-
run_optional_proc("pre_get_#{element}".to_sym, virtual_atome)
|
112
|
+
run_optional_proc("pre_get_#{element}".to_sym, virtual_atome, &user_proc)
|
115
113
|
virtual_atome
|
116
114
|
end
|
117
115
|
|
@@ -3,6 +3,23 @@
|
|
3
3
|
generator = Genesis.generator
|
4
4
|
|
5
5
|
generator.build_atome(:color)
|
6
|
+
generator.build_sanitizer(:color) do |params|
|
7
|
+
parent_found = found_parents_and_renderers[:parent]
|
8
|
+
render_found = found_parents_and_renderers[:renderers]
|
9
|
+
default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
|
10
|
+
parents: parent_found,
|
11
|
+
red: 0, green: 0, blue: 0, alpha: 1 }
|
12
|
+
params = create_color_hash(params) unless params.instance_of? Hash
|
13
|
+
default_params.merge!(params)
|
14
|
+
end
|
15
|
+
|
16
|
+
generator.build_sanitizer(:video) do |params|
|
17
|
+
parent_found = found_parents_and_renderers[:parent]
|
18
|
+
render_found = found_parents_and_renderers[:renderers]
|
19
|
+
default_params = { renderers: render_found, id: "video_#{Universe.atomes.length}", type: :video,
|
20
|
+
parents: parent_found }
|
21
|
+
default_params.merge!(params)
|
22
|
+
end
|
6
23
|
generator.build_atome(:shadow)
|
7
24
|
generator.build_atome(:shape)
|
8
25
|
generator.build_atome(:text)
|
@@ -11,3 +28,11 @@ generator.build_atome(:video)
|
|
11
28
|
generator.build_atome(:code)
|
12
29
|
generator.build_atome(:audio)
|
13
30
|
generator.build_atome(:element)
|
31
|
+
generator.build_atome(:web)
|
32
|
+
generator.build_sanitizer(:element) do |params|
|
33
|
+
parent_found = found_parents_and_renderers[:parent]
|
34
|
+
render_found = []
|
35
|
+
default_params = { renderers: render_found, id: "element_#{Universe.atomes.length}", type: :element,
|
36
|
+
parents: parent_found }
|
37
|
+
default_params.merge!(params)
|
38
|
+
end
|
@@ -3,3 +3,19 @@
|
|
3
3
|
generator = Genesis.generator
|
4
4
|
|
5
5
|
generator.build_particle(:touch)
|
6
|
+
generator.build_particle(:play)
|
7
|
+
generator.build_particle(:time)
|
8
|
+
generator.build_particle(:pause)
|
9
|
+
generator.build_particle(:on)
|
10
|
+
generator.build_particle(:fullscreen)
|
11
|
+
generator.build_particle(:mute)
|
12
|
+
# TODO : add the at event to ny particle : (width, left, ...) maybe use monitor particle
|
13
|
+
generator.build_particle(:at)
|
14
|
+
generator.build_particle(:drag)
|
15
|
+
generator.build_sanitizer(:drag) do |params|
|
16
|
+
params = { move: true } if params == true
|
17
|
+
params
|
18
|
+
end
|
19
|
+
generator.build_particle(:sort) do |_value, sort_proc|
|
20
|
+
@sort_proc = sort_proc
|
21
|
+
end
|
@@ -5,9 +5,21 @@ generator = Genesis.generator
|
|
5
5
|
generator.build_particle(:type)
|
6
6
|
generator.build_particle(:parents)
|
7
7
|
generator.build_particle(:children)
|
8
|
+
generator.build_particle(:link) do |child_id|
|
9
|
+
child_found = grab(child_id)
|
10
|
+
child_found.atome[:parents] << @atome[:id]
|
11
|
+
child_found.refresh
|
12
|
+
end
|
8
13
|
generator.build_particle(:id)
|
9
|
-
|
10
|
-
|
14
|
+
generator.build_sanitizer(:id) do |params|
|
15
|
+
if @atome[:id] != params
|
16
|
+
Universe.update_atome_id(params, self, @atome[:id])
|
17
|
+
else
|
18
|
+
Universe.add_to_atomes(params, self)
|
19
|
+
end
|
20
|
+
params
|
21
|
+
end
|
22
|
+
generator.build_option(:pre_render_parents) do |parents_id_found|
|
11
23
|
parents_id_found.each do |parents_id|
|
12
24
|
parents_found = grab(parents_id)
|
13
25
|
parents_found.children << id if parents_found
|
@@ -3,7 +3,11 @@
|
|
3
3
|
generator = Genesis.generator
|
4
4
|
|
5
5
|
generator.build_particle(:renderers)
|
6
|
-
generator.build_particle(:
|
6
|
+
generator.build_particle(:code)
|
7
|
+
generator.build_particle(:run) do |params|
|
8
|
+
code_found = @atome[:code]
|
9
|
+
instance_exec(params, &code_found) if code_found.is_a?(Proc)
|
10
|
+
end
|
7
11
|
generator.build_particle(:broadcast)
|
8
12
|
generator.build_particle(:additional)
|
9
13
|
generator.build_particle(:data)
|
@@ -12,3 +16,16 @@ generator.build_particle(:delete) do
|
|
12
16
|
end
|
13
17
|
generator.build_particle(:clear)
|
14
18
|
generator.build_particle(:path)
|
19
|
+
generator.build_particle(:schedule) do |date, proc|
|
20
|
+
date = date.to_s
|
21
|
+
delimiters = [',', ' ', ':', '-']
|
22
|
+
format_date = date.split(Regexp.union(delimiters))
|
23
|
+
Universe.renderer_list.each do |renderer|
|
24
|
+
send("#{renderer}_schedule", format_date, &proc)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
generator.build_particle(:read) do |file, proc|
|
28
|
+
Universe.renderer_list.each do |renderer|
|
29
|
+
send("#{renderer}_reader", file, &proc)
|
30
|
+
end
|
31
|
+
end
|
@@ -23,13 +23,9 @@ class Atome
|
|
23
23
|
# we add the new method to the atome's collection of methods
|
24
24
|
Universe.add_to_atome_list(atome_name)
|
25
25
|
auto_render_generator(atome_name)
|
26
|
-
auto_sanitizer_generator(atome_name)
|
27
26
|
new_atome(atome_name, &atome_proc)
|
28
27
|
end
|
29
28
|
|
30
|
-
def auto_sanitizer_generator(element)
|
31
|
-
build_sanitizer_method("sanitize_#{element}")
|
32
|
-
end
|
33
29
|
def auto_render_generator(element)
|
34
30
|
Universe.renderer_list.each do |render_engine|
|
35
31
|
build_render_method("#{render_engine}_#{element}")
|
@@ -40,12 +36,11 @@ class Atome
|
|
40
36
|
new_render_engine(renderer_name, &method_proc)
|
41
37
|
end
|
42
38
|
|
43
|
-
def
|
44
|
-
|
39
|
+
def build_sanitizer(method_name, &method_proc)
|
40
|
+
Universe.add_sanitizer_method(method_name.to_sym, &method_proc)
|
45
41
|
end
|
46
42
|
|
47
|
-
|
48
|
-
|
49
|
-
Universe.add_optionals_methods(method_name.to_sym, &method_proc)
|
43
|
+
def build_option(method_name, &method_proc)
|
44
|
+
Universe.add_optional_method(method_name.to_sym, &method_proc)
|
50
45
|
end
|
51
46
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# callbacks methods here
|
4
|
+
class Atome
|
5
|
+
private
|
6
|
+
|
7
|
+
attr_accessor :drag_start_proc, :drag_move_proc, :drag_end_proc,
|
8
|
+
:play_start_proc, :play_active_proc, :play_end_proc,
|
9
|
+
:animation_start_proc, :animation_active_proc, :animation_stop_proc
|
10
|
+
|
11
|
+
public
|
12
|
+
|
13
|
+
def schedule_callback(proc)
|
14
|
+
instance_exec(&proc) if proc.is_a?(Proc)
|
15
|
+
end
|
16
|
+
|
17
|
+
def read_callback(file, proc)
|
18
|
+
instance_exec(file, &proc) if proc.is_a?(Proc)
|
19
|
+
end
|
20
|
+
|
21
|
+
def time_callback(current_time)
|
22
|
+
@atome[:time] = current_time
|
23
|
+
return unless @at_time[:time] && (current_time.round(1) > @at_time[:time] && @at_time[:used].nil?)
|
24
|
+
|
25
|
+
proc = @at_time[:code]
|
26
|
+
instance_exec(current_time, &proc) if proc.is_a?(Proc)
|
27
|
+
@at_time[:used] = true
|
28
|
+
end
|
29
|
+
|
30
|
+
def drag_start_callback(page_x, page_y, left_val, top_val)
|
31
|
+
@atome[:left] = left_val
|
32
|
+
@atome[:top] = top_val
|
33
|
+
proc = @drag_start_proc
|
34
|
+
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
35
|
+
end
|
36
|
+
|
37
|
+
def drag_move_callback(page_x, page_y, left_val, top_val)
|
38
|
+
proc = @drag_move_proc
|
39
|
+
@atome[:left] = left_val
|
40
|
+
@atome[:top] = top_val
|
41
|
+
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
42
|
+
end
|
43
|
+
|
44
|
+
def drag_end_callback(page_x, page_y, left_val, top_val)
|
45
|
+
@atome[:left] = left_val
|
46
|
+
@atome[:top] = top_val
|
47
|
+
proc = @drag_end_proc
|
48
|
+
instance_exec({ pageX: page_x, pageY: page_y, left: left_val, top: top_val }, &proc) if proc.is_a?(Proc)
|
49
|
+
end
|
50
|
+
|
51
|
+
# sort callbacks
|
52
|
+
def sort_callback(atome)
|
53
|
+
sort_proc = @sort_proc
|
54
|
+
instance_exec(atome, &sort_proc) if sort_proc.is_a?(Proc)
|
55
|
+
end
|
56
|
+
|
57
|
+
# def play_start_callback(particle_found, value)
|
58
|
+
# @atome[particle_found] = value
|
59
|
+
# play_proc = play_start_proc
|
60
|
+
# anim_proc = animation_start_proc
|
61
|
+
# instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
|
62
|
+
# instance_exec({ @atome[particle_found] => value }, &anim_proc) if anim_proc.is_a?(Proc)
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# def play_active_callback(particle_found, value)
|
66
|
+
# @atome[particle_found] = value
|
67
|
+
# play_proc = play_active_proc
|
68
|
+
# anim_proc = animation_active_proc
|
69
|
+
# instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
|
70
|
+
# instance_exec({ @atome[particle_found] => value }, &anim_proc) if anim_proc.is_a?(Proc)
|
71
|
+
# end
|
72
|
+
#
|
73
|
+
# def play_stop_callback(particle_found, value)
|
74
|
+
# @atome[particle_found] = value
|
75
|
+
# play_proc = play_end_proc
|
76
|
+
# anim_proc = animation_end_proc
|
77
|
+
# instance_exec({ @atome[particle_found] => value }, &play_proc) if play_proc.is_a?(Proc)
|
78
|
+
# instance_exec({ @atome[particle_found] => value }, &anim_proc) if anim_proc.is_a?(Proc)
|
79
|
+
# end
|
80
|
+
end
|
@@ -4,15 +4,17 @@
|
|
4
4
|
module Essentials
|
5
5
|
@default_params = {
|
6
6
|
render_engines: [:browser],
|
7
|
+
animation: { type: :animation },
|
7
8
|
element: { type: :element, renderers: [] },
|
8
|
-
box: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99
|
9
|
-
|
10
|
-
|
9
|
+
box: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99,
|
10
|
+
left: 100, top: 100 },
|
11
|
+
circle: { renderers: '', id: '', type: :shape, parents: [], children: [], width: 99, height: 99,
|
12
|
+
left: 100, top: 100, smooth: '100%' },
|
11
13
|
shape: { renderers: '', id: '', width: 100, type: :shape, height: 100, left: 100, top: 100,
|
12
14
|
color: { left: 0, top: 0, z: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
|
13
15
|
generator: :manual },
|
14
16
|
text: { type: :text, parents: [:view], children: [], visual: { size: 25 },
|
15
|
-
data: 'this is a text sample',
|
17
|
+
data: 'this is a text sample', width: 199, height: 33 },
|
16
18
|
drm: { type: :drm },
|
17
19
|
shadow: {}
|
18
20
|
}
|
@@ -10,7 +10,7 @@ class Atome
|
|
10
10
|
{ red: split_data[0].to_f / 100, green: split_data[1].to_f / 100, blue: split_data[2].to_f / 100 }
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def found_parents_and_renderers
|
14
14
|
if @atome
|
15
15
|
parent_found = [@atome[:id]]
|
16
16
|
render_found = @atome[:renderers]
|
@@ -20,23 +20,4 @@ class Atome
|
|
20
20
|
end
|
21
21
|
{ parent: parent_found, renderers: render_found }
|
22
22
|
end
|
23
|
-
|
24
|
-
def sanitize_element(params)
|
25
|
-
parent_found = found_parent_and_render[:parent]
|
26
|
-
render_found = found_parent_and_render[:renderers]
|
27
|
-
default_params = { renderers: render_found, id: "element_#{Universe.atomes.length}", type: :element,
|
28
|
-
parents: parent_found }
|
29
|
-
default_params.merge!(params)
|
30
|
-
end
|
31
|
-
|
32
|
-
def sanitize_color(params)
|
33
|
-
parent_found = found_parent_and_render[:parent]
|
34
|
-
render_found = found_parent_and_render[:renderers]
|
35
|
-
default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
|
36
|
-
parents: parent_found,
|
37
|
-
red: 0, green: 0, blue: 0, alpha: 1 }
|
38
|
-
params = create_color_hash(params) unless params.instance_of? Hash
|
39
|
-
default_params.merge!(params)
|
40
|
-
end
|
41
|
-
|
42
23
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
class Atome
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
7
|
+
def collapse
|
8
8
|
@atome.each do |element, value|
|
9
9
|
send(element, value) unless element == :type
|
10
10
|
end
|
@@ -14,19 +14,12 @@ class Atome
|
|
14
14
|
true
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def sanitize(element, params)
|
18
|
+
bloc_found = Universe.get_sanitizer_method(element)
|
19
|
+
params = instance_exec(params, &bloc_found) if bloc_found.is_a?(Proc)
|
18
20
|
params
|
19
21
|
end
|
20
22
|
|
21
|
-
def atome_sanitizer(element, params)
|
22
|
-
send("sanitize_#{element}", params)
|
23
|
-
end
|
24
|
-
|
25
|
-
def sanitize_particle(element, value, &user_proc)
|
26
|
-
value = particle_sanitizer(element, value)
|
27
|
-
create_particle(element, value, &user_proc)
|
28
|
-
end
|
29
|
-
|
30
23
|
def identity_generator
|
31
24
|
{ date: Time.now, location: geolocation }
|
32
25
|
end
|
@@ -54,4 +47,8 @@ class Atome
|
|
54
47
|
value = particle.value
|
55
48
|
real_atome[property] << value
|
56
49
|
end
|
50
|
+
|
51
|
+
def refresh
|
52
|
+
collapse
|
53
|
+
end
|
57
54
|
end
|
@@ -4,13 +4,6 @@
|
|
4
4
|
class Atome
|
5
5
|
private
|
6
6
|
|
7
|
-
def rendering(element_to_render, content, &user_proc)
|
8
|
-
render_engines = @atome[:renderers]
|
9
|
-
render_engines.each do |render_engine|
|
10
|
-
send("#{render_engine}_#{element_to_render}", content, &user_proc)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
7
|
def get(element)
|
15
8
|
@atome[element]
|
16
9
|
end
|
@@ -6,7 +6,8 @@ class Universe
|
|
6
6
|
@atome_list = []
|
7
7
|
@particle_list = []
|
8
8
|
@renderer_list = %i[html browser headless server]
|
9
|
-
@
|
9
|
+
@options = {}
|
10
|
+
@sanitizers = {}
|
10
11
|
|
11
12
|
class << self
|
12
13
|
attr_reader :atomes, :renderer_list, :atome_list, :particle_list
|
@@ -15,22 +16,38 @@ class Universe
|
|
15
16
|
instance_variable_get('@particle_list').push(particle)
|
16
17
|
end
|
17
18
|
|
18
|
-
def
|
19
|
+
def add_optional_method(method_name, &method_proc)
|
19
20
|
# this method is used to add optional methods
|
20
|
-
instance_variable_get('@
|
21
|
+
instance_variable_get('@options').merge!({ method_name => method_proc })
|
21
22
|
end
|
22
23
|
|
23
|
-
def
|
24
|
+
def get_optional_method(method_name)
|
24
25
|
# this method is used to add optional methods
|
25
|
-
instance_variable_get('@
|
26
|
+
instance_variable_get('@options')[method_name]
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_sanitizer_method(method_name, &method_proc)
|
30
|
+
# this method is used to add sanitizer methods
|
31
|
+
instance_variable_get('@sanitizers').merge!({ method_name => method_proc })
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_sanitizer_method(method_name)
|
35
|
+
# this method is used to add optional methods
|
36
|
+
instance_variable_get('@sanitizers')[method_name]
|
26
37
|
end
|
27
38
|
|
28
39
|
def add_to_atome_list(atome)
|
29
40
|
instance_variable_get('@atome_list').push(atome)
|
30
41
|
end
|
31
42
|
|
32
|
-
def add_to_atomes(atome)
|
33
|
-
instance_variable_get('@atomes').merge!(atome)
|
43
|
+
def add_to_atomes(id, atome)
|
44
|
+
# instance_variable_get('@atomes').merge!(atome)
|
45
|
+
@atomes[id] = atome
|
46
|
+
end
|
47
|
+
|
48
|
+
def update_atome_id(id, atome, prev_id)
|
49
|
+
@atomes[id] = atome
|
50
|
+
@atomes.delete(prev_id)
|
34
51
|
end
|
35
52
|
|
36
53
|
def app_identity
|
@@ -41,9 +58,9 @@ class Universe
|
|
41
58
|
# and finally the object is 3 as this the third object created by the main server
|
42
59
|
end
|
43
60
|
|
44
|
-
def change_atome_id(prev_id, new_id)
|
45
|
-
|
46
|
-
end
|
61
|
+
# def change_atome_id(prev_id, new_id)
|
62
|
+
# @atomes[new_id] = @atomes.delete(prev_id)
|
63
|
+
# end
|
47
64
|
|
48
65
|
def delete(id)
|
49
66
|
@atomes.delete(id)
|
data/lib/atome/presets/atome.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
# shaper creation
|
9
9
|
class Atome
|
10
10
|
def atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
11
|
-
temp_default = Essentials.default_params[atome_type]
|
11
|
+
temp_default = Essentials.default_params[atome_type] || {}
|
12
12
|
temp_default[:id] = generated_id
|
13
13
|
temp_default[:parents] = generated_parents
|
14
14
|
temp_default[:renderers] = generated_render
|
@@ -22,7 +22,7 @@ class Atome
|
|
22
22
|
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
23
23
|
generated_parents = params[:parents] || [id.value]
|
24
24
|
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
25
|
-
color_generated =
|
25
|
+
color_generated = sanitize(:color, { parents: [generated_id], red: 0.3, green: 0.3, blue: 0.3 })
|
26
26
|
params[:color] = color_generated
|
27
27
|
Atome.new({ atome_type => params }, &bloc)
|
28
28
|
end
|
@@ -34,7 +34,7 @@ class Atome
|
|
34
34
|
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
35
35
|
generated_parents = params[:parents] || [id.value]
|
36
36
|
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
37
|
-
color_generated =
|
37
|
+
color_generated = sanitize(:color, { parents: [generated_id], red: 0.6, green: 0.6, blue: 0.6 })
|
38
38
|
params[:color] = color_generated
|
39
39
|
Atome.new({ atome_type => params }, &bloc)
|
40
40
|
end
|
@@ -45,7 +45,7 @@ class Atome
|
|
45
45
|
generated_id = params[:id] || "image_#{Universe.atomes.length}"
|
46
46
|
generated_render = params[:renderers] || default_renderer
|
47
47
|
generated_parents = params[:parents] || id.value
|
48
|
-
|
48
|
+
# TODO : the line below should get the value from default params Essentials
|
49
49
|
temp_default = { renderers: generated_render, id: generated_id, type: :image, parents: [generated_parents],
|
50
50
|
children: [], width: 99, height: 99, path: './medias/images/atome.svg' }
|
51
51
|
params = temp_default.merge(params)
|
@@ -59,8 +59,30 @@ class Atome
|
|
59
59
|
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
60
60
|
generated_parents = params[:parents] || [id.value]
|
61
61
|
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
62
|
-
color_generated =
|
62
|
+
color_generated = sanitize(:color, { parents: [generated_id], red: 0.9, green: 0.9, blue: 0.9 })
|
63
63
|
params[:color] = color_generated
|
64
64
|
Atome.new({ atome_type => params }, &bloc)
|
65
65
|
end
|
66
|
+
|
67
|
+
def element(params = {}, &bloc)
|
68
|
+
atome_type = :element
|
69
|
+
generated_render = params[:renderers] || []
|
70
|
+
generated_id = params[:id] || "#{atome_type}_#{Universe.atomes.length}"
|
71
|
+
generated_parents = params[:parents] || [id.value]
|
72
|
+
params = atome_common(atome_type, generated_id, generated_render, generated_parents, params)
|
73
|
+
Atome.new({ atome_type => params }, &bloc)
|
74
|
+
end
|
75
|
+
|
76
|
+
def web(params = {}, &bloc)
|
77
|
+
default_renderer = Essentials.default_params[:render_engines]
|
78
|
+
|
79
|
+
generated_id = params[:id] || "web_#{Universe.atomes.length}"
|
80
|
+
generated_render = params[:renderers] || default_renderer
|
81
|
+
generated_parents = params[:parents] || id.value
|
82
|
+
# TODO : the line below should get the value from default params Essentials
|
83
|
+
temp_default = { renderers: generated_render, id: generated_id, type: :web, parents: [generated_parents],
|
84
|
+
children: [], width: 120, height: 120, path: 'https://www.youtube.com/embed/usQDazZKWAk' }
|
85
|
+
params = temp_default.merge(params)
|
86
|
+
Atome.new({ image: params }, &bloc)
|
87
|
+
end
|
66
88
|
end
|