atome 0.4.7.0 → 0.5.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +7 -4
  4. data/Rakefile +22 -13
  5. data/app_builder_helpers/Rakefile +63 -21
  6. data/exe/atome +91 -45
  7. data/lib/atome/atome_meta_engine.rb +132 -0
  8. data/lib/atome/extensions/atome.rb +41 -0
  9. data/lib/atome/{kernel/helpers → extensions}/geolocation.rb +0 -0
  10. data/lib/atome/{kernel/helpers → extensions}/ping.rb +0 -0
  11. data/lib/atome/{kernel/helpers → extensions}/sha.rb +3 -1
  12. data/lib/atome/genesis/generators/atome.rb +13 -0
  13. data/lib/atome/{renderers/headless/properties/generator.rb → genesis/generators/communication.rb} +2 -0
  14. data/lib/atome/genesis/generators/effect.rb +6 -0
  15. data/lib/atome/genesis/generators/event.rb +5 -0
  16. data/lib/atome/genesis/generators/geometry.rb +6 -0
  17. data/lib/atome/genesis/generators/identity.rb +15 -0
  18. data/lib/atome/genesis/generators/material.rb +10 -0
  19. data/lib/atome/genesis/generators/spatial.rb +12 -0
  20. data/lib/atome/genesis/generators/utility.rb +14 -0
  21. data/lib/atome/genesis/genesis.rb +51 -0
  22. data/lib/atome/genesis/sparkle.rb +58 -0
  23. data/lib/atome/helpers/color_helper/color/cmyk.rb +263 -0
  24. data/lib/atome/helpers/color_helper/color/css.rb +7 -0
  25. data/lib/atome/helpers/color_helper/color/grayscale.rb +197 -0
  26. data/lib/atome/helpers/color_helper/color/hsl.rb +240 -0
  27. data/lib/atome/helpers/color_helper/color/palette/adobecolor.rb +260 -0
  28. data/lib/atome/helpers/color_helper/color/palette/gimp.rb +104 -0
  29. data/lib/atome/helpers/color_helper/color/palette/monocontrast.rb +164 -0
  30. data/lib/atome/helpers/color_helper/color/palette.rb +4 -0
  31. data/lib/atome/helpers/color_helper/color/rgb/colors.rb +167 -0
  32. data/lib/atome/helpers/color_helper/color/rgb/contrast.rb +57 -0
  33. data/lib/atome/helpers/color_helper/color/rgb/metallic.rb +28 -0
  34. data/lib/atome/helpers/color_helper/color/rgb.rb +715 -0
  35. data/lib/atome/helpers/color_helper/color/yiq.rb +62 -0
  36. data/lib/atome/helpers/color_helper/color.rb +196 -0
  37. data/lib/atome/helpers/essentials.rb +42 -0
  38. data/lib/atome/helpers/sanitizer.rb +42 -0
  39. data/lib/atome/helpers/utilities.rb +57 -0
  40. data/lib/atome/kernel/essentials.rb +30 -0
  41. data/lib/atome/kernel/universe.rb +75 -26
  42. data/lib/atome/presets/atome.rb +66 -0
  43. data/lib/atome/processors/utilities.rb +10 -0
  44. data/lib/atome/renderers/browser/atome.rb +95 -0
  45. data/lib/atome/renderers/browser/browser.rb +158 -0
  46. data/lib/atome/renderers/browser/effect.rb +23 -0
  47. data/lib/atome/renderers/browser/event.rb +9 -0
  48. data/lib/atome/renderers/browser/geometry.rb +11 -0
  49. data/lib/atome/renderers/browser/identity.rb +20 -0
  50. data/lib/atome/renderers/browser/material.rb +43 -0
  51. data/lib/atome/renderers/{opal → browser}/opal_browser.rb +0 -2
  52. data/lib/atome/renderers/browser/spatial.rb +22 -0
  53. data/lib/atome/renderers/browser/utility.rb +26 -0
  54. data/lib/atome/renderers/html/atome.rb +47 -0
  55. data/lib/atome/renderers/html/effect.rb +19 -0
  56. data/lib/atome/renderers/html/event.rb +9 -0
  57. data/lib/atome/renderers/html/geometry.rb +11 -0
  58. data/lib/atome/renderers/html/html.rb +42 -0
  59. data/lib/atome/renderers/html/identity.rb +14 -0
  60. data/lib/atome/renderers/html/opal_browser.rb +6 -0
  61. data/lib/atome/renderers/html/spatial.rb +28 -0
  62. data/lib/atome/renderers/html/utility.rb +15 -0
  63. data/lib/atome/renderers/opal/atome_opal_extensions.rb +1 -1
  64. data/lib/atome/renderers/opal/extensions/atome.rb +29 -0
  65. data/lib/atome/renderers/opal/opal.rb +4 -0
  66. data/lib/atome/version.rb +1 -2
  67. data/lib/atome.rb +22 -45
  68. data/vendor/assets/application/index.rb +3 -1
  69. data/vendor/assets/application/required_example.rb +1 -0
  70. data/{lib/atome/renderers/headless/headless.rb → vendor/assets/aui.rb} +0 -0
  71. data/vendor/assets/build/css/style.css +51 -0
  72. data/vendor/assets/build/index.html +10 -7
  73. data/vendor/assets/build/js/atome/atome.js +61 -61
  74. data/{lib/atome/renderers/server/server.rb → vendor/assets/build/medias/rubies/examples/_animation.rb} +0 -0
  75. data/vendor/assets/build/medias/rubies/examples/_code.rb +12 -0
  76. data/vendor/assets/build/medias/rubies/examples/_id.rb +14 -0
  77. data/vendor/assets/build/medias/rubies/examples/_link.rb +17 -0
  78. data/vendor/assets/build/medias/rubies/examples/{on.rb → _on.rb} +3 -1
  79. data/vendor/assets/build/medias/rubies/examples/{read.rb → _read.rb} +2 -0
  80. data/vendor/assets/build/medias/rubies/examples/_refresh.rb +9 -0
  81. data/vendor/assets/build/medias/rubies/examples/atome.new.rb +13 -10
  82. data/vendor/assets/build/medias/rubies/examples/auto_height.rb +2 -0
  83. data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
  84. data/vendor/assets/build/medias/rubies/examples/blur.rb +4 -0
  85. data/vendor/assets/build/medias/rubies/examples/bottom.rb +3 -1
  86. data/vendor/assets/build/medias/rubies/examples/box.rb +15 -8
  87. data/vendor/assets/build/medias/rubies/examples/circle.rb +2 -0
  88. data/vendor/assets/build/medias/rubies/examples/clear.rb +2 -1
  89. data/vendor/assets/build/medias/rubies/examples/color.rb +47 -8
  90. data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +2 -0
  91. data/vendor/assets/build/medias/rubies/examples/delete.rb +7 -0
  92. data/vendor/assets/build/medias/rubies/examples/drag.rb +1 -0
  93. data/vendor/assets/build/medias/rubies/examples/element.rb +6 -0
  94. data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +3 -1
  95. data/vendor/assets/build/medias/rubies/examples/grab.rb +2 -0
  96. data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
  97. data/vendor/assets/build/medias/rubies/examples/image.rb +6 -2
  98. data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
  99. data/vendor/assets/build/medias/rubies/examples/monitoring.rb +20 -0
  100. data/vendor/assets/build/medias/rubies/examples/parent.rb +7 -5
  101. data/vendor/assets/build/medias/rubies/examples/repeat.rb +2 -0
  102. data/vendor/assets/build/medias/rubies/examples/right.rb +3 -1
  103. data/vendor/assets/build/medias/rubies/examples/schedule.rb +0 -4
  104. data/vendor/assets/build/medias/rubies/examples/shadow.rb +30 -0
  105. data/vendor/assets/build/medias/rubies/examples/text.rb +21 -7
  106. data/vendor/assets/build/medias/rubies/examples/touch.rb +2 -0
  107. data/vendor/assets/build/medias/rubies/examples/video.rb +2 -2
  108. data/vendor/assets/build/medias/rubies/examples/web.rb +2 -2
  109. data/vendor/assets/server/atome_server.rb +3 -5
  110. metadata +74 -174
  111. data/lib/atome/atome_native_extensions.rb +0 -5
  112. data/lib/atome/extensions/helper.rb +0 -112
  113. data/lib/atome/kernel/atome.rb +0 -99
  114. data/lib/atome/kernel/generators/generator.rb +0 -517
  115. data/lib/atome/kernel/generators/genesis.rb +0 -277
  116. data/lib/atome/kernel/generators/sanitizer.rb +0 -73
  117. data/lib/atome/kernel/generators/shapes.rb +0 -55
  118. data/lib/atome/kernel/helpers/internal_methods.rb +0 -173
  119. data/lib/atome/kernel/helpers/utilities.rb +0 -39
  120. data/lib/atome/kernel/properties/essential.rb +0 -77
  121. data/lib/atome/kernel/sparkle.rb +0 -38
  122. data/lib/atome/renderers/opal/properties/generator.rb +0 -1
  123. data/lib/atome/renderers/renderer.rb +0 -13
  124. data/lib/atome/renderers/server/properties/generator.rb +0 -9
  125. data/vendor/assets/build/js/application.js +0 -0
  126. data/vendor/assets/build/medias/audios/guitar.wav +0 -0
  127. data/vendor/assets/build/medias/images/beach.jpg +0 -0
  128. data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +0 -111
  129. data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +0 -12
  130. data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +0 -26
  131. data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +0 -27
  132. data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +0 -92
  133. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +0 -20
  134. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +0 -4
  135. data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +0 -17
  136. data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +0 -13
  137. data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +0 -22
  138. data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +0 -6
  139. data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +0 -15
  140. data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +0 -9
  141. data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +0 -9
  142. data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +0 -5
  143. data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +0 -57
  144. data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +0 -21
  145. data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +0 -18
  146. data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +0 -21
  147. data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +0 -11
  148. data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +0 -7
  149. data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +0 -26
  150. data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +0 -115
  151. data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +0 -14
  152. data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +0 -35
  153. data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +0 -14
  154. data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +0 -3
  155. data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +0 -11
  156. data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +0 -29
  157. data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +0 -12
  158. data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +0 -19
  159. data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +0 -10
  160. data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +0 -23
  161. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +0 -61
  162. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +0 -1
  163. data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +0 -23
  164. data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +0 -11
  165. data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +0 -6
  166. data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +0 -9
  167. data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +0 -23
  168. data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +0 -10
  169. data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +0 -37
  170. data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +0 -44
  171. data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +0 -28
  172. data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +0 -7
  173. data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +0 -24
  174. data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +0 -21
  175. data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +0 -64
  176. data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +0 -7
  177. data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +0 -10
  178. data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +0 -54
  179. data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +0 -13
  180. data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +0 -10
  181. data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +0 -19
  182. data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +0 -69
  183. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +0 -4
  184. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +0 -4
  185. data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +0 -47
  186. data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +0 -9
  187. data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +0 -6
  188. data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +0 -15
  189. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +0 -24
  190. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +0 -41
  191. data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +0 -41
  192. data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +0 -8
  193. data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +0 -37
  194. data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +0 -47
  195. data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +0 -7
  196. data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +0 -26
  197. data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +0 -9
  198. data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +0 -13
  199. data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +0 -12
  200. data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +0 -15
  201. data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +0 -22
  202. data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +0 -14
  203. data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +0 -19
  204. data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +0 -15
  205. data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +0 -7
  206. data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +0 -7
  207. data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +0 -24
  208. data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +0 -6
  209. data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +0 -7
  210. data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +0 -9
  211. data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +0 -15
  212. data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +0 -17
  213. data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +0 -31
  214. data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +0 -17
  215. data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +0 -19
  216. data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +0 -3
  217. data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +0 -11
  218. data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +0 -30
  219. data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +0 -1
  220. data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +0 -3
  221. data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +0 -41
  222. data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +0 -39
  223. data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +0 -9
  224. data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +0 -32
  225. data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +0 -6
  226. data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +0 -30
  227. data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +0 -7
  228. data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +0 -109
  229. data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +0 -5
  230. data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +0 -5
  231. data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +0 -6
  232. data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +0 -3
  233. data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +0 -18
  234. data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +0 -33
  235. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +0 -33
  236. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +0 -22
  237. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +0 -23
  238. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +0 -27
  239. data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +0 -26
  240. data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +0 -27
  241. data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +0 -46
  242. data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +0 -29
  243. data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +0 -17
  244. data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +0 -23
  245. data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +0 -5
  246. data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +0 -21
  247. data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +0 -10
  248. data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +0 -14
  249. data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +0 -16
  250. data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +0 -10
  251. data/vendor/assets/build/medias/rubies/examples/animation.rb +0 -0
  252. data/vendor/assets/build/medias/rubies/examples/code.rb +0 -5
  253. data/vendor/assets/build/medias/rubies/examples/link.rb +0 -11
  254. data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
  255. data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
  256. data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
  257. data/vendor/assets/build/medias/videos/starwars.mov +0 -0
  258. data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
@@ -1,277 +0,0 @@
1
- # frozen_string_literal: true
2
- # TODO: parent are not set correctly if not explicitly specified when attaching a child ex: b=box();c=b.box, c is not
3
- # attached to b
4
- # Genesis helper
5
- module GenesisHelper
6
- def broadcaster(property, value)
7
- "broadcast : #{property} #{value}"
8
- end
9
-
10
- def history(property, value)
11
- "historize : #{property} #{value}"
12
- end
13
- end
14
-
15
- # genesis kernel
16
- module GenesisKernel
17
- # particle's methods
18
- def set_new_particle(particle, value, &proc)
19
- return false unless validation(particle)
20
- # now we exec the first optional method
21
- value = Genesis.run_optional_methods_helper("#{particle}_pre_render_proc".to_sym,
22
- { method: particle, value: value, atome: self, proc: proc })
23
- # render option below
24
- Genesis.run_optional_methods_helper("#{particle}_render_proc".to_sym,
25
- { method: particle, value: value, atome: self, proc: proc })
26
- # now we exec post render optional proc
27
- value = Genesis.run_optional_methods_helper("#{particle}_post_render_proc".to_sym,
28
- { method: particle, value: value, proc: proc })
29
- broadcaster(particle, value)
30
- history(particle, value)
31
-
32
- self
33
- end
34
-
35
- def get_new_particle(particle)
36
- return false unless validation(particle)
37
-
38
- particle_instance_variable = "@#{particle}"
39
- value_get = instance_variable_get(particle_instance_variable)
40
- Genesis.run_optional_methods_helper("#{particle}_getter_pre_proc".to_sym, { value: value_get, atome: self })
41
- end
42
-
43
- def new_particle(particle, params, proc, &method_proc)
44
- if params
45
- if method_proc.is_a?(Proc)
46
- params = instance_exec(params, &method_proc)
47
- end
48
- set_new_particle(particle, params, &proc)
49
- else
50
- get_new_particle(particle)
51
- end
52
- end
53
-
54
- # atome's methods
55
-
56
- def get_new_atome(atome)
57
- return false unless validation(atome)
58
-
59
- atome_instance_variable = "@#{atome}"
60
- value_get = instance_variable_get(atome_instance_variable)
61
- Genesis.run_optional_methods_helper("#{atome}_getter_pre_proc".to_sym, { value: value_get })
62
-
63
- end
64
-
65
- def new_atome(atome, params, userproc, &method_proc)
66
- if params
67
- # the line below execute the proc associated to the method, ex Genesis.atome_creator(:color) do ...(proc)
68
- params = instance_exec(params, &method_proc) if method_proc.is_a?(Proc)
69
- params = add_essential_properties(atome, params)
70
- params = sanitizer(params)
71
- set_new_atome(atome, params, userproc)
72
- else
73
- get_new_atome(atome)
74
- end
75
- end
76
-
77
- def set_new_atome(atome, params, userproc)
78
- params[:bloc] = userproc
79
- return false unless validation(atome)
80
-
81
- instance_var = "@#{atome}"
82
- new_atome = Atome.new({}, &userproc)
83
- # now we exec the first optional method
84
- params = Genesis.run_optional_methods_helper("#{atome}_pre_save_proc".to_sym, { value: params, atome: new_atome, proc: userproc })
85
- new_atome = create_new_atomes(params[:value], instance_var, new_atome, &userproc)
86
- # now we exec the second optional method
87
- Genesis.run_optional_methods_helper("#{atome}_post_save_proc".to_sym, { value: params, atome: new_atome, proc: userproc })
88
- @dna = "#{Atome.current_user}_#{Universe.app_identity}_#{Universe.atomes.length}"
89
- new_atome
90
- end
91
-
92
- def create_new_atomes(params, instance_var, new_atome, &userproc)
93
- # new_atome = Atome.new({}, &userproc)
94
- Universe.atomes_add(new_atome, params[:id])
95
- instance_variable_set(instance_var, new_atome)
96
- # FIXME : move this to sanitizer and ensure that no reorder happen for "id" and "render" when
97
- params.each do |param, value|
98
- new_atome.send(param, value)
99
- end
100
- new_atome
101
- end
102
-
103
- def additional_atomes(atome, params)
104
- atome_instance_variable = "@#{atome}"
105
- if params
106
- instance_variable_get(atome_instance_variable).additional(params)
107
- else
108
- instance_variable_get(atome_instance_variable).additional
109
- end
110
- end
111
- end
112
-
113
- # main entry for genesis
114
- module Genesis
115
- include GenesisHelper
116
- include GenesisKernel
117
-
118
- # include ParticleGenesis
119
- @optionals_methods = {}
120
-
121
- def self.atome_creator_option(property_name, &proc)
122
- @optionals_methods[property_name] = proc
123
- end
124
-
125
- def self.run_optional_methods_helper(method_name, params, atome = nil)
126
-
127
- proc = nil
128
- proc = @optionals_methods[method_name] if @optionals_methods
129
- # it run all methods that looks like :
130
- # bloc_render_proc
131
- # render_getter_pre_proc
132
- # bloc_post_render_proc
133
-
134
- params[:atome].instance_exec(params, atome, &proc) if proc.is_a?(Proc)
135
-
136
-
137
- end
138
-
139
- def self.generate_html_renderer(method_name, &methods_proc)
140
- current_renderer = :html
141
- generated_method_name = "#{method_name}_#{current_renderer}".to_sym
142
- Atome.define_method generated_method_name do |value, atome, &user_proc|
143
- params[:atome].instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
144
- end
145
- end
146
-
147
- def self.generate_server_renderer(method_name, &methods_proc)
148
- current_renderer = :headless
149
- generated_method_name = "#{method_name}_#{current_renderer}".to_sym
150
- Atome.define_method generated_method_name do |value, atome, &user_proc|
151
- instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
152
- end
153
- end
154
-
155
- # rendering methods are generated below:
156
- def self.generate_renderers_methods(method_name)
157
- # now we auto generate all rendering methods
158
- Utilities.renderer_list.each do |render_method|
159
- define_singleton_method("generate_#{render_method}_renderer") do |method_name, &methods_proc|
160
- current_renderer = render_method
161
- generated_method_name = "#{method_name}_#{current_renderer}".to_sym
162
- Atome.define_method generated_method_name do |value, atome, &user_proc|
163
- instance_exec(value, atome, user_proc, &methods_proc) if methods_proc.is_a?(Proc)
164
- end
165
- end
166
-
167
- send("generate_#{render_method}_renderer", method_name)
168
- end
169
-
170
- Genesis.atome_creator_option("#{method_name}_post_render_proc".to_sym) do |params|
171
- # we return the value
172
- params[:value]
173
- end
174
- end
175
-
176
- def self.optional_atome_methods(method_name)
177
- Genesis.atome_creator_option("#{method_name}_pre_save_proc".to_sym) do |params, proc|
178
- # we return the value
179
- params
180
- end
181
-
182
- Genesis.atome_creator_option("#{method_name}_sanitizer_proc".to_sym) do |params, atome, proc|
183
- # we return the value
184
- params
185
- end
186
-
187
- Genesis.atome_creator_option("#{method_name}_getter_pre_proc".to_sym) do |params, atome, proc|
188
- # we return the value
189
- params[:value]
190
- end
191
-
192
- end
193
-
194
- def self.additional_atome_methods(method_name)
195
- # here is the pluralized
196
- Atome.define_method "#{method_name}s" do |params = nil|
197
- additional_atomes(method_name, params)
198
- end
199
- # here is the fast methods
200
- Atome.define_method "set_#{method_name}" do |params = nil, &proc|
201
- set_new_atome(method_name, params, proc)
202
- end
203
- Atome.define_method "get_#{method_name}" do
204
- get_new_atome(method_name)
205
- end
206
- generate_renderers_methods(method_name)
207
- end
208
-
209
- # we create the easy methods here : ¬
210
- def self.atome_creator(method_name, &method_proc)
211
-
212
- # we add the new method to the atome's collection of methods
213
- Utilities.atome_list(method_name)
214
- # we define many methods : easy, method=,pluralised and the fasts one, here is the easy
215
- Atome.define_method method_name do |params = nil, &user_proc|
216
- new_atome(method_name, params, user_proc, &method_proc)
217
- end
218
- # no we also add the method= for easy setting
219
- Atome.define_method("#{method_name}=") do |params, &user_proc|
220
- new_atome(method_name, params, user_proc)
221
- end
222
- optional_atome_methods(method_name)
223
- additional_atome_methods(method_name)
224
- end
225
-
226
- def self.optional_particle_methods(method_name)
227
- # The rendering occur here setting up the optional rendering by default
228
- Genesis.atome_creator_option("#{method_name}_render_proc".to_sym) do |params|
229
- params[:atome].render_engine(params[:method], params[:value], params[:atome], &params[:proc])
230
- # we return the value
231
- params[:value]
232
- end
233
- Genesis.atome_creator_option("#{method_name}_pre_render_proc".to_sym) do |params|
234
- particle_instance_variable = "@#{params[:method]}"
235
- params[:atome].instance_variable_set(particle_instance_variable, params[:value])
236
- # we return the value
237
- params[:value]
238
- end
239
- Genesis.atome_creator_option("#{method_name}_post_render_proc".to_sym) do |params|
240
- # we return the value
241
- params[:value]
242
- end
243
- Genesis.atome_creator_option("#{method_name}_getter_pre_proc".to_sym) do |params|
244
- # we return the value
245
- params[:value]
246
- end
247
-
248
- end
249
-
250
- def self.additional_particle_methods(method_name)
251
- # here is the fast methods
252
- Atome.define_method "set_#{method_name}" do |params, &proc|
253
- set_new_particle(method_name, params, &proc)
254
- end
255
-
256
- Atome.define_method "get_#{method_name}" do
257
- get_new_particle(method_name)
258
- end
259
- # now we generate all basic default rendering methods
260
- generate_renderers_methods(method_name)
261
- # now we generate all optional methods
262
- optional_particle_methods(method_name)
263
- end
264
-
265
- def self.particle_creator(method_name, &method_proc)
266
- # we add the new method to the particle's collection of methods
267
- Utilities.particle_list(method_name)
268
- Atome.define_method method_name do |params = nil, &user_proc|
269
- new_particle(method_name, params, user_proc, &method_proc)
270
- end
271
- # no we also add the method= for easy setting
272
- Atome.define_method("#{method_name}=") do |params, &user_proc|
273
- new_particle(method_name, params, user_proc)
274
- end
275
- additional_particle_methods(method_name)
276
- end
277
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # use to sanitize and secure user input
4
- module Sanitizer
5
- @default_params = {
6
- render: [:html],
7
- color: { x: 0, y: 0, z: 0, red: 0.6, green: 0.6, blue: 0.6, alpha: 1, diffusion: :linear },
8
- box: { width: 100, height: 100, x: 100, y: 100,
9
- color: { x: 0, y: 0, z: 0, red: 0.9, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
10
- generator: :box, preset: :box },
11
- shape: { width: 100, height: 100, x: 100, y: 100,
12
- color: { x: 0, y: 0, z: 0, red: 0.1, green: 0.9, blue: 0.9, alpha: 1, diffusion: :linear },
13
- generator: :manual },
14
- drm: { type: :drm },
15
- shadow: {}
16
- }
17
-
18
- def self.default_params
19
- @default_params
20
- end
21
-
22
- def validation(atome_instance_var)
23
- # TODO: write validation scheme
24
- true if atome_instance_var
25
- end
26
-
27
- def sanitizer(params)
28
- # TODO: write sanitizer scheme
29
- # we reorder id and place it a the beginning of the hash before render
30
- # id_found = params.delete(:id)
31
- # params = { id: id_found }.merge(params)
32
-
33
- # we reorder render and place it a the beginning of the hash
34
- # render_found = params.delete(:render)
35
- # { render: render_found }.merge(params)
36
- params
37
- end
38
-
39
- def add_essential_drm(params)
40
- essential_drm = { authorisation: { read: [Atome.current_user], write: [Atome.current_user] },
41
- atome: { read: [:all], write: [:me] } }
42
- params[:drm] = if params[:drm]
43
- essential_drm.merge(params[:drm])
44
- else
45
- essential_drm
46
- end
47
- end
48
-
49
- def check_parent(params)
50
- parent = [id]|| [:user_view]
51
- params[:parent] = parent unless params[:parent]
52
- params
53
- end
54
-
55
- def add_missing_id(atome_type, params)
56
- type = params[:type] || atome_type
57
- "#{type}_#{Universe.atomes.length}"
58
- end
59
-
60
- def add_essential_properties(atome_type, params)
61
- # params_to_sanitize={atome: self, params: params}
62
- params=Genesis.run_optional_methods_helper("#{atome_type}_sanitizer_proc".to_sym, params, self)
63
- # TODO remove the condition below once the line above works
64
- params[:id] = add_missing_id(atome_type, params) unless params[:id]
65
- # FIXME : inject this in async mode to avoid big lag!
66
- params[:drm] = add_essential_drm(params) unless params[:drm]
67
- # forcing default render can causes problems and crashes
68
- # render= Sanitizer.default_params[:render]
69
- params[:render] = render unless params[:render]
70
- check_parent(params)
71
-
72
- end
73
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
- # TODO: params shouldn't be merge but they must respect the order
3
- # TODO: Add default value for each methods below
4
- # TODO: Factorise codes below
5
- class Atome
6
- def box(params = {}, &bloc)
7
- default_renderer = Sanitizer.default_params[:render]
8
- generated_id = params[:id] || "box_#{Universe.atomes.length}"
9
- generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
10
- generated_parent = params[:parent] || id
11
-
12
- temp_default = { render: [generated_render], id: generated_id, type: :shape, parent: [generated_parent], width: 99, height: 99, left: 9, top: 9,
13
- color: { render: [generated_render], id: "color_#{generated_id}", type: :color,
14
- red: 0.69, green: 0.69, blue: 0.69, alpha: 1 } }
15
- params = temp_default.merge(params)
16
- new_atome = Atome.new({ shape: params},&bloc )
17
- new_atome.shape
18
- end
19
-
20
- def circle(params = {}, &bloc)
21
- default_renderer = Sanitizer.default_params[:render]
22
- generated_id = params[:id] || "circle_#{Universe.atomes.length}"
23
- generated_render = params[:render] || default_renderer unless params[:render].instance_of? Hash
24
- generated_parent = params[:parent] || id
25
-
26
- temp_default = { render: [generated_render], id: generated_id, type: :shape, parent: [generated_parent], width: 99, height: 99, left: 9, top: 9,
27
- color: { render: [generated_render], id: "color_#{generated_id}", type: :color,
28
- red: 0.69, green: 0.69, blue: 0.69, alpha: 1 }, smooth: "100%" }
29
- params = temp_default.merge(params)
30
- new_atome = Atome.new({ shape: params },&bloc)
31
- new_atome.shape
32
- end
33
-
34
- end
35
-
36
- def box(params = {}, &proc)
37
- Utilities.grab(:view).box(params,&proc)
38
- end
39
-
40
- def circle(params = {}, &proc)
41
- Utilities.grab(:view).circle(params,&proc)
42
- end
43
-
44
- def text(params = {}, &bloc)
45
- Utilities.grab(:view).text(params, &bloc)
46
- end
47
-
48
-
49
- def video(params = {}, &bloc)
50
- Utilities.grab(:view).video(params, &bloc)
51
- end
52
-
53
- def drag(params = {}, &bloc)
54
- Utilities.grab(:view).drag(params, &bloc)
55
- end
@@ -1,173 +0,0 @@
1
- module Internal
2
- def self.read_ruby(file)
3
- # TODO write a ruby script that'll list and sort all files so they can be read
4
- `
5
- fetch('medias/rubies/'+#{file})
6
- .then(response => response.text())
7
- .then(text => Opal.eval(text))
8
- `
9
- end
10
-
11
- def self.read_text(file)
12
- `
13
- fetch('medias/rubies/'+#{file})
14
- .then(response => response.text())
15
- .then(text => console.log(text))
16
- `
17
- end
18
-
19
- def text_data(value)
20
- @html_object.text = value
21
- end
22
-
23
- def animator_data(value)
24
- puts "send params to animation engine#{value}"
25
- end
26
-
27
- def _data(value)
28
- #dummy method to handle atome with no type
29
- end
30
-
31
- def html_drag_helper(atome, options, parent = nil)
32
- drag_id = atome.id
33
- options[:max] = options[:max].to_n
34
- `current_obj = Opal.Utilities.$grab(#{drag_id})`
35
-
36
- `interact('.'+#{drag_id})
37
- .draggable({
38
- // enable inertial throwing
39
- // startAxis: 'y',
40
- // lockAxis: 'x',
41
- lockAxis: #{options[:lock]},
42
- inertia: true,
43
- // keep the element within the area of it's parent
44
- modifiers: [
45
- interact.modifiers.restrictRect({
46
- //restriction: 'parent',
47
- //restriction: { left: 333 ,right: 90, top: 333, bottom: 30},
48
- restriction: #{options[:max]},
49
-
50
- //elementRect: { left: , right: 0, top: 1, bottom: 1 }
51
- // endOnly: true,
52
- }),
53
-
54
- ],
55
- // enable autoScroll
56
- autoScroll: true,
57
-
58
- listeners: {
59
- // call this function on every dragmove event
60
-
61
- // move: dragMoveListener,
62
- move: dragMoveListener,
63
- // move(event){
64
- // console.log('current atome is: '+self.current_obj)
65
- // },
66
- start(event) {
67
- bloc=#{atome.bloc}
68
- //TODO: optimise this passing the proc to the drag callback
69
- // lets get the current atome Object
70
- // self.current_obj = Opal.Utilities.$grab(atome_drag_id)
71
- // now get the grab proc
72
- //self.proc_meth = current_obj.bloc
73
- },
74
- // call this function on every dragend event
75
- end(event) {
76
-
77
- }
78
- }
79
- })
80
- `
81
-
82
- if options[:fixed]
83
- `
84
- function allow_drag(target,x,y){
85
-
86
- }
87
- `
88
- else
89
- `
90
- function allow_drag(target,x,y){
91
- target.style.transform = 'translate(' + x + 'px, ' + y + 'px)'
92
- // update the position attributes
93
- target.setAttribute('data-x', x)
94
- target.setAttribute('data-y', y)
95
- }
96
- `
97
- end
98
-
99
- `
100
- function dragMoveListener(event) {
101
- const target = event.target
102
- // the code below can be conditioned to receive the drag event without moving the object
103
- // keep the dragged position in the data-x/data-y attributes
104
- const x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx;
105
- const y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy
106
- // translate the element
107
- allow_drag(target,x,y)
108
- // CallBack here
109
- var object_dragged_id=Opal.Utilities.$grab(target.id)
110
- #{atome}.$dragCallback(event.pageX, event.pageY, event.rect.left, event.rect.top, #{atome},object_dragged_id, bloc);
111
- }
112
- `
113
- end
114
-
115
- def drag_remove_true(current_atome)
116
- current_atome.target.each do |value|
117
- atome_found = grab(value)
118
- # we get the id of the drag and ad add it as a html class to all children so they become draggable
119
- # atome_found.html_object.remove_class(id)
120
- atome_found.html_object.remove_class(current_atome.id)
121
- end
122
- end
123
-
124
- def shape_remove_drag(atome)
125
- class_to_remove = atome.drag.id
126
- atome.html_object.remove_class(class_to_remove)
127
- end
128
-
129
- def dragCallback(page_x, page_y, x, y, current_object, object_dragged_id, proc = nil)
130
- dragged_atome = grab(object_dragged_id.id)
131
- dragged_atome.instance_variable_set('@left', x)
132
- dragged_atome.instance_variable_set('@top', y)
133
- current_object.instance_exec({ x: page_x, y: page_y }, &proc) if proc.is_a?(Proc)
134
- end
135
-
136
- def constraint_helper(params, current_atome, option)
137
- options = {}
138
- current_atome.particles.each do |particle, value|
139
- options[particle] = value if (particle != :id && particle != :render && particle != :child && particle != :html_type && particle != :type && particle != :html_object && particle != :target)
140
- end
141
- options = options.merge({ option => params[:value] })
142
- current_atome.target.each do |value|
143
- atome_found = grab(value)
144
- # we get the id of the drag and ad add it as a html class to all children so they become draggable
145
- atome_found.html_object.remove_class(current_atome.id)
146
- atome_found.html_object.add_class(current_atome.id)
147
- html_drag_helper(current_atome, options)
148
- end
149
-
150
- end
151
-
152
- def html_decision(html_type, value, id)
153
- case html_type
154
- when :style
155
- # remove previous class if the are of the same type of the type, example:
156
- # if there's a color already assign we remove it to allow the new one to be visible
157
- # comment / uncomment below if we need to remove class or not
158
- html_parent = grab(value).instance_variable_get("@html_object")
159
- html_parent.class_names.each do |class_name|
160
- if $document[class_name] && $document[class_name].attributes[:atome]
161
- class_to_remove = $document[class_name].attributes[:id]
162
- html_parent.remove_class(class_to_remove)
163
- end
164
- end
165
- $document[value].add_class(id)
166
- when :unset
167
- else
168
- @html_object.append_to($document[value])
169
- end
170
-
171
- end
172
-
173
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Utilities
4
- module Utilities
5
- @atome_list = []
6
- @particle_list = []
7
- @renderer_list = [:html, :headless, :server]
8
-
9
-
10
- def self.renderer_list(atome = nil)
11
- @renderer_list
12
- end
13
- def self.atome_list(atome = nil)
14
- # this method is used to hold all available type of atomes
15
- if atome
16
- instance_variable_get('@atome_list').push(atome)
17
- else
18
- instance_variable_get('@atome_list')
19
- end
20
- end
21
-
22
- #
23
- def self.particle_list(particle = nil)
24
- # this method is used to hold all available type of particles
25
- if particle
26
- instance_variable_get('@particle_list').push(particle)
27
- else
28
- instance_variable_get('@particle_list')
29
- end
30
- end
31
-
32
- def self.grab(params)
33
- Universe.atomes[params]
34
- end
35
-
36
-
37
-
38
-
39
- end
@@ -1,77 +0,0 @@
1
- class Atome
2
-
3
- def identity (params)
4
- @identity=params
5
- end
6
- def new(params)
7
- puts "add/new : #{params}"
8
- end
9
-
10
- def set(params)
11
- puts "set : #{params}"
12
- end
13
-
14
- def self.grab(val)
15
- Utilities.grab(val)
16
- end
17
-
18
- def add(params)
19
- puts "add : #{params}"
20
- end
21
-
22
- def update(params)
23
- puts "update : #{params}"
24
- end
25
-
26
- def refresh
27
- # delete the object in the view
28
- self.html_object&.remove
29
- particles_found = particles
30
- particles_found.delete(:html_type)
31
- particles_found.delete(:html_object)
32
- particles_found.delete(:id)
33
- particles_found.delete(:dna)
34
- atomes_to_re_attach = {}
35
- Utilities.atome_list.each do |atome_to_refresh|
36
- atome_found = particles_found.delete(atome_to_refresh)
37
- if atome_found
38
- particles_found.delete(atome_to_refresh)
39
- atomes_to_re_attach[atome_found.type] = atome_found
40
- end
41
- end
42
- particles_found.each do |particle_to_refresh, value|
43
- send(particle_to_refresh, value)
44
- end
45
- atomes_to_re_attach.each do |atome_to_attatch, content|
46
- instance_variable_set("@#{atome_to_attatch}", content)
47
- html_decision(content.html_type, id, content.id)
48
- end
49
- end
50
-
51
-
52
- def replace(params)
53
- puts "replace : #{params}"
54
- end
55
-
56
- def clear
57
- child.each do |child_found|
58
- grab(child_found).html_object&.remove
59
- end
60
- child([])
61
- end
62
-
63
- def delete(params)
64
- self.html_object&.remove
65
- Universe.delete(id)
66
- end
67
-
68
- def [](params)
69
- instance_variable_get(instance_variables[params])
70
- end
71
-
72
- def to_s
73
- inspect.to_s
74
- end
75
-
76
- end
77
-