atome 0.1.00009 → 0.4.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (354) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -0
  3. data/README.md +74 -6
  4. data/Rakefile +14 -6
  5. data/app_builder_helpers/Rakefile +183 -25
  6. data/documentation/atome.md +14 -0
  7. data/documentation/database.JPG +0 -0
  8. data/documentation/framework/apis.md +14 -0
  9. data/documentation/framework/atome_explained.md +179 -0
  10. data/documentation/framework/box_content.md +53 -0
  11. data/documentation/framework/buld_the_gem.md +52 -0
  12. data/documentation/framework/datas_flows.md +28 -0
  13. data/documentation/framework/enhance_atome.md +79 -0
  14. data/documentation/framework/folder_architecture.md +47 -0
  15. data/documentation/framework/technical/rendering_flow.md +18 -0
  16. data/documentation/framework/technical/technical_description.md +23 -0
  17. data/documentation/framework/what_is_it.md +65 -0
  18. data/documentation/framework/what_it_can_do.md +25 -0
  19. data/documentation/images/1.png +0 -0
  20. data/documentation/images/2.png +0 -0
  21. data/documentation/images/3.png +0 -0
  22. data/documentation/images/atome.svg +12 -0
  23. data/documentation/images/list.png +0 -0
  24. data/documentation/images/logos/cordova.png +0 -0
  25. data/documentation/images/logos/freebsd.png +0 -0
  26. data/documentation/images/logos/opal.png +0 -0
  27. data/documentation/images/logos/puma.png +0 -0
  28. data/documentation/images/logos/roda.svg +1 -0
  29. data/documentation/images/logos/ruby.png +0 -0
  30. data/documentation/images/logos/tauri.png +0 -0
  31. data/documentation/installation/atome_server.md +184 -0
  32. data/documentation/tutorials/first_steps.md +148 -0
  33. data/documentation/tutorials/tutorials.md +15 -0
  34. data/documentation/tutorials/working_with_atome.md +60 -0
  35. data/exe/atome +178 -53
  36. data/lib/atome/atome_native_extensions.rb +5 -0
  37. data/lib/atome/extensions/geolocation.rb +14 -0
  38. data/lib/atome/extensions/helper.rb +123 -0
  39. data/lib/atome/extensions/ping.rb +13 -0
  40. data/lib/atome/extensions/sha.rb +6 -0
  41. data/lib/atome/extensions/utilities.rb +39 -0
  42. data/lib/atome/kernel/atome.rb +98 -0
  43. data/lib/atome/kernel/generators/generator.rb +387 -0
  44. data/lib/atome/kernel/generators/genesis.rb +265 -0
  45. data/lib/atome/kernel/generators/sanitizer.rb +77 -0
  46. data/lib/atome/kernel/generators/shapes.rb +40 -0
  47. data/lib/atome/kernel/properties/essential.rb +43 -0
  48. data/lib/atome/kernel/sparkle.rb +37 -0
  49. data/lib/atome/kernel/universe.rb +29 -0
  50. data/lib/atome/renderers/headless/properties/generator.rb +1 -0
  51. data/lib/atome/renderers/opal/atome_opal_extensions.rb +7 -0
  52. data/lib/atome/renderers/opal/extensions/color.rb +23 -0
  53. data/lib/atome/renderers/opal/extensions/geolocation.rb +14 -0
  54. data/lib/atome/renderers/opal/extensions/ping.rb +18 -0
  55. data/lib/atome/renderers/opal/extensions/sha.rb +12 -0
  56. data/lib/atome/renderers/opal/opal_browser.rb +2 -1
  57. data/lib/atome/renderers/opal/opal_parser.rb +1 -0
  58. data/lib/atome/renderers/opal/properties/generator.rb +1 -0
  59. data/lib/atome/renderers/renderer.rb +12 -0
  60. data/lib/atome/renderers/server/properties/generator.rb +9 -0
  61. data/lib/atome/version.rb +1 -1
  62. data/lib/atome.rb +55 -2
  63. data/vendor/assets/Guardfile +4 -0
  64. data/vendor/assets/Rakefile +3 -0
  65. data/vendor/assets/application/index.rb +4 -0
  66. data/vendor/assets/build/css/style.css +21 -8
  67. data/vendor/assets/build/favicon.ico +0 -0
  68. data/vendor/assets/build/index.html +13 -4
  69. data/vendor/assets/build/js/atome/atome.js +68 -0
  70. data/vendor/assets/build/js/ping.min.js +2 -0
  71. data/vendor/assets/build/js/third_parties/createjs.min.js +19 -0
  72. data/vendor/assets/build/js/third_parties/fabric.min.js +1 -0
  73. data/vendor/assets/build/js/third_parties/sha256.min.js +9 -0
  74. data/vendor/assets/build/js/third_parties/three.min.js +6 -0
  75. data/vendor/assets/build/js/utilities/w3color.js +646 -0
  76. data/vendor/assets/build/medias/audios/audio_missing.wav +0 -0
  77. data/vendor/assets/build/medias/audios/clap.wav +0 -0
  78. data/vendor/assets/build/medias/audios/cowbell.wav +0 -0
  79. data/vendor/assets/build/medias/audios/hihat.wav +0 -0
  80. data/vendor/assets/build/medias/audios/kick.wav +0 -0
  81. data/vendor/assets/build/medias/audios/riff.m4a +0 -0
  82. data/vendor/assets/build/medias/audios/snare.wav +0 -0
  83. data/vendor/assets/build/medias/audios/tom.wav +0 -0
  84. data/vendor/assets/build/medias/fonts/Dancing_Script/DancingScript-VariableFont_wght.ttf +0 -0
  85. data/vendor/assets/build/medias/fonts/Dancing_Script/OFL.txt +93 -0
  86. data/vendor/assets/build/medias/fonts/Dancing_Script/README.txt +66 -0
  87. data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Bold.ttf +0 -0
  88. data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Medium.ttf +0 -0
  89. data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Regular.ttf +0 -0
  90. data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-SemiBold.ttf +0 -0
  91. data/vendor/assets/build/medias/fonts/Mate_SC/MateSC-Regular.ttf +0 -0
  92. data/vendor/assets/build/medias/fonts/Mate_SC/OFL.txt +94 -0
  93. data/vendor/assets/build/medias/fonts/Raleway/OFL.txt +93 -0
  94. data/vendor/assets/build/medias/fonts/Raleway/README.txt +81 -0
  95. data/vendor/assets/build/medias/fonts/Raleway/Raleway-Italic-VariableFont_wght.ttf +0 -0
  96. data/vendor/assets/build/medias/fonts/Raleway/Raleway-VariableFont_wght.ttf +0 -0
  97. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Black.ttf +0 -0
  98. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-BlackItalic.ttf +0 -0
  99. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Bold.ttf +0 -0
  100. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-BoldItalic.ttf +0 -0
  101. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraBold.ttf +0 -0
  102. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraBoldItalic.ttf +0 -0
  103. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraLight.ttf +0 -0
  104. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraLightItalic.ttf +0 -0
  105. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Italic.ttf +0 -0
  106. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Light.ttf +0 -0
  107. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-LightItalic.ttf +0 -0
  108. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Medium.ttf +0 -0
  109. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-MediumItalic.ttf +0 -0
  110. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Regular.ttf +0 -0
  111. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-SemiBold.ttf +0 -0
  112. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-SemiBoldItalic.ttf +0 -0
  113. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Thin.ttf +0 -0
  114. data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ThinItalic.ttf +0 -0
  115. data/vendor/assets/build/medias/fonts/Roboto_Slab/LICENSE.txt +202 -0
  116. data/vendor/assets/build/medias/fonts/Roboto_Slab/README.txt +71 -0
  117. data/vendor/assets/build/medias/fonts/Roboto_Slab/RobotoSlab-VariableFont_wght.ttf +0 -0
  118. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Black.ttf +0 -0
  119. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Bold.ttf +0 -0
  120. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraBold.ttf +0 -0
  121. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraLight.ttf +0 -0
  122. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Light.ttf +0 -0
  123. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Medium.ttf +0 -0
  124. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Regular.ttf +0 -0
  125. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-SemiBold.ttf +0 -0
  126. data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Thin.ttf +0 -0
  127. data/vendor/assets/build/medias/fonts/Vollkorn/OFL.txt +93 -0
  128. data/vendor/assets/build/medias/fonts/Vollkorn/README.txt +75 -0
  129. data/vendor/assets/build/medias/fonts/Vollkorn/Vollkorn-Italic-VariableFont_wght.ttf +0 -0
  130. data/vendor/assets/build/medias/fonts/Vollkorn/Vollkorn-VariableFont_wght.ttf +0 -0
  131. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Black.ttf +0 -0
  132. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-BlackItalic.ttf +0 -0
  133. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Bold.ttf +0 -0
  134. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-BoldItalic.ttf +0 -0
  135. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-ExtraBold.ttf +0 -0
  136. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-ExtraBoldItalic.ttf +0 -0
  137. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Italic.ttf +0 -0
  138. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Medium.ttf +0 -0
  139. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-MediumItalic.ttf +0 -0
  140. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Regular.ttf +0 -0
  141. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-SemiBold.ttf +0 -0
  142. data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-SemiBoldItalic.ttf +0 -0
  143. data/vendor/assets/build/medias/images/Icon_Help.png +0 -0
  144. data/vendor/assets/build/medias/images/atome.svg +12 -0
  145. data/vendor/assets/build/medias/images/avion.jpg +0 -0
  146. data/vendor/assets/build/medias/images/ballanim.png +0 -0
  147. data/vendor/assets/build/medias/images/blank.png +0 -0
  148. data/vendor/assets/build/medias/images/boat.png +0 -0
  149. data/vendor/assets/build/medias/images/cache.svg +10 -0
  150. data/vendor/assets/build/medias/images/dices.png +0 -0
  151. data/vendor/assets/build/medias/images/eVe_back.png +0 -0
  152. data/vendor/assets/build/medias/images/elephant.png +0 -0
  153. data/vendor/assets/build/medias/images/eyes.jpg +0 -0
  154. data/vendor/assets/build/medias/images/freebsd.png +0 -0
  155. data/vendor/assets/build/medias/images/grain_texture.png +0 -0
  156. data/vendor/assets/build/medias/images/green_planet.png +0 -0
  157. data/vendor/assets/build/medias/images/image_missing.svg +9 -0
  158. data/vendor/assets/build/medias/images/jeezs.png +0 -0
  159. data/vendor/assets/build/medias/images/keyboard.png +0 -0
  160. data/vendor/assets/build/medias/images/killer.jpg +0 -0
  161. data/vendor/assets/build/medias/images/living_room.png +0 -0
  162. data/vendor/assets/build/medias/images/logo.svg +14 -0
  163. data/vendor/assets/build/medias/images/logos/Facebook.svg +8 -0
  164. data/vendor/assets/build/medias/images/logos/GitHub Black.svg +7 -0
  165. data/vendor/assets/build/medias/images/logos/GitHub-Mark.eps +7696 -0
  166. data/vendor/assets/build/medias/images/logos/GitHub.svg +7 -0
  167. data/vendor/assets/build/medias/images/logos/TikTok.svg +11 -0
  168. data/vendor/assets/build/medias/images/logos/Twitter.svg +35 -0
  169. data/vendor/assets/build/medias/images/logos/YouTube.svg +1 -0
  170. data/vendor/assets/build/medias/images/logos/apple.svg +4 -0
  171. data/vendor/assets/build/medias/images/logos/atome.svg +12 -0
  172. data/vendor/assets/build/medias/images/logos/freebsd.png +0 -0
  173. data/vendor/assets/build/medias/images/logos/instagram.svg +6 -0
  174. data/vendor/assets/build/medias/images/logos/tiktok_back.svg +1 -0
  175. data/vendor/assets/build/medias/images/moto.png +0 -0
  176. data/vendor/assets/build/medias/images/noise.svg +17 -0
  177. data/vendor/assets/build/medias/images/piano.png +0 -0
  178. data/vendor/assets/build/medias/images/poisson.jpg +0 -0
  179. data/vendor/assets/build/medias/images/red_planet.png +0 -0
  180. data/vendor/assets/build/medias/images/sky.jpg +0 -0
  181. data/vendor/assets/build/medias/images/the_mask.svg +8 -0
  182. data/vendor/assets/build/medias/images/tile.png +0 -0
  183. data/vendor/assets/build/medias/images/tile_black.png +0 -0
  184. data/vendor/assets/build/medias/images/tile_white.png +0 -0
  185. data/vendor/assets/build/medias/javascripts/test.js +1 -0
  186. data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +111 -0
  187. data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +12 -0
  188. data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +26 -0
  189. data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +27 -0
  190. data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +92 -0
  191. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +20 -0
  192. data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +4 -0
  193. data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +17 -0
  194. data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +13 -0
  195. data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +22 -0
  196. data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +6 -0
  197. data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +15 -0
  198. data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +9 -0
  199. data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +9 -0
  200. data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +5 -0
  201. data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +57 -0
  202. data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +21 -0
  203. data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +18 -0
  204. data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +21 -0
  205. data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +11 -0
  206. data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +7 -0
  207. data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +26 -0
  208. data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +115 -0
  209. data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +14 -0
  210. data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +35 -0
  211. data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +14 -0
  212. data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +3 -0
  213. data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +11 -0
  214. data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +29 -0
  215. data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +12 -0
  216. data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +19 -0
  217. data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +10 -0
  218. data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +23 -0
  219. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +61 -0
  220. data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +1 -0
  221. data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +23 -0
  222. data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +11 -0
  223. data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +6 -0
  224. data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +9 -0
  225. data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +23 -0
  226. data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +10 -0
  227. data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +37 -0
  228. data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +44 -0
  229. data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +28 -0
  230. data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +7 -0
  231. data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +24 -0
  232. data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +21 -0
  233. data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +64 -0
  234. data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +7 -0
  235. data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +10 -0
  236. data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +54 -0
  237. data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +13 -0
  238. data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +10 -0
  239. data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +19 -0
  240. data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +69 -0
  241. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +4 -0
  242. data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +4 -0
  243. data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +47 -0
  244. data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +9 -0
  245. data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +6 -0
  246. data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +15 -0
  247. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +24 -0
  248. data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +41 -0
  249. data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +41 -0
  250. data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +8 -0
  251. data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +37 -0
  252. data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +47 -0
  253. data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +7 -0
  254. data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +26 -0
  255. data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +9 -0
  256. data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +13 -0
  257. data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +12 -0
  258. data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +15 -0
  259. data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +22 -0
  260. data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +14 -0
  261. data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +19 -0
  262. data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +15 -0
  263. data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +7 -0
  264. data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +7 -0
  265. data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +24 -0
  266. data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +6 -0
  267. data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +7 -0
  268. data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +9 -0
  269. data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +15 -0
  270. data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +17 -0
  271. data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +31 -0
  272. data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +17 -0
  273. data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +19 -0
  274. data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +3 -0
  275. data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +11 -0
  276. data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +30 -0
  277. data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +1 -0
  278. data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +3 -0
  279. data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +41 -0
  280. data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +39 -0
  281. data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +9 -0
  282. data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +32 -0
  283. data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +6 -0
  284. data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +30 -0
  285. data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +7 -0
  286. data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +109 -0
  287. data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +5 -0
  288. data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +5 -0
  289. data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +6 -0
  290. data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +3 -0
  291. data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +18 -0
  292. data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +33 -0
  293. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +33 -0
  294. data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +22 -0
  295. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +23 -0
  296. data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +27 -0
  297. data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +26 -0
  298. data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +27 -0
  299. data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +46 -0
  300. data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +29 -0
  301. data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +17 -0
  302. data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +23 -0
  303. data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +5 -0
  304. data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +21 -0
  305. data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +10 -0
  306. data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +14 -0
  307. data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +16 -0
  308. data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +10 -0
  309. data/vendor/assets/build/{js/atome/kernel.js → medias/rubies/examples/animation.rb} +0 -0
  310. data/vendor/assets/build/medias/rubies/examples/atome.new.rb +12 -0
  311. data/vendor/assets/build/medias/rubies/examples/auto_height.rb +3 -0
  312. data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
  313. data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -0
  314. data/vendor/assets/build/medias/rubies/examples/box.rb +1 -0
  315. data/vendor/assets/build/{js/opal/opal_browser.js → medias/rubies/examples/circle.rb} +0 -0
  316. data/vendor/assets/build/medias/rubies/examples/color.rb +13 -0
  317. data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +11 -0
  318. data/vendor/assets/build/medias/rubies/examples/drag.rb +5 -0
  319. data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +1 -0
  320. data/vendor/assets/build/medias/rubies/examples/grab.rb +3 -0
  321. data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
  322. data/vendor/assets/build/medias/rubies/examples/image.rb +4 -0
  323. data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
  324. data/vendor/assets/build/medias/rubies/examples/link.rb +13 -0
  325. data/vendor/assets/build/medias/rubies/examples/parent.rb +12 -0
  326. data/vendor/assets/build/medias/rubies/examples/read.rb +3 -0
  327. data/vendor/assets/build/medias/rubies/examples/repeat.rb +3 -0
  328. data/vendor/assets/build/medias/rubies/examples/right.rb +1 -0
  329. data/vendor/assets/build/medias/rubies/examples/rotate.rb +2 -0
  330. data/vendor/assets/build/medias/rubies/examples/schedule.rb +13 -0
  331. data/vendor/assets/build/medias/rubies/examples/smooth.rb +3 -0
  332. data/vendor/assets/build/medias/rubies/examples/text.rb +5 -0
  333. data/vendor/assets/build/medias/rubies/examples/top.rb +1 -0
  334. data/vendor/assets/build/medias/rubies/examples/touch.rb +6 -0
  335. data/vendor/assets/build/medias/rubies/examples/video.rb +4 -0
  336. data/vendor/assets/build/medias/rubies/examples/wait.rb +3 -0
  337. data/vendor/assets/build/medias/rubies/examples/web.rb +9 -0
  338. data/vendor/assets/build/medias/rubies/examples/width.rb +2 -0
  339. data/vendor/assets/build/medias/rubies/test.rb +1 -0
  340. data/vendor/assets/build/medias/rubies/text_read.rb +1 -0
  341. data/vendor/assets/build/medias/rubies/users/code.rb +6 -0
  342. data/vendor/assets/build/medias/utils/infos/color.rb +29 -0
  343. data/vendor/assets/build/medias/utils/infos/width.rb +25 -0
  344. data/vendor/assets/build/medias/videos/video_missing.mp4 +0 -0
  345. data/vendor/assets/{index.rb → r&d/misc.rb} +54 -1
  346. data/vendor/assets/r&d/ping.rb +3 -0
  347. data/vendor/assets/r&d/storage.rb +9 -0
  348. data/vendor/assets/r&d/view_example.rb +21 -0
  349. data/vendor/assets/server/atome_server.rb +74 -27
  350. data/vendor/assets/server/config.ru +2 -14
  351. metadata +424 -12
  352. data/lib/atome/kernel/atome_genesis.rb +0 -2
  353. data/lib/atome/kernel/properties/geometry.rb +0 -2
  354. data/vendor/assets/build/js/opal/opal_parser.js +0 -0
@@ -0,0 +1,148 @@
1
+ <span align="right">
2
+
3
+ [Main menu](../atome.md)
4
+ -
5
+ </span>
6
+ <span align="left">
7
+
8
+ [back](./tutorials.md)
9
+
10
+ </span>
11
+
12
+ Now create your first app:
13
+ -
14
+
15
+ first type the following command in your shell
16
+
17
+ atome create myproject
18
+
19
+ This will create a folder named "myproject" that'll hold your application
20
+
21
+ in this newly created folder you'll find folder name "application".
22
+
23
+ open it and it the file named "index.rb" adding the text below :
24
+
25
+ text("hellow world!")
26
+
27
+ you're application is ready to run, to do so, in your shell type the following command:
28
+
29
+ cd myproject
30
+ atome run
31
+
32
+
33
+ then your default browser should open and display the "hello world!" text
34
+
35
+
36
+ Now lets build some atomes
37
+ -
38
+
39
+ This easiest way to build is to use the basic api such as the text api used just before :
40
+
41
+ text("hellow world!")
42
+
43
+ below here is how build an atome box and assign a variable
44
+
45
+ a=box()
46
+
47
+ You can also build and Atome using the Atome class
48
+ -
49
+ This is a more complex way to build atome but way a faster for the machine to process
50
+
51
+ a=Atome.new({preset:box)}
52
+
53
+ # Here are a few common commands
54
+
55
+
56
+ # 1 - Create a new app
57
+
58
+ in your terminal type :
59
+
60
+ atome create myproject
61
+
62
+ or atome create :
63
+
64
+ atome create myproject production
65
+ for production mode (all javascript file will be minimized and uglified)
66
+
67
+
68
+ to overwrite an existing project :
69
+
70
+ atome create myproject production force
71
+
72
+ # 2 - Run the application
73
+
74
+ go into the project :
75
+
76
+ cd myproject
77
+
78
+ # Run the project :
79
+
80
+ browser version
81
+
82
+ - Warning : run the app doesn't refresh the user code, to refresh use the command 'build'
83
+
84
+
85
+ atome run browser
86
+
87
+
88
+ server version
89
+
90
+ - Warning : run the app doesn't refresh the user code, to refresh use the command 'build'
91
+
92
+
93
+ atome run server
94
+
95
+ - By default the address port is 9292 : http://localhost:9292/index
96
+
97
+
98
+ gem version
99
+
100
+ require 'atome'
101
+ a=Atome.new
102
+ puts a.inspect
103
+
104
+ native version : android , iOS, Linux, windows
105
+
106
+ - Warning : run the app doesn't refresh the user code, to refresh use the command 'build'
107
+
108
+
109
+ atome run osx
110
+
111
+ OS version
112
+
113
+
114
+ go to https://github.com/atomecorp/atomic_builder
115
+
116
+
117
+ to run in production mode (faster server mode)
118
+
119
+ atome run server production
120
+
121
+ to update your application ti the latest atome version
122
+
123
+ gem update
124
+ atome update
125
+
126
+ to set the server port
127
+
128
+ atome run server port: 9299
129
+
130
+ Supported platforms with the run command are : browser, server , android, Freebsd, iOS, OSX, Windows
131
+
132
+ atome run osx
133
+
134
+ # compile the user app :
135
+
136
+ to build your app and re-generate javascript script from ruby type:
137
+
138
+ atome build
139
+
140
+ for production mode (compressed and uglified javascript files) type :
141
+
142
+ atome build production
143
+
144
+ Please note, is possible to mix multiple options to create run and set some options in one pas:
145
+
146
+ atome create myproject server force run production port: 9293
147
+
148
+
@@ -0,0 +1,15 @@
1
+ <div align="right">
2
+
3
+ [Main menu](../atome.md)
4
+ -
5
+ </div>
6
+
7
+ **[- first steps](./first_steps.md)**
8
+ -
9
+
10
+ **[- working with atome framework (developers)](./working_with_atome.md)**
11
+ -
12
+
13
+ **[- enhance_atome](./enhance_atome.md)**
14
+ -
15
+
@@ -0,0 +1,60 @@
1
+ <span align="right">
2
+
3
+ [Main menu](../atome.md)
4
+ -
5
+ </span>
6
+ <span align="left">
7
+
8
+ [back](./tutorials.md)
9
+
10
+ </span>
11
+
12
+ working with atome framework :
13
+ -
14
+ any atome properties can be set using a unique value using the syntax below :
15
+
16
+ a=box()
17
+ a.color(:red)
18
+ a.x=200
19
+
20
+
21
+ you can send also the properties to the atome using parenthesis ou the equal sign:
22
+
23
+ a=box()
24
+ a.x(300)
25
+ a.y=500
26
+
27
+ The basic objects
28
+
29
+ those objects are created by the system at startup :
30
+ -
31
+
32
+ - preset : hold the default properties's values for predefined atome ( box, image text, ...)
33
+
34
+ - black_hole : a container for all deleted object
35
+
36
+ - device : Used to identify user device (computer , phone , tablet), also used for Namespace and generate identity of newly created atomes
37
+
38
+ - intuition : A visual layer used to hold user tools
39
+
40
+ - view : Where user create and modify there projects
41
+
42
+ - messenger : A special object used for communication and collaboration
43
+
44
+ - authorization : this atome is used to authorise or not creation , use, communication and modification of atome
45
+
46
+ buffer : an atome used to store temporary object, it is used to store temporary element such as the position and content of system element like the code editor or the list of element to remain centered when the main windows is resized,
47
+ eg:
48
+
49
+
50
+ b = box({ width: 700, height: 120, drag: true, center: { dynamic: true } })
51
+ c = circle
52
+ t = text({ content: "ok", color: :black, center: :x })
53
+
54
+ grab(:buffer).content[:resize] = [t, b]
55
+ ATOME.resize_html do |evt|
56
+ t.content("#{evt[:width]} #{evt[:height]}")
57
+ grab(:buffer).content[:resize].each do |element|
58
+ element.center=element.center
59
+ end
60
+ end
data/exe/atome CHANGED
@@ -2,60 +2,66 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'fileutils'
5
+ require 'securerandom'
6
+ require 'digest/sha2'
7
+ # below are the methods needed for atome creation and run
5
8
 
6
- def delete_all(dir)
7
- Dir.foreach(dir) do |e|
8
- # Don't bother with . and ..
9
- next if %w[. ..].include? e
10
- fullname = dir + File::Separator + e
11
- if FileTest.directory?(fullname)
12
- delete_all(fullname)
13
- else
14
- File.delete(fullname)
15
- end
9
+ def found_path(arg_name)
10
+ project_name = ARGV[ARGV.find_index(arg_name) + 1]
11
+ path = `pwd`.chomp
12
+ if project_name != 'run' && project_name != 'guard' && !project_name.nil? &&
13
+ project_name != 'port:' && project_name != 'server' && project_name != 'build'
14
+ path = "#{path}/#{project_name}"
16
15
  end
17
- Dir.delete(dir)
16
+ path
18
17
  end
19
18
 
20
- def run(option = :browser, location = nil)
21
- case option
22
- when :server
23
- require 'atome'
24
- if location
25
- `cd ./#{location}/server;rackup --server puma --port 9292 --env production`
26
- else
27
- `cd ./server;rackup --server puma --port 9292 --env production`
28
- end
29
- when :browser
30
- if location
31
- `cd ./#{location}/build;open index.html`
32
- else
33
- `cd ./build;open index.html`
34
- end
35
- when :osx
36
- require 'webview_ruby'
37
- webview = WebviewRuby::Webview.new
38
- webview.set_title('atome')
39
- webview.set_size(480, 360)
40
- if location
41
- webview.navigate("file:/#{`pwd`}/#{location}/build/index.html")
19
+ def delete_all(dir, user_application = false)
20
+ Dir.foreach(dir) do |e|
21
+ next if %w[. ..].include? e
22
+
23
+ full_name = dir + File::Separator + e
24
+ if FileTest.directory?(full_name)
25
+ delete_all(full_name, user_application) if user_application && dir != 'application'
42
26
  else
43
- webview.navigate("file:#{`pwd`.chomp}/build/index.html")
27
+ File.delete(full_name)
44
28
  end
45
- webview.run
46
- else
47
- # nothing for now
48
29
  end
30
+ Dir.delete(dir) if user_application && dir != 'application'
31
+ end
49
32
 
33
+ def build_app(path, production)
34
+ # now run the rake task to build the needed libraries (atome, renderers, etc...)
35
+ app_builder_helpers = File.join(File.dirname(__FILE__), '../app_builder_helpers')
36
+ # now run the rake task to compile user code to javascript
37
+ `cd #{app_builder_helpers};rake build_user_code[#{path},#{production}]`
50
38
  end
51
39
 
52
- case ARGV[0]
53
- when 'create'
54
- project_name = ARGV[1]
55
- force = ARGV[2]
56
- delete_all(project_name) if force == 'force'
57
- Dir.mkdir project_name.to_s
40
+ def create_application(project_name, force, production)
41
+ # print "directory already exist, use force to overwrite"
42
+ new_app_creation = false
58
43
  current_path = `pwd`.chomp
44
+ unless force && File.directory?(project_name)
45
+ new_app_creation = true
46
+ Dir.mkdir project_name
47
+ # now lets create the application identity
48
+ uuid = SecureRandom.uuid
49
+ sha = Digest::SHA256.hexdigest(uuid)
50
+ coded_id = sha.gsub('-', '_')
51
+ added_content = <<~STR
52
+ class Atome
53
+ def self.aui
54
+ "#{coded_id}"
55
+ end
56
+ end
57
+ STR
58
+ file_location = "#{current_path}/#{project_name}/aui.rb"
59
+ File.new file_location, 'w'
60
+ File.open(file_location, 'w') do |f|
61
+ f.puts added_content
62
+ end
63
+ end
64
+
59
65
  gem_assets_location = File.join(File.dirname(__FILE__), '../vendor/assets/')
60
66
  app_builder_helpers = File.join(File.dirname(__FILE__), '../app_builder_helpers')
61
67
  target_template_location = "#{current_path}/#{project_name}"
@@ -66,24 +72,143 @@ when 'create'
66
72
  end
67
73
  end
68
74
  # now run the rake task to build the needed libraries (atome, renderers, etc...)
69
- `cd #{app_builder_helpers};rake system_builder #{current_path}/#{project_name}`
70
- run(:server, project_name)
71
- when 'run'
72
- case ARGV[1]
75
+ `cd #{app_builder_helpers};rake system_builder[#{current_path}/#{project_name},#{production}]`
76
+ if new_app_creation
77
+ # now adding name to the app
78
+ index_html = "#{current_path}/#{project_name}/build/index.html"
79
+ index_html_content = File.open(index_html).read
80
+ index_html_content = index_html_content.gsub('<title>atome</title>', "<title>#{project_name}</title>")
81
+ File.open(index_html, 'w') do |f|
82
+ f.puts index_html_content
83
+ end
84
+ end
85
+ end
86
+
87
+ def update_application(project_name, production)
88
+ app_builder_helpers = File.join(File.dirname(__FILE__), '../app_builder_helpers')
89
+ `cd #{app_builder_helpers};rake system_updater[#{project_name},#{production}]`
90
+ end
91
+
92
+ def guard_check
93
+ loop do
94
+ sleep 9
95
+ end
96
+ nil unless ARGV.include?('guard')
97
+ end
98
+
99
+ def run_application(build_target, location, port = 9292)
100
+ case build_target
101
+ when :server
102
+ threads = []
103
+ threads << Thread.new do
104
+ sleep 1.5
105
+ `open http://localhost:9292/index`
106
+ end
107
+ `cd #{location}/server;rackup --server puma --port #{port} --env production`
108
+ when :browser
109
+ `cd #{location}/build;open index.html`
110
+ guard_check
111
+ when :native
112
+ # freebsd
113
+ when :linux
114
+ # freebsd
115
+ when :osx
116
+ # osx
117
+ when :windows
118
+ # windows
119
+ else
120
+ `cd #{location}/build;open index.html`
121
+ guard_check
122
+ end
123
+ end
124
+
125
+ # below we analyse the ARGV
126
+ location = '/'
127
+ force = nil
128
+ production = nil
129
+ port = 9292
130
+
131
+ production = 'production' if ARGV.include?('production')
132
+
133
+ force = 'force' if ARGV.include?('force')
134
+
135
+ port = ARGV[ARGV.find_index('port:') + 1] if ARGV.include?('port:')
136
+
137
+ platforms = %w[android browser server osx freebsd ios linux osx windows]
138
+ # now setting build_target
139
+
140
+ build_target = 'browser'
141
+
142
+ platforms.each do |platform|
143
+ build_target = platform if ARGV.include?(platform)
144
+ end
145
+
146
+ if ARGV.include?('create')
147
+ project_name = ARGV[1]
148
+ location = "/#{project_name}"
149
+ create_application(project_name, force, production)
150
+ end
151
+
152
+ if ARGV.include?('build')
153
+ path = found_path('build')
154
+ build_app(path, production)
155
+ end
156
+
157
+ if ARGV.include?('update')
158
+ # TODO: also update index.html and all other files except the application folder
159
+ path = found_path('update')
160
+ update_application(path, production)
161
+ end
162
+
163
+ if ARGV.include?('guard')
164
+ Thread.new do
165
+ sleep 1.2
166
+ Dir.chdir("./#{location}") do
167
+ `guard`
168
+ end
169
+ end
170
+ end
171
+
172
+ if ARGV.include?('run')
173
+ path = if location != '/'
174
+ "#{`pwd`.chomp}/#{location}"
175
+ else
176
+ found_path('run')
177
+ end
178
+
179
+ case build_target
73
180
  when 'android'
181
+ # TODO: write code here
74
182
  when 'browser'
75
- run(:browser)
183
+ run_application(:browser, path)
76
184
  when 'freebsd'
185
+ # TODO: write code here
77
186
  when 'ios'
187
+ # TODO: write code here
78
188
  when 'linux'
189
+ # TODO: write code here
79
190
  when 'osx'
80
- run(:osx)
191
+ run_application(:osx, path)
81
192
  when 'server'
82
- run(:server)
193
+ config_location = "#{path}/server/config.ru"
194
+ file = File.open(config_location)
195
+ text = file.read
196
+ text = text.gsub('run Unreloader', '')
197
+ text = text.gsub('run App.freeze.app', '')
198
+ text = text.gsub(/^$\n/, '')
199
+ text = if production == 'production'
200
+ "#{text}run App.freeze.app"
201
+ else
202
+ "#{text}run Unreloader"
203
+ end
204
+ File.open(config_location, 'w') do |f|
205
+ f.puts text
206
+ end
207
+ run_application(:server, path, port)
83
208
  when 'windows'
209
+ # TODO: write code here
84
210
  else
85
- # type code here
211
+ run_application(:browser, path)
86
212
  end
87
- else
88
- # type code here
213
+
89
214
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'atome/extensions/sha'
4
+ require 'atome/extensions/ping'
5
+ require 'atome/extensions/geolocation'
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'geocoder'
4
+
5
+ # add on for the atome method
6
+ class Atome
7
+ def geolocation
8
+ # native version
9
+ public_ip = `curl https://api.ipify.org`
10
+ results = Geocoder.search(public_ip)
11
+ results.first.coordinates
12
+ end
13
+ end
14
+
@@ -0,0 +1,123 @@
1
+ def grab(val)
2
+ Atome.grab(val)
3
+ end
4
+
5
+
6
+ def read_ruby(file)
7
+ `
8
+ fetch('medias/rubies/'+#{file})
9
+ .then(response => response.text())
10
+ .then(text => Opal.eval(text))
11
+ `
12
+ end
13
+
14
+ def read_text(file)
15
+ `
16
+ fetch('medias/rubies/'+#{file})
17
+ .then(response => response.text())
18
+ .then(text => console.log(text))
19
+ `
20
+ end
21
+
22
+
23
+ def read(file, action=:text)
24
+ send("read_#{action}", file)
25
+ end
26
+
27
+ def wait(seconds)
28
+ seconds = seconds.to_f
29
+ `setTimeout(function(){ #{yield} }, #{seconds * 1000})`
30
+ end
31
+
32
+
33
+ def repeater(counter,proc)
34
+ instance_exec(counter,&proc) if proc.is_a?(Proc)
35
+ end
36
+
37
+ def repeat(delay = 1, repeat = 0, &proc)
38
+ # below we exec the call a first time
39
+ instance_exec(0,&proc) if proc.is_a?(Proc)
40
+ # as we exec one time above we subtract one below
41
+ %x{
42
+ var x = 1
43
+ var intervalID = window.setInterval(function(){ Opal.Object.$repeater(x,#{proc})
44
+ if (++x ===#{repeat} ) {
45
+ window.clearInterval(intervalID);
46
+ }}, #{delay * 1000})
47
+ }
48
+
49
+ end
50
+
51
+
52
+
53
+ `
54
+ const atome = {
55
+ jsSchedule: function (years, months, days, hours, minutes, seconds, proc) {
56
+ const now = new Date();
57
+ const formatedDate = new Date(years, months - 1, days, hours, minutes, seconds);
58
+ const diffTime = Math.abs(formatedDate - now);
59
+ setTimeout(function () {
60
+ Opal.Object.$schedule_callback(proc);
61
+ }, diffTime);
62
+ }}
63
+ `
64
+
65
+ def schedule(date, &proc)
66
+ date = date.to_s
67
+ delimiters = [",", " ", ":", "-"]
68
+ formated_date = date.split(Regexp.union(delimiters))
69
+ missing_datas = Time.now
70
+ missing_datas = missing_datas.to_s
71
+ delimiters = [",", " ", ":", "-"]
72
+ missing_datas_formated_date = missing_datas.split(Regexp.union(delimiters))
73
+
74
+ case formated_date.length
75
+ when 1
76
+ seconds = formated_date[0]
77
+ minutes = missing_datas_formated_date[4]
78
+ hours = missing_datas_formated_date[3]
79
+ days = missing_datas_formated_date[2]
80
+ months = missing_datas_formated_date[1]
81
+ years = missing_datas_formated_date[0]
82
+
83
+ when 2
84
+ seconds = formated_date[0]
85
+ minutes = formated_date[1]
86
+ hours = missing_datas_formated_date[3]
87
+ days = missing_datas_formated_date[2]
88
+ months = missing_datas_formated_date[1]
89
+ years = missing_datas_formated_date[0]
90
+ when 3
91
+ seconds = formated_date[0]
92
+ minutes = formated_date[1]
93
+ hours = formated_date[2]
94
+ days = missing_datas_formated_date[2]
95
+ months = missing_datas_formated_date[1]
96
+ years = missing_datas_formated_date[0]
97
+ when 4
98
+ seconds = formated_date[0]
99
+ minutes = formated_date[1]
100
+ hours = formated_date[2]
101
+ days = formated_date[3]
102
+ when 5
103
+ seconds = formated_date[0]
104
+ minutes = formated_date[1]
105
+ hours = formated_date[2]
106
+ days = formated_date[3]
107
+ months = formated_date[4]
108
+ years = missing_datas_formated_date[0]
109
+ else
110
+ years = formated_date[0]
111
+ months = formated_date[1]
112
+ days = formated_date[2]
113
+ hours = formated_date[3]
114
+ minutes = formated_date[4]
115
+ seconds = formated_date[5]
116
+ end
117
+ `atome.jsSchedule(#{years},#{months},#{days},#{hours},#{minutes},#{seconds},#{proc})`
118
+ end
119
+
120
+
121
+ def schedule_callback(proc)
122
+ instance_exec(&proc) if proc.is_a?(Proc)
123
+ end
@@ -0,0 +1,13 @@
1
+ def ping(address, my_proc: false)
2
+ # if RUBY_ENGINE.downcase != 'opal'
3
+ def up?(host, my_proc)
4
+ check = Net::Ping::External.new(host)
5
+ if check.ping?
6
+ puts "ping respond!! "
7
+ end
8
+ end
9
+
10
+ chost = address
11
+ puts up?(chost, my_proc) # prints "true" if ping replies
12
+ # end
13
+ end
@@ -0,0 +1,6 @@
1
+ class Atome
2
+ def calculate_sha(string)
3
+ Digest::SHA256.hexdigest(string)
4
+ end
5
+ end
6
+
@@ -0,0 +1,39 @@
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
+ atome_found = nil
34
+ Universe.atomes.each do |atome|
35
+ atome_found = atome if atome.id == params
36
+ end
37
+ atome_found
38
+ end
39
+ end