atome 0.1.00009 → 0.4.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4b48cdeb89c228abfd54f7ff8a986bf57b856ee448248f8bc72d350f2102f92
4
- data.tar.gz: 684ee3dbfb0c2f8a630203b70c76fee2c4bbc38e668236eb39ce4031fce07ad0
3
+ metadata.gz: 49cc8d868d75099b8958e82985a3fbf1c43eaea349619ffa01e810fd9ea10ca0
4
+ data.tar.gz: 5e9b7460dea168d8fb9b21de448edbb57deed81173fc1d04bf95f12262e80ba7
5
5
  SHA512:
6
- metadata.gz: abce3a0481ef173040bff4c5753ddc0da3429b62b9d25c6b60b3dd87751b582d3c917fb84ed56b97b684fe8066ff99882f7be57a1530529f32eee02666fa2781
7
- data.tar.gz: e1addd8946eed935d0becf3b612969387f6107271819913fc62a8fe0f633ed13f485974195f77f74f28c03e95c412af39171336efcde841683e3ee84337eef29
6
+ metadata.gz: 12f981205e19cfc5f4243e8498c190b7b5903009660f0c68219c4eaee95195b47e0ff69fcecc67c69cd7624b66a8dd10340249dc7bc9576682d05031ec497ed3
7
+ data.tar.gz: ee6814778ba2ca00d75a7fb714847c680982ce20ffccc2df34160554340f1cb400efaab3a996d1820e91879ba72a0430f5bd90c2eb2463c39a25a2e1becdc540
data/Gemfile CHANGED
@@ -8,3 +8,7 @@ gemspec
8
8
  gem "rake", "~> 13.0"
9
9
 
10
10
  gem "minitest", "~> 5.0"
11
+ gem 'rubocop', group: 'development'
12
+ gem 'rubocop', group: 'development'
13
+ gem 'rubocop', group: 'development'
14
+ gem 'rubocop', group: 'development'
data/README.md CHANGED
@@ -1,8 +1,64 @@
1
- # Atome
1
+ Atome
2
+ -
2
3
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/atome`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+ <img src="./documentation/images/3.png" width="666" />
5
+ -
4
6
 
5
- TODO: Delete this and the text above, and describe your gem
7
+
8
+ Cross platform ecosystem
9
+ -
10
+
11
+ - atome is a cross platform development framework, aim to build mobile or desktop applications, web site, games, presentations, and lots more...
12
+
13
+ - atome's applications can be deploy as a simple application, a client, a server or both, as well as be booted at startup (Operating System. mode)
14
+
15
+ - all apis work identically, to ensure you'll have the exact same rendering whatever the host platform (Android, Freebsd, linux, MacOs, Web, Windows).
16
+
17
+ - atome and all the included libraries are entirely open source with a very permissive MIT licence. it means you can do what you want want with it!
18
+
19
+ - the framework is totally hybrid, it can be executed as a full blown native application, a native application with a web view, in a web browser or a web view
20
+
21
+ - Atome can be used in stand alone (offline mode), in cloud mode or both and sync data when required
22
+
23
+ - it's also possible to publish websites on a static server (without server side language) while using a database and sync data between users
24
+
25
+ - Anything in atome can be scripted, even on the fly at runtime!
26
+
27
+ Open source technology included
28
+ -
29
+
30
+ - Ruby : is the language used to script all atome's apis (https://www.ruby-lang.org)
31
+
32
+ [comment]: <> (<img src="https://github.com/atomecorp/atome/raw/master/documentation/images/logos/ruby.png" width="100" />)
33
+
34
+ - Opal : is a ruby gem used to compile the ruby language to JS (https://opalrb.com)
35
+
36
+ [comment]: <> (<img src="https://github.com/atomecorp/atome/raw/master/documentation/images/logos/opal.png" width="100" />)
37
+
38
+ - Roda : is a ruby web framework that push the server version of atome (https://roda.jeremyevans.net)
39
+
40
+ [comment]: <> (<img src="https://github.com/atomecorp/atome/raw/master/documentation/images/logos/roda.svg" width="100" />)
41
+
42
+ - Puma : is a ruby web server to start the backend of atome (https://puma.io)
43
+
44
+ [comment]: <> (<img src="https://github.com/atomecorp/atome/raw/master/documentation/images/logos/puma.png" width="100" />)
45
+
46
+ - FreeBSD : is a Unix platform with a very secure environment (jails), allow to create and boot embedded applications on any compatible machine (standard PC, Raspberry, Beaglebone, etc..), while keeping a very small footprint using the nanoBSD facility of FreeBSD (https://www.freebsd.org/fr/)
47
+
48
+ [comment]: <> (<img src="https://github.com/atomecorp/atome/raw/master/documentation/images/logos/freebsd.png" width="100" />)
49
+
50
+ - Tauri : Build smaller, faster, and more secure desktop applications with a web frontend.(https://github.com/tauri-apps/tauri)
51
+
52
+ [comment]: <> (<img src="https://avatars.githubusercontent.com/u/54536011?s=200&v=4" width="100" />)
53
+
54
+ <img src="./documentation/images/logos/ruby.png" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
55
+
56
+ [//]: # (<img src="./documentation/images/logos/cordova.png" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)
57
+ <img src="./documentation/images/logos/opal.png" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
58
+ <img src="./documentation/images/logos/roda.svg" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
59
+ <img src="./documentation/images/logos/freebsd.png" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
60
+ <img src="./documentation/images/logos/puma.png" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
61
+ <img src="./documentation/images/logos/tauri.png" width="100" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
6
62
 
7
63
  ## Installation
8
64
 
@@ -16,7 +72,7 @@ If bundler is not being used to manage dependencies, install the gem by executin
16
72
 
17
73
  ## Usage
18
74
 
19
- TODO: Write usage instructions here
75
+ [Full documentation here](./documentation/atome.md)
20
76
 
21
77
  ## Development
22
78
 
@@ -26,7 +82,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
26
82
 
27
83
  ## Contributing
28
84
 
29
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/atome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/atome/blob/master/CODE_OF_CONDUCT.md).
85
+ Bug reports and pull requests are welcome on GitHub at https://github.com/atomecorp/atome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/atomecorp/atome/blob/master/CODE_OF_CONDUCT.md).
30
86
 
31
87
  ## License
32
88
 
@@ -34,4 +90,16 @@ The gem is available as open source under the terms of the [MIT License](https:/
34
90
 
35
91
  ## Code of Conduct
36
92
 
37
- Everyone interacting in the Atome project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/atome/blob/master/CODE_OF_CONDUCT.md).
93
+ Everyone interacting in the Atome project's codebase, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/atomecorp/atome/blob/master/CODE_OF_CONDUCT.md).
94
+
95
+
96
+ Example website:
97
+ -
98
+ **[a website showing some apis demo ](http://atome.one)**
99
+
100
+
101
+ Contact:
102
+ -
103
+ **[queries@atome.one](mailto:contact@atome.one)**
104
+
105
+ <img src="./documentation/images//atome.svg" width="100" />
data/Rakefile CHANGED
@@ -1,12 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rake/testtask"
3
+ #old code below
4
+ # require "bundler/gem_tasks"
5
+ # require "rake/testtask"
6
+ #
7
+ # Rake::TestTask.new(:test) do |t|
8
+ # t.libs << "test"
9
+ # t.libs << "lib"
10
+ # t.test_files = FileList["test/**/test_*.rb"]
11
+ # end
12
+ #
13
+ # task default: :test
5
14
 
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << "test"
8
- t.libs << "lib"
9
- t.test_files = FileList["test/**/test_*.rb"]
15
+ task :test do
16
+ `gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
17
+ `cd test/test_app;atome update;atome run guard`
10
18
  end
11
19
 
12
20
  task default: :test
@@ -1,65 +1,223 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # FIXME: check when creating gem version the new gem is not always fully updated we have to type gem uninstall first
4
+
3
5
  require 'opal'
4
6
  require 'opal-jquery'
5
7
  require 'opal-browser'
6
8
  require 'parser'
9
+ require 'ruby2js'
7
10
  require 'uglifier'
8
11
 
9
12
  Opal.append_path 'app'
10
13
 
11
- def build_opal_browser(user_project_path, production = false)
12
- browser_js = "#{user_project_path}/build/js/opal/opal_browser.js"
13
- browser_content = Opal::Builder.build('../lib/atome/renderers/opal/opal_browser.rb').to_s
14
- browser_content.gsub!("$$$('STDERR')['$write_proc='](typeof(process) === 'object' && typeof(process.stderr) === 'object' ? function(s){process.stderr.write(s)} : function(s){console.warn(s)});", "$$$('STDERR')['$write_proc='](typeof(process) === 'object' && typeof(process.stderr) === 'object' ? function(s){process.stderr.write(s)} : function(s){});")
15
- browser_content = Uglifier.new.compile(browser_content) if production
14
+ def build_browser_content
15
+ Opal::Builder.build('../lib/atome/renderers/opal/opal_browser.rb').to_s
16
+ end
17
+
18
+ def build_opal_browser(user_project_path)
19
+ opal_directory = "#{user_project_path}/build/js/opal"
20
+ browser_js = "#{opal_directory}/opal_browser.js"
21
+ Dir.mkdir(opal_directory) unless File.directory?(opal_directory)
22
+
23
+ File.new browser_js, 'w'
24
+ browser_content = build_browser_content
25
+
16
26
  File.open(browser_js, 'w') do |f|
17
27
  f.puts browser_content
18
28
  end
19
29
  end
20
30
 
21
- def build_atome_kernel(user_project_path, gem_location, production = false)
22
- kernel_js = "#{user_project_path}/build/js/atome/kernel.js"
31
+ def build_aui(user_project_path)
32
+ # FIXME: for now production can't be change when updating or force create, we should add a production method that
33
+ # uglified all libs on demand
34
+
35
+ # now we add an uniq aui to the app
36
+ aui_js = "#{user_project_path}/build/js/aui.js"
37
+ File.new aui_js, 'w'
38
+ builder = Opal::Builder.new
39
+ aui_content = builder.build("#{user_project_path}/aui.rb").to_s
40
+ File.open(aui_js, 'w') do |f|
41
+ f.puts aui_content
42
+ end
43
+ end
44
+
45
+ def copy_assets_files(user_project_path, gem_location)
46
+ build_location = "#{gem_location}/../vendor/assets/build/"
47
+ server_location = "#{gem_location}/../vendor/assets/server/"
48
+ FileUtils.copy_entry build_location, "#{user_project_path}/build", preserve: nil
49
+ FileUtils.copy_entry server_location, "#{user_project_path}/server", preserve: nil
50
+ end
51
+
52
+ def build_atome_kernel(user_project_path, gem_location)
53
+ # now lets build the atome kernel
54
+ atome_directory = "#{user_project_path}/build/js/atome"
55
+ Dir.mkdir(atome_directory) unless File.directory?(atome_directory)
56
+ kernel_js = "#{atome_directory}/kernel.js"
57
+ File.new kernel_js, 'w'
23
58
  builder = Opal::Builder.new
24
59
  builder.append_paths("#{gem_location}/../lib/")
25
60
  kernel_content = builder.build("#{gem_location}/../lib/atome.rb").to_s
26
- kernel_content = Uglifier.new.compile(kernel_content) if production
27
61
  File.open(kernel_js, 'w') do |f|
28
62
  f.puts kernel_content
29
63
  end
30
64
  end
31
65
 
32
- def build_opal_parser(user_project_path, production = false)
66
+ def build_opal_extensions(user_project_path, gem_location)
67
+ opal_directory = "#{user_project_path}/build/js/opal"
68
+ extensions_js = "#{opal_directory}/atome_opal_extensions.js"
69
+ File.new extensions_js, 'w'
70
+ builder = Opal::Builder.new
71
+ builder.append_paths("#{gem_location}/../lib/atome/renderers/opal/")
72
+ extensions_content = builder.build("#{gem_location}/../lib/atome/renderers/opal/atome_opal_extensions.rb").to_s
73
+ File.open(extensions_js, 'w') do |f|
74
+ f.puts extensions_content
75
+ end
76
+ end
77
+
78
+ def build_opal_parser(user_project_path)
33
79
  parser_js = "#{user_project_path}/build/js/opal/opal_parser.js"
80
+ File.new parser_js, 'w'
34
81
  parser_content = Opal::Builder.build('../lib/atome/renderers/opal/opal_parser.rb').to_s
35
- parser_content = Uglifier.new.compile(parser_content) if production
36
82
  File.open(parser_js, 'w') do |f|
37
83
  f.puts parser_content
38
84
  end
39
85
  end
40
86
 
41
- def build_user_code(user_project_path, production = false)
87
+ def build_user_code(user_project_path, source_code)
42
88
  application_js = "#{user_project_path}/build/js/application.js"
43
- application_content = Opal::Builder.build('../vendor/assets/index.rb').to_s
44
- application_content = Uglifier.new.compile(application_content) if production
89
+ builder = Opal::Builder.new
90
+ builder.append_paths("#{user_project_path}/")
91
+ application_content = builder.build(source_code).to_s
92
+
45
93
  File.open(application_js, 'w') do |f|
46
94
  f.puts application_content
47
95
  end
48
96
  end
49
97
 
50
- task :system_builder do
51
- # change to false for not production mode and faster compile time
52
- production = false
53
- user_project_path = ARGV[1]
54
- gem_location = File.join(File.dirname(__FILE__))
55
- build_atome_kernel(user_project_path, gem_location, production)
56
- build_opal_browser(user_project_path, production)
57
- build_opal_parser(user_project_path, production)
58
- build_user_code(user_project_path, production)
98
+ def minimize_aui(user_project_path)
99
+ aui_js = "#{user_project_path}/build/js/aui.js"
100
+ aui_content = File.open(aui_js).read
101
+ aui_content = Uglifier.new.compile(aui_content)
102
+ File.open(aui_js, 'w') do |f|
103
+ f.puts aui_content
104
+ end
105
+ end
106
+
107
+ def minimize_browser(user_project_path)
108
+ browser_js = "#{user_project_path}/build/js/opal/opal_browser.js"
109
+ browser_content = File.open(browser_js).read
110
+ browser_content = Uglifier.new.compile(browser_content)
111
+ File.open(browser_js, 'w') do |f|
112
+ f.puts browser_content
113
+ end
59
114
  end
60
115
 
61
- task :build do
62
- puts 'nothing for now'
116
+ def minimize_parser(user_project_path)
117
+ parser_js = "#{user_project_path}/build/js/opal/opal_parser.js"
118
+ parser_content = File.open(parser_js).read
119
+ parser_content = Uglifier.new.compile(parser_content)
120
+ File.open(parser_js, 'w') do |f|
121
+ f.puts parser_content
122
+ end
123
+ end
124
+
125
+ def minimize_atome_lib(user_project_path)
126
+ atome_js = "#{user_project_path}/build/js/atome/kernel.js"
127
+ atome_content = File.open(atome_js).read
128
+ atome_content = Uglifier.new.compile(atome_content)
129
+ File.open(atome_js, 'w') do |f|
130
+ f.puts atome_content
131
+ end
132
+ end
133
+
134
+ def minimize_sparkle(user_project_path)
135
+ opal_sparkle_js = "#{user_project_path}/build/js/opal/opal_sparkle.js"
136
+ opal_sparkle_content = File.open(opal_sparkle_js).read
137
+ opal_sparkle_content = Uglifier.new.compile(opal_sparkle_content)
138
+ File.open(opal_sparkle_js, 'w') do |f|
139
+ f.puts opal_sparkle_content
140
+ end
141
+ end
142
+
143
+ def minimize_opal_extensions(user_project_path)
144
+ atome_opal_extensions_js = "#{user_project_path}/build/js/opal/atome_opal_extensions.js"
145
+ atome_opal_extensions_content = File.open(atome_opal_extensions_js).read
146
+ atome_opal_extensions_content = Uglifier.new.compile(atome_opal_extensions_content)
147
+ File.open(atome_opal_extensions_js, 'w') do |f|
148
+ f.puts atome_opal_extensions_content
149
+ end
150
+ end
151
+
152
+ def minimize_libraries(user_project_path)
153
+ # minimizing aui
154
+ minimize_aui(user_project_path)
155
+ # minimizing opal_browser
156
+ minimize_browser(user_project_path)
157
+ # minimizing opal_parser
158
+ minimize_parser(user_project_path)
159
+ # minimizing atome_lib
160
+ minimize_atome_lib(user_project_path)
161
+ # minimizing atome_lib
162
+ minimize_sparkle(user_project_path)
163
+ # minimizing atome_lib
164
+ minimize_opal_extensions(user_project_path)
165
+ end
166
+
167
+ def minimize_user_code(user_project_path)
168
+ # minimizing user codes
169
+ application_js = "#{user_project_path}/build/js/application.js"
170
+ application_content = File.open(application_js).read
171
+ application_content = Uglifier.new.compile(application_content)
172
+ File.open(application_js, 'w') do |f|
173
+ f.puts application_content
174
+ end
175
+ end
176
+
177
+ task :build_user_code, :user_project_path, :production do |_t, args|
178
+ user_project_path = args[:user_project_path]
179
+ production = args[:production]
180
+ source_code = "#{user_project_path}/application/index.rb"
181
+ build_user_code(user_project_path, source_code)
182
+ minimize_user_code(user_project_path) if production == 'production'
183
+ end
184
+
185
+ task :system_builder, :user_project_path, :production do |_t, args|
186
+ user_project_path = args[:user_project_path]
187
+ production = args[:production]
188
+ source_code = '../vendor/assets/application/index.rb'
189
+ build_common_libraries(user_project_path, production)
190
+ build_user_code(user_project_path, source_code)
191
+
192
+ # TODO: catch and message to user when when there's no force and folder already exist
193
+ end
194
+
195
+ task :system_updater, :user_project_path, :production do |_t, args|
196
+ user_project_path = args[:user_project_path]
197
+ production = args[:production]
198
+ build_common_libraries(user_project_path, production)
199
+ end
200
+
201
+ task default: :run
202
+
203
+ def build_libraries(user_project_path, gem_location)
204
+ build_aui(user_project_path)
205
+ build_atome_kernel(user_project_path, gem_location)
206
+ build_opal_browser(user_project_path)
207
+ build_opal_parser(user_project_path)
208
+ build_opal_extensions(user_project_path, gem_location)
209
+ end
210
+
211
+ def minimize(user_project_path)
212
+ minimize_libraries(user_project_path)
213
+ minimize_user_code(user_project_path)
214
+ end
215
+
216
+ def build_common_libraries(user_project_path, production)
217
+ gem_location = File.join(File.dirname(__FILE__))
218
+ copy_assets_files(user_project_path, gem_location)
219
+ build_libraries(user_project_path, gem_location)
220
+ minimize(user_project_path) if production == 'production'
63
221
  end
64
222
 
65
- task default: :build
223
+ # TODO: integrate pure JS (ruby2js) compilation
@@ -0,0 +1,14 @@
1
+ atome
2
+ -
3
+
4
+ <img src="./images/atome.svg" width="100" />
5
+
6
+ ***Documentation***
7
+ -
8
+
9
+ **[I - What is atome](./framework/what_is_it.md)**
10
+
11
+ **[II - How to use it](./tutorials/tutorials.md)**
12
+
13
+ **[II - how to enhance](./framework/technical/technical_description.md)**
14
+
Binary file
@@ -0,0 +1,14 @@
1
+ <span align="right">
2
+
3
+ [Main menu](../atome.md)
4
+ -
5
+ </span>
6
+ <span align="left">
7
+
8
+ [back](./what_is_it.md)
9
+
10
+ </span>
11
+
12
+ Datas flows :
13
+ -
14
+
@@ -0,0 +1,179 @@
1
+
2
+ <span align="right">
3
+
4
+ [Main menu](../atome.md)
5
+ -
6
+ </span>
7
+
8
+ atome explained : the uniq object format
9
+ -
10
+
11
+ # new atome format
12
+
13
+ ----------------
14
+ atome structure :
15
+ id: {hash: {key: : value}
16
+ aui : {atome: {property: value}
17
+
18
+ ex: a_01: {color:{x: 33, y: 69, red: 0.1, green: 0.2, blue: 1, alpha: 1: diffusion: :radial}}
19
+
20
+ user can write:
21
+ a.color(:red)
22
+ a.red(0.1)
23
+ a.color(color:{x: 33, y: 69, red: 0.1})
24
+
25
+
26
+
27
+ an atome is a property ( position, size, type, etc..)
28
+
29
+ a single property (atome) can hold multiples properties cf: child property
30
+
31
+ b=box({ drag: true, atome_id: :the_box })
32
+ t=text({ content: "touch me to extract me from the box,\nand attach me to the circle ",y: 99, atome_id: :the_text })
33
+ grab(:the_box).attach(:the_text)
34
+ puts b.child # => ["the_text"]
35
+
36
+
37
+ atome's property are mutable even it's type ( useful to display a same atome in different manner, or use the data of the atome as a repository of style, or simply sawp it's functionality while retaining it's properties)
38
+
39
+ a single atome can be displayed in different way according it's rendering mode and or it's type.
40
+
41
+ EG :
42
+
43
+
44
+ a=image(content: :moto)
45
+
46
+
47
+ <img src="https://github.com/atomecorp/atome/raw/development/www/public/medias/images/moto.png" width="333" />
48
+
49
+ a.color(:white) #important else the text xill be transparent
50
+ a.type(:text)
51
+ moto
52
+
53
+ a.render({mode: :list, list: :property, sort: :alphabetically })
54
+ <img src="https://github.com/atomecorp/atome/raw/development/documentation/images/list.png" width="400px" />
55
+
56
+
57
+
58
+ - Anything that define an atome is a property.
59
+ any atome can contain an other atome or a group of atome as a property ex :
60
+
61
+
62
+ b = box({x: 300, drag: true})
63
+ image(:logo)
64
+ c = circle(x: 100)
65
+ b.insert(c.atome_id)
66
+ b.text('hello')
67
+ puts b.child #=> [c, t] (c and t is now a child of b)
68
+ b.touch do
69
+ # b children can be treated in one pass
70
+ # look at child example for more examples
71
+ b.child.color(:green)
72
+ end
73
+
74
+ Many atome properties can be set using a string or integer, it's a shortcut to set the content property eg :
75
+
76
+ text("hello") # equivalent to text({content: "hello"})
77
+ # or
78
+ image(:boat) # shortcut for image({content: :boat})
79
+
80
+ internally properties are always define using a key-value pair (Hash type) and can be set so :
81
+
82
+ text({content: "hello"})
83
+
84
+ Hash's values can be a String, an Integer, a hash or an array.
85
+
86
+ The atomiser method allow to modifying atome without interpreting/ refreshing the newly set property.
87
+ in this case the atome need rendered to refresh it's content
88
+
89
+ b = box()
90
+ b.atomiser({ color: :red })
91
+ b.atomiser({ smooth: 6})
92
+
93
+ wait 2 do
94
+ b.render(true)
95
+ end
96
+
97
+
98
+ - Any property can be define using an unique value (passed as a String , Symbole or a numeric value)
99
+
100
+
101
+ a=box({color: :red})
102
+ a.color(:red)
103
+ a.set({color: :red})
104
+
105
+ - Any property define are store internally as a Hash or an array if the property is define many times
106
+
107
+
108
+ a=box()
109
+ a.color(:red)
110
+ puts a.color #=> {color: :red}
111
+
112
+ - multiples parameters can be set at once using a hash:
113
+
114
+
115
+ box({x: 96, y: 96, color: :red, blur: 3})
116
+
117
+ - an object can be add as/like a property
118
+
119
+
120
+ box({text: :hello})
121
+ #or
122
+ b=box(x: 200)
123
+ b.text("hello")
124
+
125
+ - methods can be chained or assigned
126
+
127
+
128
+ b=box(width: 33)
129
+ b.color(:red).x(96).blur(3)
130
+
131
+ #or
132
+ b=box(width: 33)
133
+ b.color(:red).x(96).blur(3)
134
+ c=circle(color: :red)
135
+ b.color=c.color
136
+ c.y=b.blur
137
+
138
+
139
+
140
+
141
+
142
+ - to set a complex property such as shadow that needs more more than one parameters we have to send a hash to the atome
143
+
144
+ please note that any property can potentially have multiples parameters even the simplest one
145
+
146
+ # not implemented need a rework
147
+ a=box()
148
+ a.set({x: {content: 200, unit: :meters})
149
+
150
+ - Any property are stackable (even the simplest one), in this case we used the 'add' method to stack prop. alternatively it's possible to used an array to stack properties
151
+
152
+ a simple gradient :
153
+
154
+ b=box()
155
+ b.color([:cyan, :green, :orange, {diffusion: :conic}])
156
+
157
+
158
+ - all properties are treated identically and can be swap at any time.Type mutation is also possible : ex change the type of object from an image to text type
159
+
160
+
161
+ x=image({color: :white, content: :boat })
162
+ ATOME.wait 2 do
163
+ x.type(:text) #now the objet is rendered as a text object
164
+ end
165
+
166
+
167
+
168
+ here some possible definition of an atome
169
+
170
+ a=box({color: :red}) # an red box is created
171
+ a.set(smooth: 9) # the box has rounded corner the view is refreshed
172
+ a.set({width: 250},true )# the box is now 250px wide the view is forced to refresh
173
+ a.set({ border: { color: :orange, thickness: 7, pattern: :solid } })
174
+
175
+ **[- Architecture of the folders](./folder_architecture.md)**
176
+ -
177
+
178
+ **[- logic and datas flows](./datas_flows.md)**
179
+ -
@@ -0,0 +1,53 @@
1
+ <span align="right">
2
+
3
+ [Main menu](../atome.md)
4
+ -
5
+ </span>
6
+ <span align="left">
7
+
8
+ [back](./what_is_it.md)
9
+
10
+ </span>
11
+
12
+ What's in the box
13
+ -
14
+
15
+
16
+ **The atome framework is based on the Cordova framework, plus the additional following features :**
17
+
18
+
19
+
20
+ - a ruby interpreter
21
+
22
+ - a web server mode
23
+
24
+ - a simple modular and consistent syntax to build your own environment and tools
25
+
26
+
27
+ - video recording playback and streaming
28
+
29
+ - video conference
30
+
31
+ - realtime collaborative tool
32
+
33
+ - a bootable option for embedded applications on both AMD64 and ARM
34
+
35
+ - a full set of APIs covering graphics, audio, file, database and multimedia facilities (animation, interactive, drawing)
36
+
37
+ - everything in atome can be scriptable even at run time
38
+
39
+ - a native 3D engine rendering (the 3D engine is currently based on Urho3D, more frameworks may be supported in the future).
40
+
41
+ - a low latency audio system based on QAudio framework
42
+
43
+ - the atome object concept, that'll allow any to alter any object tools whatever it's type (unique Object concept)
44
+
45
+ - modular set of tools to create and modify atomes
46
+
47
+ - All tools alteration are non destructive
48
+
49
+ - atome alterations are logged so it's possible to restore an atome at any point of it's life
50
+
51
+ - expendable API system
52
+
53
+ - and more ...