atome 0.1.00009 → 0.4.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/README.md +74 -6
- data/Rakefile +15 -6
- data/app_builder_helpers/Rakefile +184 -24
- data/documentation/atome.md +14 -0
- data/documentation/database.JPG +0 -0
- data/documentation/framework/apis.md +14 -0
- data/documentation/framework/atome_explained.md +179 -0
- data/documentation/framework/box_content.md +53 -0
- data/documentation/framework/buld_the_gem.md +52 -0
- data/documentation/framework/datas_flows.md +28 -0
- data/documentation/framework/enhance_atome.md +79 -0
- data/documentation/framework/folder_architecture.md +47 -0
- data/documentation/framework/technical/rendering_flow.md +18 -0
- data/documentation/framework/technical/technical_description.md +23 -0
- data/documentation/framework/what_is_it.md +65 -0
- data/documentation/framework/what_it_can_do.md +25 -0
- data/documentation/images/1.png +0 -0
- data/documentation/images/2.png +0 -0
- data/documentation/images/3.png +0 -0
- data/documentation/images/atome.svg +12 -0
- data/documentation/images/list.png +0 -0
- data/documentation/images/logos/cordova.png +0 -0
- data/documentation/images/logos/freebsd.png +0 -0
- data/documentation/images/logos/opal.png +0 -0
- data/documentation/images/logos/puma.png +0 -0
- data/documentation/images/logos/roda.svg +1 -0
- data/documentation/images/logos/ruby.png +0 -0
- data/documentation/images/logos/tauri.png +0 -0
- data/documentation/installation/atome_server.md +184 -0
- data/documentation/tutorials/first_steps.md +148 -0
- data/documentation/tutorials/tutorials.md +15 -0
- data/documentation/tutorials/working_with_atome.md +60 -0
- data/exe/atome +178 -53
- data/lib/atome/atome_native_extensions.rb +5 -0
- data/lib/atome/extensions/helper.rb +112 -0
- data/lib/atome/kernel/atome.rb +99 -0
- data/lib/atome/kernel/generators/generator.rb +517 -0
- data/lib/atome/kernel/generators/genesis.rb +277 -0
- data/lib/atome/kernel/generators/sanitizer.rb +73 -0
- data/lib/atome/kernel/generators/shapes.rb +55 -0
- data/lib/atome/kernel/helpers/geolocation.rb +14 -0
- data/lib/atome/kernel/helpers/internal_methods.rb +173 -0
- data/lib/atome/kernel/helpers/ping.rb +17 -0
- data/lib/atome/kernel/helpers/sha.rb +6 -0
- data/lib/atome/kernel/helpers/utilities.rb +39 -0
- data/lib/atome/kernel/properties/essential.rb +77 -0
- data/lib/atome/kernel/sparkle.rb +38 -0
- data/lib/atome/kernel/universe.rb +37 -0
- data/lib/atome/renderers/headless/properties/generator.rb +1 -0
- data/lib/atome/renderers/opal/atome_opal_extensions.rb +7 -0
- data/lib/atome/renderers/opal/extensions/color.rb +23 -0
- data/lib/atome/renderers/opal/extensions/geolocation.rb +13 -0
- data/lib/atome/renderers/opal/extensions/ping.rb +18 -0
- data/lib/atome/renderers/opal/extensions/sha.rb +12 -0
- data/lib/atome/renderers/opal/opal_browser.rb +2 -1
- data/lib/atome/renderers/opal/opal_parser.rb +1 -0
- data/lib/atome/renderers/opal/properties/generator.rb +1 -0
- data/lib/atome/renderers/renderer.rb +13 -0
- data/lib/atome/renderers/server/properties/generator.rb +9 -0
- data/lib/atome/version.rb +2 -1
- data/lib/atome.rb +46 -2
- data/vendor/assets/Guardfile +4 -0
- data/vendor/assets/Rakefile +3 -0
- data/vendor/assets/application/index.rb +4 -0
- data/vendor/assets/build/css/style.css +25 -8
- data/vendor/assets/build/favicon.ico +0 -0
- data/vendor/assets/build/index.html +15 -4
- data/vendor/assets/build/js/atome/atome.js +82 -0
- data/vendor/assets/build/js/third_parties/fabric.min.js +1 -0
- data/vendor/assets/build/js/third_parties/interact.min.js +2 -3
- data/vendor/assets/build/js/third_parties/ping.min.js +2 -0
- data/vendor/assets/build/js/third_parties/sha256.min.js +9 -0
- data/vendor/assets/build/js/third_parties/three.min.js +6 -0
- data/vendor/assets/build/js/third_parties/w3color.js +646 -0
- data/vendor/assets/build/js/third_parties/zim.min.js +1 -0
- data/vendor/assets/build/medias/audios/audio_missing.wav +0 -0
- data/vendor/assets/build/medias/audios/clap.wav +0 -0
- data/vendor/assets/build/medias/audios/cowbell.wav +0 -0
- data/vendor/assets/build/medias/audios/guitar.wav +0 -0
- data/vendor/assets/build/medias/audios/hihat.wav +0 -0
- data/vendor/assets/build/medias/audios/kick.wav +0 -0
- data/vendor/assets/build/medias/audios/riff.m4a +0 -0
- data/vendor/assets/build/medias/audios/snare.wav +0 -0
- data/vendor/assets/build/medias/audios/tom.wav +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/DancingScript-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/OFL.txt +93 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/README.txt +66 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Dancing_Script/static/DancingScript-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Mate_SC/MateSC-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Mate_SC/OFL.txt +94 -0
- data/vendor/assets/build/medias/fonts/Raleway/OFL.txt +93 -0
- data/vendor/assets/build/medias/fonts/Raleway/README.txt +81 -0
- data/vendor/assets/build/medias/fonts/Raleway/Raleway-Italic-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/Raleway-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Black.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-BlackItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-BoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraLight.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ExtraLightItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Italic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Light.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-LightItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-MediumItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-SemiBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-Thin.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Raleway/static/Raleway-ThinItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/LICENSE.txt +202 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/README.txt +71 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/RobotoSlab-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Black.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraLight.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Light.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Roboto_Slab/static/RobotoSlab-Thin.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/OFL.txt +93 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/README.txt +75 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/Vollkorn-Italic-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/Vollkorn-VariableFont_wght.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Black.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-BlackItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Bold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-BoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-ExtraBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-ExtraBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Italic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Medium.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-MediumItalic.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-Regular.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-SemiBold.ttf +0 -0
- data/vendor/assets/build/medias/fonts/Vollkorn/static/Vollkorn-SemiBoldItalic.ttf +0 -0
- data/vendor/assets/build/medias/images/Icon_Help.png +0 -0
- data/vendor/assets/build/medias/images/atome.svg +12 -0
- data/vendor/assets/build/medias/images/avion.jpg +0 -0
- data/vendor/assets/build/medias/images/ballanim.png +0 -0
- data/vendor/assets/build/medias/images/beach.jpg +0 -0
- data/vendor/assets/build/medias/images/blank.png +0 -0
- data/vendor/assets/build/medias/images/boat.png +0 -0
- data/vendor/assets/build/medias/images/cache.svg +10 -0
- data/vendor/assets/build/medias/images/dices.png +0 -0
- data/vendor/assets/build/medias/images/eVe_back.png +0 -0
- data/vendor/assets/build/medias/images/elephant.png +0 -0
- data/vendor/assets/build/medias/images/eyes.jpg +0 -0
- data/vendor/assets/build/medias/images/freebsd.png +0 -0
- data/vendor/assets/build/medias/images/grain_texture.png +0 -0
- data/vendor/assets/build/medias/images/green_planet.png +0 -0
- data/vendor/assets/build/medias/images/image_missing.svg +9 -0
- data/vendor/assets/build/medias/images/jeezs.png +0 -0
- data/vendor/assets/build/medias/images/keyboard.png +0 -0
- data/vendor/assets/build/medias/images/killer.jpg +0 -0
- data/vendor/assets/build/medias/images/living_room.png +0 -0
- data/vendor/assets/build/medias/images/logo.svg +14 -0
- data/vendor/assets/build/medias/images/logos/Facebook.svg +8 -0
- data/vendor/assets/build/medias/images/logos/GitHub Black.svg +7 -0
- data/vendor/assets/build/medias/images/logos/GitHub-Mark.eps +7696 -0
- data/vendor/assets/build/medias/images/logos/GitHub.svg +7 -0
- data/vendor/assets/build/medias/images/logos/TikTok.svg +11 -0
- data/vendor/assets/build/medias/images/logos/Twitter.svg +35 -0
- data/vendor/assets/build/medias/images/logos/YouTube.svg +1 -0
- data/vendor/assets/build/medias/images/logos/apple.svg +4 -0
- data/vendor/assets/build/medias/images/logos/atome.svg +12 -0
- data/vendor/assets/build/medias/images/logos/freebsd.png +0 -0
- data/vendor/assets/build/medias/images/logos/instagram.svg +6 -0
- data/vendor/assets/build/medias/images/logos/tiktok_back.svg +1 -0
- data/vendor/assets/build/medias/images/moto.png +0 -0
- data/vendor/assets/build/medias/images/noise.svg +17 -0
- data/vendor/assets/build/medias/images/piano.png +0 -0
- data/vendor/assets/build/medias/images/poisson.jpg +0 -0
- data/vendor/assets/build/medias/images/red_planet.png +0 -0
- data/vendor/assets/build/medias/images/sky.jpg +0 -0
- data/vendor/assets/build/medias/images/the_mask.svg +8 -0
- data/vendor/assets/build/medias/images/tile.png +0 -0
- data/vendor/assets/build/medias/images/tile_black.png +0 -0
- data/vendor/assets/build/medias/images/tile_white.png +0 -0
- data/vendor/assets/build/medias/javascripts/test.js +1 -0
- data/vendor/assets/build/medias/rubies/examples/!run.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/!demos.rb +111 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/action.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/add.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/alignment.rb +27 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/animation.rb +92 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_as_property.rb +20 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atome_list.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/atomiser.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/attach_extract.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/authorisation.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/batch.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/blend.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/blur.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/border.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/calendar.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/capture.rb +57 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/center.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/child.rb +18 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/clear.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/clip.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/code.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/code_editor.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/collaborate.rb +115 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/convert_to_px.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/copy_paste.rb +35 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/current_code.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/cursor.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/data.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/database.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/delete.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/display.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/disposition.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/double_and_long_touch.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drag.rb +61 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drag_and_drop_import.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/drop.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/duplicate.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/edit.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/eval.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/extract_detach.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fill.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/find.rb +37 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fit.rb +44 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/fullscreen.rb +28 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/generate.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/gradient.rb +24 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/group.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/helper.rb +64 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/history.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/hue.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/input_text.rb +54 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/insert_attach.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/internationalisation.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/key.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/keyboard_shortcut.rb +69 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/list_methods.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/list_types.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/listen.rb +47 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mail.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/map.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mask.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/media_recorder.rb +24 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/media_streaming.rb +41 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/meteo.rb +41 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/methods_chaining.rb +8 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/midi.rb +37 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/monitoring.rb +47 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/mulitrendering.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/noise_gradient_texture.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/notification.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/object_in_object.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/on_resize.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/over.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/overflow.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/parameter.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/parent.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/particle.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/pay.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/ping.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/play.rb +24 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/play_audio.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/position.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/read_file.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/reboot.rb +15 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/refresh.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/remote_server.rb +31 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/render.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/repeat.rb +19 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/require_remote.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/restore_atome.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/resurect.rb +30 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/ruby_version.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/say.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/scale.rb +41 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/schedule.rb +39 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/scroll.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/select.rb +32 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/selector.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/shadow.rb +30 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/shape_with_path.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/size.rb +109 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/smooth.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/speech_renderer.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/synth.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/system.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/tags.rb +18 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text.rb +33 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text_selection.rb +33 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/text_to_midi.rb +22 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/touch.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/touch_stop_propagation.rb +27 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/treat_object_in_object.rb +26 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/type_mutations.rb +27 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/video_callback.rb +46 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/view_mode.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/virtual_events.rb +17 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/visual.rb +23 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/vr_display.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/wait.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/web.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/web_address_bar.rb +14 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/websocket.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/Old_examples/webstate.rb +10 -0
- data/vendor/assets/build/{js/atome/kernel.js → medias/rubies/examples/animation.rb} +0 -0
- data/vendor/assets/build/medias/rubies/examples/atome.new.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/auto_height.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/auto_width.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/box.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/circle.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/clear.rb +9 -0
- data/vendor/assets/build/medias/rubies/examples/code.rb +5 -0
- data/vendor/assets/build/medias/rubies/examples/color.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/create_atome_in_atome.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/drag.rb +43 -0
- data/vendor/assets/build/medias/rubies/examples/get_renderer_list.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/grab.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/height.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/image.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/left.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/link.rb +11 -0
- data/vendor/assets/build/medias/rubies/examples/on.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/parent.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/read.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/repeat.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/right.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/rotate.rb +2 -0
- data/vendor/assets/build/medias/rubies/examples/schedule.rb +13 -0
- data/vendor/assets/build/medias/rubies/examples/smooth.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/text.rb +18 -0
- data/vendor/assets/build/medias/rubies/examples/top.rb +1 -0
- data/vendor/assets/build/medias/rubies/examples/touch.rb +6 -0
- data/vendor/assets/build/medias/rubies/examples/video.rb +52 -0
- data/vendor/assets/build/medias/rubies/examples/wait.rb +3 -0
- data/vendor/assets/build/medias/rubies/examples/web.rb +10 -0
- data/vendor/assets/build/medias/rubies/examples/width.rb +2 -0
- data/vendor/assets/build/medias/rubies/test.rb +1 -0
- data/vendor/assets/build/medias/rubies/text_read.rb +1 -0
- data/vendor/assets/build/medias/rubies/users/code.rb +6 -0
- data/vendor/assets/build/medias/utils/infos/color.rb +29 -0
- data/vendor/assets/build/medias/utils/infos/width.rb +25 -0
- data/vendor/assets/build/medias/videos/avengers.mp4 +0 -0
- data/vendor/assets/build/medias/videos/lion_king.mp4 +0 -0
- data/vendor/assets/build/medias/videos/madmax.mp4 +0 -0
- data/vendor/assets/build/medias/videos/starwars.mov +0 -0
- data/vendor/assets/build/medias/videos/superman.mp4 +0 -0
- data/vendor/assets/build/medias/videos/video_missing.mp4 +0 -0
- data/vendor/assets/{index.rb → r&d/misc.rb} +54 -1
- data/vendor/assets/r&d/ping.rb +3 -0
- data/vendor/assets/r&d/storage.rb +9 -0
- data/vendor/assets/r&d/view_example.rb +21 -0
- data/vendor/assets/server/atome_server.rb +74 -27
- data/vendor/assets/server/config.ru +2 -14
- metadata +438 -14
- data/lib/atome/kernel/atome_genesis.rb +0 -2
- data/lib/atome/kernel/properties/geometry.rb +0 -2
- data/vendor/assets/build/js/opal/opal_browser.js +0 -0
- 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,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
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
16
|
+
path
|
18
17
|
end
|
19
18
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
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
|
-
|
53
|
-
|
54
|
-
|
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
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
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
|
-
|
191
|
+
run_application(:osx, path)
|
81
192
|
when 'server'
|
82
|
-
|
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
|
-
|
211
|
+
run_application(:browser, path)
|
86
212
|
end
|
87
|
-
|
88
|
-
# type code here
|
213
|
+
|
89
214
|
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
def grab(val)
|
4
|
+
Atome.grab(val)
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
def read(file, action=:text)
|
9
|
+
Internal.send("read_#{action}", file)
|
10
|
+
end
|
11
|
+
|
12
|
+
def wait(seconds)
|
13
|
+
seconds = seconds.to_f
|
14
|
+
`setTimeout(function(){ #{yield} }, #{seconds * 1000})`
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def repeater(counter,proc)
|
19
|
+
instance_exec(counter,&proc) if proc.is_a?(Proc)
|
20
|
+
end
|
21
|
+
|
22
|
+
def repeat(delay = 1, repeat = 0, &proc)
|
23
|
+
# below we exec the call a first time
|
24
|
+
instance_exec(0,&proc) if proc.is_a?(Proc)
|
25
|
+
# as we exec one time above we subtract one below
|
26
|
+
%x{
|
27
|
+
var x = 1
|
28
|
+
var intervalID = window.setInterval(function(){ Opal.Object.$repeater(x,#{proc})
|
29
|
+
if (++x ===#{repeat} ) {
|
30
|
+
window.clearInterval(intervalID);
|
31
|
+
}}, #{delay * 1000})
|
32
|
+
}
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def schedule(date, &proc)
|
38
|
+
date = date.to_s
|
39
|
+
delimiters = [",", " ", ":", "-"]
|
40
|
+
formated_date = date.split(Regexp.union(delimiters))
|
41
|
+
missing_datas = Time.now
|
42
|
+
missing_datas = missing_datas.to_s
|
43
|
+
delimiters = [",", " ", ":", "-"]
|
44
|
+
missing_datas_formated_date = missing_datas.split(Regexp.union(delimiters))
|
45
|
+
|
46
|
+
case formated_date.length
|
47
|
+
when 1
|
48
|
+
seconds = formated_date[0]
|
49
|
+
minutes = missing_datas_formated_date[4]
|
50
|
+
hours = missing_datas_formated_date[3]
|
51
|
+
days = missing_datas_formated_date[2]
|
52
|
+
months = missing_datas_formated_date[1]
|
53
|
+
years = missing_datas_formated_date[0]
|
54
|
+
|
55
|
+
when 2
|
56
|
+
seconds = formated_date[0]
|
57
|
+
minutes = formated_date[1]
|
58
|
+
hours = missing_datas_formated_date[3]
|
59
|
+
days = missing_datas_formated_date[2]
|
60
|
+
months = missing_datas_formated_date[1]
|
61
|
+
years = missing_datas_formated_date[0]
|
62
|
+
when 3
|
63
|
+
seconds = formated_date[0]
|
64
|
+
minutes = formated_date[1]
|
65
|
+
hours = formated_date[2]
|
66
|
+
days = missing_datas_formated_date[2]
|
67
|
+
months = missing_datas_formated_date[1]
|
68
|
+
years = missing_datas_formated_date[0]
|
69
|
+
when 4
|
70
|
+
seconds = formated_date[0]
|
71
|
+
minutes = formated_date[1]
|
72
|
+
hours = formated_date[2]
|
73
|
+
days = formated_date[3]
|
74
|
+
when 5
|
75
|
+
seconds = formated_date[0]
|
76
|
+
minutes = formated_date[1]
|
77
|
+
hours = formated_date[2]
|
78
|
+
days = formated_date[3]
|
79
|
+
months = formated_date[4]
|
80
|
+
years = missing_datas_formated_date[0]
|
81
|
+
else
|
82
|
+
years = formated_date[0]
|
83
|
+
months = formated_date[1]
|
84
|
+
days = formated_date[2]
|
85
|
+
hours = formated_date[3]
|
86
|
+
minutes = formated_date[4]
|
87
|
+
seconds = formated_date[5]
|
88
|
+
end
|
89
|
+
`atome.jsSchedule(#{years},#{months},#{days},#{hours},#{minutes},#{seconds},#{proc})`
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
def schedule_callback(proc)
|
94
|
+
instance_exec(&proc) if proc.is_a?(Proc)
|
95
|
+
end
|
96
|
+
|
97
|
+
def play_video(params, &proc)
|
98
|
+
params[:atome].html_object.play
|
99
|
+
# TODO : change timeupdate for when possible requestVideoFrameCallback (opal-browser/opal/browser/event.rb line 36)
|
100
|
+
video_callback = params[:atome].bloc # this is the video callback not the play callback
|
101
|
+
play_callback = params[:proc] # this is the video callback not the play callback
|
102
|
+
params[:atome].html_object.on(:timeupdate) do |e|
|
103
|
+
# e.prevent # Prevent the default action (eg. form submission)
|
104
|
+
# You can also use `e.stop` to stop propagating the event to other handlers.
|
105
|
+
instance_exec(params[:atome].html_object.currentTime, &video_callback) if video_callback.is_a?(Proc)
|
106
|
+
instance_exec(params[:atome].html_object.currentTime, &play_callback) if play_callback.is_a?(Proc)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def pause_video(params, &proc)
|
111
|
+
params[:atome].html_object.pause
|
112
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# TODO: Id generator
|
4
|
+
# Add missing params (methods for noobs only?)
|
5
|
+
# Sanitizer (methods for noobs only?)
|
6
|
+
# Sort params (methods for noobs only?)
|
7
|
+
# Pre-processor
|
8
|
+
# Renderer
|
9
|
+
# Store
|
10
|
+
# Post-processor
|
11
|
+
# Add or set
|
12
|
+
# Getter
|
13
|
+
# parental
|
14
|
+
# modify html file to be able to add meta data
|
15
|
+
|
16
|
+
# This is the main entry for Atome class
|
17
|
+
class Atome
|
18
|
+
include Genesis
|
19
|
+
include Sanitizer
|
20
|
+
include ServerRenderer
|
21
|
+
include Render
|
22
|
+
include Internal
|
23
|
+
# include OpalRenderer
|
24
|
+
# include HeadlessRenderer
|
25
|
+
def self.atome(params)
|
26
|
+
Atome.new(params)
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.current_machine_decision(platform, output)
|
30
|
+
case platform
|
31
|
+
when /darwin/
|
32
|
+
::Regexp.last_match(1) if output =~ /en1.*?(([A-F0-9]{2}:){5}[A-F0-9]{2})/im
|
33
|
+
when /win32/
|
34
|
+
::Regexp.last_match(1) if output =~ /Physical Address.*?(([A-F0-9]{2}-){5}[A-F0-9]{2})/im
|
35
|
+
else
|
36
|
+
# Cases for other platforms...
|
37
|
+
'unknown platform'
|
38
|
+
end
|
39
|
+
platform
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.current_machine
|
43
|
+
platform = RUBY_PLATFORM.downcase
|
44
|
+
output = `#{platform =~ /win32/ ? 'ipconfig /all' : 'ifconfig'}`
|
45
|
+
current_machine_decision(platform, output)
|
46
|
+
# TODO: check the code above and create a sensible identity
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.current_user
|
50
|
+
@user
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.current_user=(user)
|
54
|
+
# TODO: create or load an existing user
|
55
|
+
# if user needs to be create the current_user will be eVe
|
56
|
+
@user = user
|
57
|
+
end
|
58
|
+
|
59
|
+
def identity_generator
|
60
|
+
{ date: Time.now, location: geolocation }
|
61
|
+
end
|
62
|
+
|
63
|
+
def additional_helper(params)
|
64
|
+
virtual_atome = Atome.new({})
|
65
|
+
@additional = virtual_atome
|
66
|
+
params.each_with_index do |additional, index|
|
67
|
+
new_atome = Atome.new({})
|
68
|
+
virtual_atome.instance_variable_set("@virtual#{index}", new_atome)
|
69
|
+
additional.each do |param, value|
|
70
|
+
new_atome.send(param, value)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def additional(params = nil)
|
76
|
+
if params
|
77
|
+
additional_helper(params)
|
78
|
+
else
|
79
|
+
@additional
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def initialize(params = {}, &bloc)
|
84
|
+
@render = []
|
85
|
+
@child = []
|
86
|
+
@html_type = :unset
|
87
|
+
# # TODO: check if we need to add properties for the root object before sending the params
|
88
|
+
params.each do |atome, values|
|
89
|
+
send(atome, values, &bloc)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
# initialize Universe
|
98
|
+
Universe.connected
|
99
|
+
# Atome.new( identity: {type: :eVe, aui: :a_97987987987})
|