lacci 0.2.1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +79 -0
- data/Rakefile +1 -4
- data/lib/lacci/scarpe_cli.rb +71 -0
- data/lib/lacci/scarpe_core.rb +22 -0
- data/lib/lacci/version.rb +13 -0
- data/lib/scarpe/niente/app.rb +23 -0
- data/lib/scarpe/niente/display_service.rb +62 -0
- data/lib/scarpe/niente/drawable.rb +57 -0
- data/lib/scarpe/niente/logger.rb +29 -0
- data/lib/scarpe/niente/shoes_spec.rb +87 -0
- data/lib/scarpe/niente.rb +20 -0
- data/lib/shoes/app.rb +165 -43
- data/lib/{scarpe → shoes}/background.rb +2 -2
- data/lib/{scarpe → shoes}/border.rb +2 -2
- data/lib/shoes/builtins.rb +63 -0
- data/lib/shoes/changelog.rb +52 -0
- data/lib/{scarpe → shoes}/colors.rb +3 -1
- data/lib/shoes/constants.rb +24 -3
- data/lib/{scarpe → shoes}/display_service.rb +45 -23
- data/lib/{scarpe → shoes}/download.rb +7 -7
- data/lib/shoes/drawable.rb +380 -0
- data/lib/shoes/drawables/arc.rb +49 -0
- data/lib/shoes/drawables/arrow.rb +41 -0
- data/lib/shoes/drawables/button.rb +73 -0
- data/lib/shoes/drawables/check.rb +29 -0
- data/lib/{scarpe → shoes/drawables}/document_root.rb +5 -5
- data/lib/{scarpe → shoes/drawables}/edit_box.rb +6 -6
- data/lib/{scarpe → shoes/drawables}/edit_line.rb +6 -6
- data/lib/shoes/drawables/flow.rb +22 -0
- data/lib/{scarpe → shoes/drawables}/image.rb +7 -13
- data/lib/shoes/drawables/line.rb +20 -0
- data/lib/shoes/drawables/link.rb +34 -0
- data/lib/shoes/drawables/list_box.rb +56 -0
- data/lib/shoes/drawables/para.rb +118 -0
- data/lib/shoes/drawables/progress.rb +14 -0
- data/lib/shoes/drawables/radio.rb +33 -0
- data/lib/shoes/drawables/rect.rb +17 -0
- data/lib/shoes/drawables/shape.rb +36 -0
- data/lib/shoes/drawables/slot.rb +87 -0
- data/lib/{scarpe → shoes/drawables}/span.rb +8 -7
- data/lib/{scarpe → shoes/drawables}/stack.rb +10 -4
- data/lib/shoes/drawables/star.rb +50 -0
- data/lib/shoes/drawables/subscription_item.rb +93 -0
- data/lib/shoes/drawables/text_drawable.rb +63 -0
- data/lib/shoes/drawables/video.rb +16 -0
- data/lib/shoes/drawables/widget.rb +69 -0
- data/lib/shoes/drawables.rb +31 -0
- data/lib/shoes/errors.rb +28 -0
- data/lib/shoes/log.rb +71 -0
- data/lib/shoes/ruby_extensions.rb +15 -0
- data/lib/shoes/spacing.rb +9 -0
- data/lib/shoes-spec.rb +93 -0
- data/lib/shoes.rb +93 -11
- metadata +67 -557
- data/.rubocop.yml +0 -85
- data/.ruby-version +0 -1
- data/.vscode/extensions.json +0 -5
- data/.yardopts +0 -12
- data/CHANGELOG.md +0 -19
- data/CODE_OF_CONDUCT.md +0 -84
- data/CONTRIBUTING.md +0 -20
- data/LICENSE.txt +0 -21
- data/README.md +0 -178
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/dev.yml +0 -7
- data/docs/static/PKGBUILD +0 -47
- data/docs/static/Shoes.icns +0 -0
- data/docs/static/avatar.png +0 -0
- data/docs/static/code_highlighter.js +0 -188
- data/docs/static/code_highlighter_ruby.js +0 -26
- data/docs/static/icon-debug.png +0 -0
- data/docs/static/icon-error.png +0 -0
- data/docs/static/icon-info.png +0 -0
- data/docs/static/icon-warn.png +0 -0
- data/docs/static/listbox_button1.png +0 -0
- data/docs/static/listbox_button2.png +0 -0
- data/docs/static/man-app.png +0 -0
- data/docs/static/man-builds.png +0 -0
- data/docs/static/man-builds1.png +0 -0
- data/docs/static/man-editor-notepad.png +0 -0
- data/docs/static/man-editor-osx.png +0 -0
- data/docs/static/man-ele-background.png +0 -0
- data/docs/static/man-ele-border.png +0 -0
- data/docs/static/man-ele-button.png +0 -0
- data/docs/static/man-ele-check.png +0 -0
- data/docs/static/man-ele-editbox.png +0 -0
- data/docs/static/man-ele-editline.png +0 -0
- data/docs/static/man-ele-image.png +0 -0
- data/docs/static/man-ele-listbox.png +0 -0
- data/docs/static/man-ele-progress.png +0 -0
- data/docs/static/man-ele-radio.png +0 -0
- data/docs/static/man-ele-shape.png +0 -0
- data/docs/static/man-ele-textblock.png +0 -0
- data/docs/static/man-ele-video.png +0 -0
- data/docs/static/man-intro-dmg.png +0 -0
- data/docs/static/man-intro-exe.png +0 -0
- data/docs/static/man-look-tiger.png +0 -0
- data/docs/static/man-look-ubuntu.png +0 -0
- data/docs/static/man-look-vista.png +0 -0
- data/docs/static/man-run-osx.png +0 -0
- data/docs/static/man-run-vista.png +0 -0
- data/docs/static/man-run-xp.png +0 -0
- data/docs/static/man-shot1.png +0 -0
- data/docs/static/manual-en.txt +0 -3529
- data/docs/static/manual-ja.txt +0 -2829
- data/docs/static/manual.css +0 -171
- data/docs/static/manual.md +0 -3528
- data/docs/static/menu-corner1.png +0 -0
- data/docs/static/menu-corner2.png +0 -0
- data/docs/static/menu-gray.png +0 -0
- data/docs/static/menu-left.png +0 -0
- data/docs/static/menu-right.png +0 -0
- data/docs/static/menu-top.png +0 -0
- data/docs/static/shoes-dmg.jpg +0 -0
- data/docs/static/shoes-icon-blue.png +0 -0
- data/docs/static/shoes-icon.png +0 -0
- data/docs/static/shoes-manual-apps.gif +0 -0
- data/docs/static/shoes_main_window.png +0 -0
- data/docs/static/stripe.png +0 -0
- data/docs/static/stubs/blank.exe +0 -0
- data/docs/static/stubs/blank.hfz +0 -0
- data/docs/static/stubs/blank.run +0 -375
- data/docs/static/stubs/cocoa-install +0 -0
- data/docs/static/stubs/sh-install +0 -49
- data/docs/static/stubs/shoes-stub-inject.exe +0 -0
- data/docs/static/stubs/shoes-stub.exe +0 -0
- data/docs/static/tutor-back.png +0 -0
- data/docs/yard/catscradle.md +0 -44
- data/docs/yard/template/default/fulldoc/html/setup.rb +0 -13
- data/docs/yard/template/default/layout/html/setup.rb +0 -9
- data/examples/backdround_with_image.rb +0 -16
- data/examples/bloopsaphone/working/1901_by_Aanand_Prasad.rb +0 -478
- data/examples/bloopsaphone/working/b1.rb +0 -64
- data/examples/bloopsaphone/working/b2.rb +0 -36
- data/examples/bloopsaphone/working/bloops_test.rb +0 -41
- data/examples/bloopsaphone/working/bloopsaphone_theme_song_by_why.rb +0 -31
- data/examples/bloopsaphone/working/feepogram.rb +0 -67
- data/examples/bloopsaphone/working/simpsons_theme_song_by_why.rb +0 -14
- data/examples/bloopsaphone/working/tune_cheeky_drat.rb +0 -210
- data/examples/button.rb +0 -10
- data/examples/button_alert.rb +0 -6
- data/examples/button_go_away.rb +0 -6
- data/examples/button_with_position_and_size.rb +0 -7
- data/examples/coffee.rb +0 -14
- data/examples/download.rb +0 -5
- data/examples/download_and_show_image.rb +0 -28
- data/examples/edit_box.rb +0 -8
- data/examples/edit_line.rb +0 -8
- data/examples/fill.rb +0 -25
- data/examples/flow.rb +0 -11
- data/examples/fonts.rb +0 -6
- data/examples/gen.rb +0 -140
- data/examples/get_headers.rb +0 -10
- data/examples/hello_world.rb +0 -3
- data/examples/highlander.rb +0 -87
- data/examples/image/clickable_image.rb +0 -5
- data/examples/image/image.rb +0 -3
- data/examples/image/image_size.rb +0 -7
- data/examples/image/image_with_position_and_size.rb +0 -3
- data/examples/info.rb +0 -9
- data/examples/legacy/not_checked/expert/colours.rb +0 -105
- data/examples/legacy/not_checked/expert/curve-animation.rb +0 -31
- data/examples/legacy/not_checked/expert/curve-control-point.rb +0 -51
- data/examples/legacy/not_checked/expert/custom-list-box.rb +0 -53
- data/examples/legacy/not_checked/expert/definr.rb +0 -23
- data/examples/legacy/not_checked/expert/funnies.rb +0 -56
- data/examples/legacy/not_checked/expert/minesweeper.rb +0 -267
- data/examples/legacy/not_checked/expert/othello.rb +0 -318
- data/examples/legacy/not_checked/expert/pong.rb +0 -62
- data/examples/legacy/not_checked/expert/tankspank.rb +0 -385
- data/examples/legacy/not_checked/expert/tooltips.rb +0 -45
- data/examples/legacy/not_checked/expert/url.rb +0 -37
- data/examples/legacy/not_checked/expert/video-player.rb +0 -256
- data/examples/legacy/not_checked/good/_why-stories.rb +0 -44
- data/examples/legacy/not_checked/good/_why-stories.yaml +0 -387
- data/examples/legacy/not_checked/good/arc.rb +0 -37
- data/examples/legacy/not_checked/good/cardflip.rb +0 -141
- data/examples/legacy/not_checked/good/clock.rb +0 -51
- data/examples/legacy/not_checked/good/console.rb +0 -21
- data/examples/legacy/not_checked/good/follow.rb +0 -26
- data/examples/legacy/not_checked/good/image-rotate.rb +0 -14
- data/examples/legacy/not_checked/good/paris.svg +0 -7236
- data/examples/legacy/not_checked/good/path-animation.rb +0 -46
- data/examples/legacy/not_checked/good/plots.rb +0 -100
- data/examples/legacy/not_checked/good/reminder.rb +0 -174
- data/examples/legacy/not_checked/good/svgview.rb +0 -113
- data/examples/legacy/not_checked/good/vjot.rb +0 -56
- data/examples/legacy/not_checked/shoes-contrib/.gitignore +0 -2
- data/examples/legacy/not_checked/shoes-contrib/README.md +0 -34
- data/examples/legacy/not_checked/shoes-contrib/animation/animate-ovals.rb +0 -21
- data/examples/legacy/not_checked/shoes-contrib/animation/flowers.rb +0 -59
- data/examples/legacy/not_checked/shoes-contrib/animation/happy-trails.rb +0 -31
- data/examples/legacy/not_checked/shoes-contrib/animation/mice-satellites.rb +0 -27
- data/examples/legacy/not_checked/shoes-contrib/animation/oval-motion.rb +0 -12
- data/examples/legacy/not_checked/shoes-contrib/animation/pink-bubbles.rb +0 -34
- data/examples/legacy/not_checked/shoes-contrib/animation/pulsate.rb +0 -18
- data/examples/legacy/not_checked/shoes-contrib/animation/rotating-star.rb +0 -18
- data/examples/legacy/not_checked/shoes-contrib/app/download-and-save.rb +0 -11
- data/examples/legacy/not_checked/shoes-contrib/app/download.rb +0 -10
- data/examples/legacy/not_checked/shoes-contrib/app/get-google.rb +0 -11
- data/examples/legacy/not_checked/shoes-contrib/app/mouse-detection.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/app/resizeable-false.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/art/bubble-bullseye.rb +0 -23
- data/examples/legacy/not_checked/shoes-contrib/art/faded.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/art/fill-oval.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/art/mask.rb +0 -15
- data/examples/legacy/not_checked/shoes-contrib/art/oval-gradient.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/art/star-gradient.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-edit-box.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-new-window.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-image.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval-shape.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/basic-oval.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/basic/class-book.rb +0 -43
- data/examples/legacy/not_checked/shoes-contrib/basic/class-book.yaml +0 -387
- data/examples/legacy/not_checked/shoes-contrib/basic/clock.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/basic/edit-stack +0 -14
- data/examples/legacy/not_checked/shoes-contrib/basic/gradient-shoes.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/basic/list_box-shape-report.rb +0 -19
- data/examples/legacy/not_checked/shoes-contrib/basic/rect-arrow.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/basic/scribble.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/basic/search.rb +0 -32
- data/examples/legacy/not_checked/shoes-contrib/basic/shoes-notes.rb +0 -16
- data/examples/legacy/not_checked/shoes-contrib/basic/url-shoes-subclassing.rb +0 -24
- data/examples/legacy/not_checked/shoes-contrib/browser.rb +0 -21
- data/examples/legacy/not_checked/shoes-contrib/elements/background-column.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/elements/background.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/elements/basic-fps.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/border-cat.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/button-block.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/elements/check-mate.rb +0 -15
- data/examples/legacy/not_checked/shoes-contrib/elements/common-styles.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/displace-animation.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/edit_box-character-count.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/edit_line-character-count.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/image-icon.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/elements/list_box-select-class.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/list_box.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/move-flow-animate.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/elements/phat-button.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/popup.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/elements/progress-bar.rb +0 -10
- data/examples/legacy/not_checked/shoes-contrib/elements/radio-dreamcast-favs.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/elements/timer.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/elements/width-introspec.rb +0 -8
- data/examples/legacy/not_checked/shoes-contrib/events/background-hover.rb +0 -11
- data/examples/legacy/not_checked/shoes-contrib/events/motion-detect.rb +0 -9
- data/examples/legacy/not_checked/shoes-contrib/events/pressed-key.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/expert/expert-funnies.rb +0 -51
- data/examples/legacy/not_checked/shoes-contrib/expert/expert-irb.rb +0 -112
- data/examples/legacy/not_checked/shoes-contrib/expert/expert-othello.rb +0 -319
- data/examples/legacy/not_checked/shoes-contrib/good/good-arc.rb +0 -37
- data/examples/legacy/not_checked/shoes-contrib/good/good-clock.rb +0 -51
- data/examples/legacy/not_checked/shoes-contrib/good/good-follow.rb +0 -26
- data/examples/legacy/not_checked/shoes-contrib/good/good-reminder.rb +0 -174
- data/examples/legacy/not_checked/shoes-contrib/good/good-vjot.rb +0 -56
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask_color.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask_open_file.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/ask_save_file.rb +0 -7
- data/examples/legacy/not_checked/shoes-contrib/kernel/confirm.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/kernel/debug.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/kernel/exit.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/kernel/font.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/kernel/fonts.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/manipulation/append-slot.rb +0 -9
- data/examples/legacy/not_checked/shoes-contrib/manipulation/clear-slot.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/manipulation/prepend-slot.rb +0 -6
- data/examples/legacy/not_checked/shoes-contrib/manipulation/roll.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/position/gutter-margin.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/position/stack-width.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-accordion.rb +0 -75
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-shapes.rb +0 -17
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-anim-text.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-arc.rb +0 -23
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-bounce.rb +0 -24
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-calc.rb +0 -70
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-chipmunk.rb +0 -26
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-control-sizes.rb +0 -24
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-curve.rb +0 -26
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-dialogs.rb +0 -29
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-downloader.rb +0 -27
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-draw.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-editor.rb +0 -28
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.rb +0 -28
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-form.shy +0 -0
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-mask.rb +0 -21
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu.rb +0 -31
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-menu1.rb +0 -35
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-rubygems.rb +0 -29
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-slide.rb +0 -45
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-sphere.rb +0 -28
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-sqlite3.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-timer.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/simple/simple-video.rb +0 -13
- data/examples/legacy/not_checked/shoes-contrib/styles/alignment.rb +0 -4
- data/examples/legacy/not_checked/shoes-contrib/styles/attachment.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/styles/emphasis.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/styles/gradient-angle.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/styles/para-methods.rb +0 -5
- data/examples/legacy/not_checked/shoes-contrib/styles/para-red-underlined.rb +0 -3
- data/examples/legacy/not_checked/shoes-contrib/styles/para-style-method.rb +0 -4
- data/examples/legacy/not_checked/shoes-dep-samples/expert-game-of-life.rb +0 -243
- data/examples/legacy/not_checked/shoes-dep-samples/expert-othello.rb +0 -319
- data/examples/legacy/not_checked/shoes-dep-samples/good-clock.rb +0 -51
- data/examples/legacy/not_checked/shoes-dep-samples/good-follow.rb +0 -26
- data/examples/legacy/not_checked/shoes-dep-samples/good-reminder.rb +0 -174
- data/examples/legacy/not_checked/shoes-dep-samples/good-vjot.rb +0 -56
- data/examples/legacy/not_checked/shoes-dep-samples/simple-accordion.rb +0 -75
- data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-shapes.rb +0 -17
- data/examples/legacy/not_checked/shoes-dep-samples/simple-anim-text.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-arc.rb +0 -23
- data/examples/legacy/not_checked/shoes-dep-samples/simple-bounce.rb +0 -24
- data/examples/legacy/not_checked/shoes-dep-samples/simple-calc.rb +0 -70
- data/examples/legacy/not_checked/shoes-dep-samples/simple-chipmunk.rb +0 -26
- data/examples/legacy/not_checked/shoes-dep-samples/simple-control-sizes.rb +0 -24
- data/examples/legacy/not_checked/shoes-dep-samples/simple-curve.rb +0 -26
- data/examples/legacy/not_checked/shoes-dep-samples/simple-dialogs.rb +0 -29
- data/examples/legacy/not_checked/shoes-dep-samples/simple-draw.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-editor.rb +0 -28
- data/examples/legacy/not_checked/shoes-dep-samples/simple-form.rb +0 -28
- data/examples/legacy/not_checked/shoes-dep-samples/simple-form.shy +0 -0
- data/examples/legacy/not_checked/shoes-dep-samples/simple-mask.rb +0 -21
- data/examples/legacy/not_checked/shoes-dep-samples/simple-menu.rb +0 -31
- data/examples/legacy/not_checked/shoes-dep-samples/simple-menu1.rb +0 -35
- data/examples/legacy/not_checked/shoes-dep-samples/simple-rubygems.rb +0 -29
- data/examples/legacy/not_checked/shoes-dep-samples/simple-slide.rb +0 -45
- data/examples/legacy/not_checked/shoes-dep-samples/simple-sphere.rb +0 -28
- data/examples/legacy/not_checked/shoes-dep-samples/simple-sqlite3.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-timer.rb +0 -13
- data/examples/legacy/not_checked/shoes-dep-samples/simple-video.rb +0 -13
- data/examples/legacy/not_checked/shoes3-tests/AnemicCinema1926marcelDuchampCut.mp4 +0 -0
- data/examples/legacy/not_checked/shoes3-tests/button/button.rb +0 -53
- data/examples/legacy/not_checked/shoes3-tests/cache/cache.rb +0 -41
- data/examples/legacy/not_checked/shoes3-tests/combo/combo.rb +0 -24
- data/examples/legacy/not_checked/shoes3-tests/curl/bare.rb +0 -34
- data/examples/legacy/not_checked/shoes3-tests/curl/downloader.rb +0 -40
- data/examples/legacy/not_checked/shoes3-tests/curl/m1.rb +0 -11
- data/examples/legacy/not_checked/shoes3-tests/curl/m2.rb +0 -12
- data/examples/legacy/not_checked/shoes3-tests/curl/m3.rb +0 -11
- data/examples/legacy/not_checked/shoes3-tests/curl/m4.rb +0 -5
- data/examples/legacy/not_checked/shoes3-tests/curl/typ.rb +0 -30
- data/examples/legacy/not_checked/shoes3-tests/cursor/c1.rb +0 -21
- data/examples/legacy/not_checked/shoes3-tests/decoration.rb +0 -14
- data/examples/legacy/not_checked/shoes3-tests/dialogs/ask.rb +0 -6
- data/examples/legacy/not_checked/shoes3-tests/dialogs/confirm.rb +0 -6
- data/examples/legacy/not_checked/shoes3-tests/editbox/editbox.rb +0 -36
- data/examples/legacy/not_checked/shoes3-tests/editline/editline.rb +0 -27
- data/examples/legacy/not_checked/shoes3-tests/events/button.rb +0 -32
- data/examples/legacy/not_checked/shoes3-tests/events/button.yaml +0 -40
- data/examples/legacy/not_checked/shoes3-tests/events/capture.rb +0 -57
- data/examples/legacy/not_checked/shoes3-tests/events/chipmunk.yaml +0 -47
- data/examples/legacy/not_checked/shoes3-tests/events/event0.rb +0 -8
- data/examples/legacy/not_checked/shoes3-tests/events/event1.rb +0 -51
- data/examples/legacy/not_checked/shoes3-tests/events/event1.yaml +0 -26
- data/examples/legacy/not_checked/shoes3-tests/events/event2.rb +0 -46
- data/examples/legacy/not_checked/shoes3-tests/events/event3.rb +0 -44
- data/examples/legacy/not_checked/shoes3-tests/events/event4.rb +0 -65
- data/examples/legacy/not_checked/shoes3-tests/events/event5.rb +0 -17
- data/examples/legacy/not_checked/shoes3-tests/events/event6.rb +0 -51
- data/examples/legacy/not_checked/shoes3-tests/events/replay.rb +0 -60
- data/examples/legacy/not_checked/shoes3-tests/gapp/fullscreen.rb +0 -38
- data/examples/legacy/not_checked/shoes3-tests/gapp/icon.rb +0 -56
- data/examples/legacy/not_checked/shoes3-tests/gapp/mon1.rb +0 -46
- data/examples/legacy/not_checked/shoes3-tests/gapp/settings1.rb +0 -22
- data/examples/legacy/not_checked/shoes3-tests/gapp/title1.rb +0 -34
- data/examples/legacy/not_checked/shoes3-tests/indian.m4a +0 -0
- data/examples/legacy/not_checked/shoes3-tests/menus/event.rb +0 -33
- data/examples/legacy/not_checked/shoes3-tests/menus/menu1.rb +0 -8
- data/examples/legacy/not_checked/shoes3-tests/menus/menu2.rb +0 -25
- data/examples/legacy/not_checked/shoes3-tests/menus/menu3.rb +0 -103
- data/examples/legacy/not_checked/shoes3-tests/menus/menu4.rb +0 -41
- data/examples/legacy/not_checked/shoes3-tests/menus/tests.txt +0 -42
- data/examples/legacy/not_checked/shoes3-tests/opacity.rb +0 -13
- data/examples/legacy/not_checked/shoes3-tests/plot/^IRX.R +0 -5219
- data/examples/legacy/not_checked/shoes3-tests/plot/^SPX +0 -5219
- data/examples/legacy/not_checked/shoes3-tests/plot/cstest.rb +0 -51
- data/examples/legacy/not_checked/shoes3-tests/plot/gr1.rb +0 -73
- data/examples/legacy/not_checked/shoes3-tests/plot/gr2.rb +0 -40
- data/examples/legacy/not_checked/shoes3-tests/plot/gr3.rb +0 -47
- data/examples/legacy/not_checked/shoes3-tests/plot/gr4.rb +0 -35
- data/examples/legacy/not_checked/shoes3-tests/plot/gr5.rb +0 -31
- data/examples/legacy/not_checked/shoes3-tests/plot/gr6.rb +0 -35
- data/examples/legacy/not_checked/shoes3-tests/plot/gr7.rb +0 -37
- data/examples/legacy/not_checked/shoes3-tests/plot/grcsv.rb +0 -219
- data/examples/legacy/not_checked/shoes3-tests/plot/manual.rb +0 -40
- data/examples/legacy/not_checked/shoes3-tests/progress/progress.rb +0 -29
- data/examples/legacy/not_checked/shoes3-tests/radio/clear.rb +0 -20
- data/examples/legacy/not_checked/shoes3-tests/radio/group.rb +0 -18
- data/examples/legacy/not_checked/shoes3-tests/radio/multiple.rb +0 -32
- data/examples/legacy/not_checked/shoes3-tests/radio/nogroup.rb +0 -9
- data/examples/legacy/not_checked/shoes3-tests/simpletest.svg +0 -14
- data/examples/legacy/not_checked/shoes3-tests/spinner.rb +0 -15
- data/examples/legacy/not_checked/shoes3-tests/svg.rb +0 -208
- data/examples/legacy/not_checked/shoes3-tests/switch/switch.rb +0 -28
- data/examples/legacy/not_checked/shoes3-tests/systray/back.rb +0 -20
- data/examples/legacy/not_checked/shoes3-tests/systray/note.rb +0 -17
- data/examples/legacy/not_checked/shoes3-tests/terminal/cursor.rb +0 -27
- data/examples/legacy/not_checked/shoes3-tests/terminal/ed.rb +0 -65
- data/examples/legacy/not_checked/shoes3-tests/terminal/el.rb +0 -50
- data/examples/legacy/not_checked/shoes3-tests/terminal/logattr.rb +0 -31
- data/examples/legacy/not_checked/shoes3-tests/tests_color.rb +0 -138
- data/examples/legacy/not_checked/shoes3-tests/tests_svg.rb +0 -228
- data/examples/legacy/not_checked/shoes3-tests/tests_video_vlc.rb +0 -186
- data/examples/legacy/not_checked/shoes3-tests/tooltips.rb +0 -20
- data/examples/legacy/not_checked/shoes3-tests/video_vlc.rb +0 -242
- data/examples/legacy/not_checked/shoes3-tests/wheel/wheel1.rb +0 -21
- data/examples/legacy/not_checked/simple/accordion.rb +0 -81
- data/examples/legacy/not_checked/simple/anim-shapes.rb +0 -17
- data/examples/legacy/not_checked/simple/anim-text.rb +0 -13
- data/examples/legacy/not_checked/simple/arc.rb +0 -23
- data/examples/legacy/not_checked/simple/bounce.rb +0 -24
- data/examples/legacy/not_checked/simple/chipmunk.rb +0 -26
- data/examples/legacy/not_checked/simple/control-sizes.rb +0 -24
- data/examples/legacy/not_checked/simple/curve-control-points.rb +0 -24
- data/examples/legacy/not_checked/simple/curve.rb +0 -26
- data/examples/legacy/not_checked/simple/dialogs.rb +0 -29
- data/examples/legacy/not_checked/simple/downloader.rb +0 -40
- data/examples/legacy/not_checked/simple/downloader1.rb +0 -31
- data/examples/legacy/not_checked/simple/draw.rb +0 -13
- data/examples/legacy/not_checked/simple/editor.rb +0 -28
- data/examples/legacy/not_checked/simple/form.rb +0 -30
- data/examples/legacy/not_checked/simple/image.rb +0 -21
- data/examples/legacy/not_checked/simple/info.rb +0 -78
- data/examples/legacy/not_checked/simple/mask.rb +0 -21
- data/examples/legacy/not_checked/simple/mask2.rb +0 -27
- data/examples/legacy/not_checked/simple/menu.rb +0 -31
- data/examples/legacy/not_checked/simple/menu1.rb +0 -35
- data/examples/legacy/not_checked/simple/slide.rb +0 -45
- data/examples/legacy/not_checked/simple/sphere.rb +0 -28
- data/examples/legacy/not_checked/superleg.rb +0 -244
- data/examples/legacy/working/shoes-contrib/basic/a-poem.rb +0 -24
- data/examples/legacy/working/shoes-contrib/basic/basic-blocks-instances.rb +0 -7
- data/examples/legacy/working/shoes-contrib/basic/basic-blocks.rb +0 -7
- data/examples/legacy/working/shoes-contrib/basic/basic-slot.rb +0 -8
- data/examples/legacy/working/shoes-contrib/basic/intro.rb +0 -20
- data/examples/legacy/working/shoes-contrib/basic/two-column.rb +0 -12
- data/examples/legacy/working/shoes-contrib/elements/edit_box.rb +0 -6
- data/examples/legacy/working/shoes-contrib/kernel/alert.rb +0 -3
- data/examples/legacy/working/simple/calc.rb +0 -71
- data/examples/legacy/working/simple/sqlite3.rb +0 -27
- data/examples/legacy/working/simple/timer.rb +0 -13
- data/examples/line.rb +0 -5
- data/examples/link.rb +0 -20
- data/examples/list_box.rb +0 -8
- data/examples/local_fonts.rb +0 -4
- data/examples/local_images.rb +0 -4
- data/examples/motion_events.rb +0 -20
- data/examples/para/collection_of_arguments.rb +0 -9
- data/examples/para/hello_world.rb +0 -5
- data/examples/para/hide_and_show.rb +0 -9
- data/examples/para/rainbow.rb +0 -11
- data/examples/para/rainbow_2.rb +0 -11
- data/examples/para/sizes.rb +0 -11
- data/examples/para/sizes_2.rb +0 -12
- data/examples/para/strong.rb +0 -3
- data/examples/para_text_widgets.rb +0 -4
- data/examples/parse_xl_funnies.rb +0 -58
- data/examples/pirate.png +0 -0
- data/examples/raw_flow.rb +0 -11
- data/examples/ruby_racer.rb +0 -50
- data/examples/selfitude.rb +0 -18
- data/examples/shapes/arc.rb +0 -8
- data/examples/shapes/shapes.rb +0 -8
- data/examples/shapes/shapes_fill.rb +0 -10
- data/examples/shapes/star.rb +0 -5
- data/examples/shoes_school.rb +0 -66
- data/examples/shoes_splorer.rb +0 -150
- data/examples/simple_slides.rb +0 -73
- data/examples/skip_ci/parrot.rb +0 -22
- data/examples/skip_ci/say.rb +0 -20
- data/examples/sleepless.rb +0 -26
- data/examples/slots.rb +0 -10
- data/examples/spacing.rb +0 -18
- data/examples/span.rb +0 -6
- data/examples/stack/background.rb +0 -35
- data/examples/stack/border.rb +0 -11
- data/examples/stack/gradients.rb +0 -6
- data/examples/stack/raw_stack.rb +0 -8
- data/examples/stack/stack.rb +0 -27
- data/examples/text_change.rb +0 -4
- data/examples/text_sizes.rb +0 -10
- data/examples/timmy.rb +0 -109
- data/examples/title_and_resize.rb +0 -3
- data/examples/video.rb +0 -10
- data/exe/scarpe +0 -107
- data/fonts/Pacifico.ttf +0 -0
- data/lib/scarpe/alert.rb +0 -19
- data/lib/scarpe/arc.rb +0 -49
- data/lib/scarpe/base64.rb +0 -27
- data/lib/scarpe/button.rb +0 -35
- data/lib/scarpe/cats_cradle.rb +0 -255
- data/lib/scarpe/fill.rb +0 -23
- data/lib/scarpe/flow.rb +0 -18
- data/lib/scarpe/font.rb +0 -14
- data/lib/scarpe/glibui/README.md +0 -34
- data/lib/scarpe/glibui/alert.rb +0 -65
- data/lib/scarpe/glibui/app.rb +0 -27
- data/lib/scarpe/glibui/background.rb +0 -18
- data/lib/scarpe/glibui/border.rb +0 -22
- data/lib/scarpe/glibui/button.rb +0 -38
- data/lib/scarpe/glibui/dimensions.rb +0 -22
- data/lib/scarpe/glibui/document_root.rb +0 -33
- data/lib/scarpe/glibui/edit_box.rb +0 -44
- data/lib/scarpe/glibui/edit_line.rb +0 -43
- data/lib/scarpe/glibui/flow.rb +0 -33
- data/lib/scarpe/glibui/html.rb +0 -77
- data/lib/scarpe/glibui/image.rb +0 -36
- data/lib/scarpe/glibui/link.rb +0 -29
- data/lib/scarpe/glibui/local_display.rb +0 -62
- data/lib/scarpe/glibui/para.rb +0 -84
- data/lib/scarpe/glibui/spacing.rb +0 -41
- data/lib/scarpe/glibui/stack.rb +0 -33
- data/lib/scarpe/glibui/text_widget.rb +0 -30
- data/lib/scarpe/glibui/widget.rb +0 -81
- data/lib/scarpe/glibui.rb +0 -29
- data/lib/scarpe/libui/alert.rb +0 -9
- data/lib/scarpe/libui/button.rb +0 -18
- data/lib/scarpe/libui/colors.rb +0 -157
- data/lib/scarpe/libui/core.rb +0 -66
- data/lib/scarpe/libui/flow.rb +0 -16
- data/lib/scarpe/libui/libui.rb +0 -45
- data/lib/scarpe/libui/notepad.md +0 -26
- data/lib/scarpe/libui/para.rb +0 -154
- data/lib/scarpe/libui/stack.rb +0 -34
- data/lib/scarpe/line.rb +0 -25
- data/lib/scarpe/link.rb +0 -25
- data/lib/scarpe/list_box.rb +0 -25
- data/lib/scarpe/logger.rb +0 -159
- data/lib/scarpe/para.rb +0 -92
- data/lib/scarpe/promises.rb +0 -405
- data/lib/scarpe/shape.rb +0 -20
- data/lib/scarpe/slot.rb +0 -7
- data/lib/scarpe/spacing.rb +0 -9
- data/lib/scarpe/star.rb +0 -47
- data/lib/scarpe/subscription_item.rb +0 -60
- data/lib/scarpe/unit_test_helpers.rb +0 -236
- data/lib/scarpe/version.rb +0 -5
- data/lib/scarpe/video.rb +0 -15
- data/lib/scarpe/widgets.rb +0 -35
- data/lib/scarpe/wv/alert.rb +0 -65
- data/lib/scarpe/wv/app.rb +0 -104
- data/lib/scarpe/wv/arc.rb +0 -57
- data/lib/scarpe/wv/background.rb +0 -27
- data/lib/scarpe/wv/border.rb +0 -24
- data/lib/scarpe/wv/button.rb +0 -50
- data/lib/scarpe/wv/control_interface.rb +0 -147
- data/lib/scarpe/wv/control_interface_test.rb +0 -234
- data/lib/scarpe/wv/dimensions.rb +0 -22
- data/lib/scarpe/wv/document_root.rb +0 -8
- data/lib/scarpe/wv/edit_box.rb +0 -44
- data/lib/scarpe/wv/edit_line.rb +0 -43
- data/lib/scarpe/wv/fill.rb +0 -30
- data/lib/scarpe/wv/flow.rb +0 -24
- data/lib/scarpe/wv/font.rb +0 -36
- data/lib/scarpe/wv/html.rb +0 -108
- data/lib/scarpe/wv/image.rb +0 -41
- data/lib/scarpe/wv/line.rb +0 -38
- data/lib/scarpe/wv/link.rb +0 -29
- data/lib/scarpe/wv/list_box.rb +0 -50
- data/lib/scarpe/wv/para.rb +0 -90
- data/lib/scarpe/wv/shape.rb +0 -35
- data/lib/scarpe/wv/shape_helper.rb +0 -44
- data/lib/scarpe/wv/slot.rb +0 -81
- data/lib/scarpe/wv/spacing.rb +0 -41
- data/lib/scarpe/wv/span.rb +0 -66
- data/lib/scarpe/wv/stack.rb +0 -24
- data/lib/scarpe/wv/star.rb +0 -64
- data/lib/scarpe/wv/subscription_item.rb +0 -50
- data/lib/scarpe/wv/text_widget.rb +0 -30
- data/lib/scarpe/wv/video.rb +0 -42
- data/lib/scarpe/wv/web_wrangler.rb +0 -683
- data/lib/scarpe/wv/webview_local_display.rb +0 -73
- data/lib/scarpe/wv/webview_relay_display.rb +0 -185
- data/lib/scarpe/wv/widget.rb +0 -185
- data/lib/scarpe/wv/wv_display_worker.rb +0 -65
- data/lib/scarpe/wv.rb +0 -43
- data/lib/scarpe/wv_local.rb +0 -6
- data/lib/scarpe/wv_relay.rb +0 -6
- data/lib/scarpe.rb +0 -29
- data/lib/shoes/text_widget.rb +0 -52
- data/lib/shoes/widget.rb +0 -209
- data/logger/debug_web_wrangler.json +0 -4
- data/logger/scarpe_wv_test.json +0 -4
- data/scarpe-0.2.0.gem +0 -0
- data/scarpe.gemspec +0 -44
- data/scarpegen.rb +0 -193
- data/sig/scarpe.rbs +0 -4
- data/templates/basic_class_template.erb +0 -38
- data/templates/class_template_with_event_bind.erb +0 -27
- data/templates/class_template_with_shapes.erb +0 -43
- data/templates/example_template.erb +0 -3
- data/templates/module_template.erb +0 -12
- data/templates/webview_template.erb +0 -27
data/lib/scarpe/promises.rb
DELETED
@@ -1,405 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Funny thing... We need promises as an API concept since we have a JS event
|
4
|
-
# loop doing its thing, and we need to respond to actions that it takes.
|
5
|
-
# But there's not really a Ruby implementation of Promises *without* an
|
6
|
-
# attached form of concurrency. So here we are, writing our own :-/
|
7
|
-
#
|
8
|
-
# In theory you could probably write some kind of "no-op thread pool"
|
9
|
-
# for the ruby-concurrency gem, pass it manually to every promise we
|
10
|
-
# created and then raise an exception any time we tried to do something
|
11
|
-
# in the background. That's probably more code than writing our own, though,
|
12
|
-
# and we'd be fighting it constantly.
|
13
|
-
#
|
14
|
-
# This class is inspired by concurrent-ruby [Promise](https://ruby-concurrency.github.io/concurrent-ruby/1.1.5/Concurrent/Promise.html)
|
15
|
-
# which is inspired by Javascript Promises, which is what we actually need
|
16
|
-
# for our use case. We can't easily tell when our WebView begins processing
|
17
|
-
# our request, which removes the :processing state. This can be used for
|
18
|
-
# executing JS, but also generally waiting on events.
|
19
|
-
#
|
20
|
-
# We don't fully control ordering here, so it *is* conceivable that a
|
21
|
-
# child waiting on a parent can be randomly fulfilled, even if we didn't
|
22
|
-
# expect it. We don't consider that an error. Similarly, we'll call
|
23
|
-
# on_scheduled callbacks if a promise is fulfilled, even though we
|
24
|
-
# never explicitly scheduled it. If a promise is *rejected* without
|
25
|
-
# ever being scheduled, we won't call those callbacks.
|
26
|
-
|
27
|
-
class Scarpe
|
28
|
-
class Promise
|
29
|
-
include Scarpe::Log
|
30
|
-
|
31
|
-
PROMISE_STATES = [:unscheduled, :pending, :fulfilled, :rejected]
|
32
|
-
|
33
|
-
attr_reader :state
|
34
|
-
attr_reader :parents
|
35
|
-
attr_reader :returned_value
|
36
|
-
attr_reader :reason
|
37
|
-
|
38
|
-
# These methods are meant to be a prettier interface to promises,
|
39
|
-
# suitable for day-to-day usage.
|
40
|
-
|
41
|
-
# Create a promise and then instantly fulfill it.
|
42
|
-
def self.fulfilled(return_val = nil, parents: [], &block)
|
43
|
-
p = Promise.new(parents: parents, &block)
|
44
|
-
p.fulfilled!(return_val)
|
45
|
-
p
|
46
|
-
end
|
47
|
-
|
48
|
-
# Create a promise and then instantly reject it.
|
49
|
-
def self.rejected(reason = nil, parents: [])
|
50
|
-
p = Promise.new(parents: parents)
|
51
|
-
p.rejected!(reason)
|
52
|
-
p
|
53
|
-
end
|
54
|
-
|
55
|
-
# Instance methods
|
56
|
-
|
57
|
-
def fulfilled!(value = nil)
|
58
|
-
set_state(:fulfilled, value)
|
59
|
-
end
|
60
|
-
|
61
|
-
def rejected!(reason = nil)
|
62
|
-
set_state(:rejected, reason)
|
63
|
-
end
|
64
|
-
|
65
|
-
def then(&block)
|
66
|
-
# Create a new promise. It's waiting on us. It runs the
|
67
|
-
# specified code when scheduled.
|
68
|
-
Promise.new(parents: [self], &block)
|
69
|
-
end
|
70
|
-
|
71
|
-
# The Promise.new method, along with all the various handlers,
|
72
|
-
# are pretty raw. They'll do what promises do, but they're not
|
73
|
-
# the prettiest. However, they ensure that guarantees are made
|
74
|
-
# and so on, so they're great as plumbing under the syntactic
|
75
|
-
# sugar above.
|
76
|
-
|
77
|
-
def initialize(state: nil, parents: [], &scheduler)
|
78
|
-
log_init("Promise")
|
79
|
-
|
80
|
-
# These are as initially specified, and effectively immutable
|
81
|
-
@state = state
|
82
|
-
@parents = parents
|
83
|
-
|
84
|
-
# These are what we're waiting on, and will be
|
85
|
-
# removed as time goes forward.
|
86
|
-
@waiting_on = parents.select { |p| !p.complete? }
|
87
|
-
@on_fulfilled = []
|
88
|
-
@on_rejected = []
|
89
|
-
@on_scheduled = []
|
90
|
-
@scheduler = scheduler
|
91
|
-
@executor = nil
|
92
|
-
@returned_value = nil
|
93
|
-
@reason = nil
|
94
|
-
|
95
|
-
if complete?
|
96
|
-
# Did we start out already fulfilled or rejected?
|
97
|
-
# If so, we can skip a lot of fiddly checking.
|
98
|
-
# Don't need a scheduler or to care about parents
|
99
|
-
# or anything.
|
100
|
-
@waiting_on = []
|
101
|
-
@scheduler = nil
|
102
|
-
elsif @parents.any? { |p| p.state == :rejected }
|
103
|
-
@state = :rejected
|
104
|
-
@waiting_on = []
|
105
|
-
@scheduler = nil
|
106
|
-
elsif @state == :pending
|
107
|
-
# Did we get an explicit :pending? Then we don't need
|
108
|
-
# to schedule ourselves, or care about the scheduler
|
109
|
-
# in general.
|
110
|
-
@scheduler = nil
|
111
|
-
elsif @state.nil? || @state == :unscheduled
|
112
|
-
# If no state was given or we're unscheduled, we'll
|
113
|
-
# wait until our parents have all completed to
|
114
|
-
# schedule ourselves.
|
115
|
-
|
116
|
-
if @waiting_on.empty?
|
117
|
-
# No further dependencies, we can schedule ourselves
|
118
|
-
@state = :pending
|
119
|
-
|
120
|
-
# We have no on_scheduled handlers yet, but this will
|
121
|
-
# call and clear the scheduler.
|
122
|
-
call_handlers_for(:pending)
|
123
|
-
else
|
124
|
-
# We're still waiting on somebody, no scheduling yet
|
125
|
-
@state = :unscheduled
|
126
|
-
@waiting_on.each do |dep|
|
127
|
-
dep.on_fulfilled { parent_fulfilled!(dep) }
|
128
|
-
dep.on_rejected { parent_rejected!(dep) }
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def complete?
|
135
|
-
@state == :fulfilled || @state == :rejected
|
136
|
-
end
|
137
|
-
|
138
|
-
def fulfilled?
|
139
|
-
@state == :fulfilled
|
140
|
-
end
|
141
|
-
|
142
|
-
def rejected?
|
143
|
-
@state == :rejected
|
144
|
-
end
|
145
|
-
|
146
|
-
def inspect
|
147
|
-
"#<Scarpe::Promise:#{object_id} " +
|
148
|
-
"@state=#{@state.inspect} @parents=#{@parents.inspect} " +
|
149
|
-
"@waiting_on=#{@waiting_on.inspect} @on_fulfilled=#{@on_fulfilled.size} " +
|
150
|
-
"@on_rejected=#{@on_rejected.size} @on_scheduled=#{@on_scheduled.size} " +
|
151
|
-
"@scheduler=#{@scheduler ? "Y" : "N"} @executor=#{@executor ? "Y" : "N"} " +
|
152
|
-
"@returned_value=#{@returned_value.inspect} @reason=#{@reason.inspect}" +
|
153
|
-
">"
|
154
|
-
end
|
155
|
-
|
156
|
-
# These promises are mostly designed for external execution.
|
157
|
-
# You could put together your own thread-pool, or use RPC,
|
158
|
-
# a WebView, a database or similar source of external calculation.
|
159
|
-
# But in some cases, sure, it's reasonable to execute locally.
|
160
|
-
# In those cases, you can register an executor, which will be
|
161
|
-
# called when the promise is ready to execute but has not yet
|
162
|
-
# done so. Registering an executor on a promise that is
|
163
|
-
# already fulfilled is an error. Registering an executor on
|
164
|
-
# a promise that has already rejected is a no-op.
|
165
|
-
def to_execute(&block)
|
166
|
-
case @state
|
167
|
-
when :fulfilled
|
168
|
-
# Should this be a no-op instead?
|
169
|
-
raise "Registering an executor on an already fulfilled promise means it will never run!"
|
170
|
-
when :rejected
|
171
|
-
return
|
172
|
-
when :unscheduled
|
173
|
-
@executor = block # save for later
|
174
|
-
when :pending
|
175
|
-
@executor = block
|
176
|
-
call_executor
|
177
|
-
else
|
178
|
-
raise "Internal error, illegal state!"
|
179
|
-
end
|
180
|
-
|
181
|
-
self
|
182
|
-
end
|
183
|
-
|
184
|
-
private
|
185
|
-
|
186
|
-
# set_state looks at the old and new states of the promise. It calls handlers and updates tracking
|
187
|
-
# data accordingly.
|
188
|
-
def set_state(new_state, value_or_reason = nil)
|
189
|
-
old_state = @state
|
190
|
-
|
191
|
-
# First, filter out illegal input
|
192
|
-
unless PROMISE_STATES.include?(old_state)
|
193
|
-
raise "Internal Promise error! Internal state was #{old_state.inspect}! Legal states: #{PROMISE_STATES.inspect}"
|
194
|
-
end
|
195
|
-
|
196
|
-
unless PROMISE_STATES.include?(new_state)
|
197
|
-
raise "Internal Promise error! Internal state was set to #{new_state.inspect}! " +
|
198
|
-
"Legal states: #{PROMISE_STATES.inspect}"
|
199
|
-
end
|
200
|
-
|
201
|
-
if new_state != :fulfilled && new_state != :rejected && !value_or_reason.nil?
|
202
|
-
raise "Internal promise error! Non-completed state transitions should not specify a value or reason!"
|
203
|
-
end
|
204
|
-
|
205
|
-
# Here's our state-transition grid for what we're doing here.
|
206
|
-
# "From" state is on the left, "to" state is on top.
|
207
|
-
#
|
208
|
-
# U P F R
|
209
|
-
#
|
210
|
-
# U - 1 . .
|
211
|
-
# P X - . .
|
212
|
-
# F X X - X
|
213
|
-
# R X X X -
|
214
|
-
#
|
215
|
-
# - Change from same to same, no effect
|
216
|
-
# X Illegal for one reason or another, raise error
|
217
|
-
# . Great, no problem, run handlers but not @scheduler or @executor
|
218
|
-
# 1 Interesting case - if we have an executor, actually change to a *different* state instead
|
219
|
-
|
220
|
-
# Transitioning from our state to our same state? No-op.
|
221
|
-
return if new_state == old_state
|
222
|
-
|
223
|
-
# Transitioning to any *different* state after being fulfilled or rejected? Nope. Those states are final.
|
224
|
-
if complete?
|
225
|
-
raise "Internal Promise error! Trying to change state from #{old_state.inspect} to #{new_state.inspect}!"
|
226
|
-
end
|
227
|
-
|
228
|
-
if old_state == :pending && new_state == :unscheduled
|
229
|
-
raise "Can't change state from :pending to :unscheduled! Scheduling is not reversible!"
|
230
|
-
end
|
231
|
-
|
232
|
-
# The next three checks should all be followed by calling handlers for the newly-changed state.
|
233
|
-
# See call_handlers_for below.
|
234
|
-
|
235
|
-
# Okay, we're getting scheduled.
|
236
|
-
if old_state == :unscheduled && new_state == :pending
|
237
|
-
@state = new_state
|
238
|
-
call_handlers_for(new_state)
|
239
|
-
|
240
|
-
# It's not impossible for the scheduler to do something that fulfills or rejects the promise.
|
241
|
-
# In that case it *also* called the appropriate handlers. Let's get out of here.
|
242
|
-
return if @state == :fulfilled || @state == :rejected
|
243
|
-
|
244
|
-
if @executor
|
245
|
-
# In this case we're still pending, but we have a synchronous executor. Let's do it.
|
246
|
-
call_executor
|
247
|
-
end
|
248
|
-
|
249
|
-
return
|
250
|
-
end
|
251
|
-
|
252
|
-
# Setting to rejected calls the rejected handlers. But no scheduling ever occurs, so on_scheduled handlers
|
253
|
-
# will never be called.
|
254
|
-
if new_state == :rejected
|
255
|
-
@state = :rejected
|
256
|
-
@reason = value_or_reason
|
257
|
-
call_handlers_for(new_state)
|
258
|
-
end
|
259
|
-
|
260
|
-
# If we go straight from :unscheduled to :fulfilled we *will* run the on_scheduled callbacks,
|
261
|
-
# because we pretend the scheduling *did* occur at some point. Normally that'll be no callbacks,
|
262
|
-
# of course.
|
263
|
-
#
|
264
|
-
# Fun-but-unfortunate trivia: you *can* fulfill a promise before all its parents are fulfilled.
|
265
|
-
# If you do, the unfinished parents will result in nil arguments to the on_fulfilled handler,
|
266
|
-
# because we have no other value to provide. The scheduler callback will never be called, but
|
267
|
-
# the on_scheduled callbacks, if any, will be.
|
268
|
-
if new_state == :fulfilled
|
269
|
-
@state = :fulfilled
|
270
|
-
@returned_value = value_or_reason
|
271
|
-
call_handlers_for(new_state)
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
# This private method calls handlers for a new state, removing those handlers
|
276
|
-
# since they have now been called. This interacts subtly with set_state()
|
277
|
-
# above, particularly in the case of fulfilling a promise without it ever being
|
278
|
-
# properly scheduled.
|
279
|
-
#
|
280
|
-
# The rejected handlers will be cleared if the promise is fulfilled and vice-versa.
|
281
|
-
# After rejection, no on_fulfilled handler should ever be called and vice-versa.
|
282
|
-
#
|
283
|
-
# When we go from :unscheduled to :pending, the scheduler, if any, should be
|
284
|
-
# called and cleared. That should *not* happen when going from :unscheduled to
|
285
|
-
# :fulfilled.
|
286
|
-
def call_handlers_for(state)
|
287
|
-
case state
|
288
|
-
when :fulfilled
|
289
|
-
@on_scheduled.each { |h| h.call(*@parents.map(&:returned_value)) }
|
290
|
-
@on_fulfilled.each { |h| h.call(*@parents.map(&:returned_value)) }
|
291
|
-
@on_scheduled = @on_rejected = @on_fulfilled = []
|
292
|
-
@scheduler = @executor = nil
|
293
|
-
when :rejected
|
294
|
-
@on_rejected.each { |h| h.call(*@parents.map(&:returned_value)) }
|
295
|
-
@on_fulfilled = @on_scheduled = @on_rejected = []
|
296
|
-
@scheduler = @executor = nil
|
297
|
-
when :pending
|
298
|
-
# A scheduler can get an exception. If so, treat it as rejection
|
299
|
-
# and the exception as the provided reason.
|
300
|
-
if @scheduler
|
301
|
-
begin
|
302
|
-
@scheduler.call(*@parents.map(&:returned_value))
|
303
|
-
rescue => e
|
304
|
-
@log.error("Error while running scheduler! #{e.full_message}")
|
305
|
-
rejected!(e)
|
306
|
-
end
|
307
|
-
@scheduler = nil
|
308
|
-
end
|
309
|
-
@on_scheduled.each { |h| h.call(*@parents.map(&:returned_value)) }
|
310
|
-
@on_scheduled = []
|
311
|
-
else
|
312
|
-
raise "Internal error! Trying to call handlers for #{state.inspect}!"
|
313
|
-
end
|
314
|
-
end
|
315
|
-
|
316
|
-
def parent_fulfilled!(parent)
|
317
|
-
@waiting_on.delete(parent)
|
318
|
-
|
319
|
-
# Last parent? If so, schedule ourselves.
|
320
|
-
if @waiting_on.empty? && !self.complete?
|
321
|
-
# This will result in :pending if there's no executor,
|
322
|
-
# or fulfilled/rejected if there is an executor.
|
323
|
-
set_state(:pending)
|
324
|
-
end
|
325
|
-
end
|
326
|
-
|
327
|
-
def parent_rejected!(parent)
|
328
|
-
@waiting_on = []
|
329
|
-
|
330
|
-
unless self.complete?
|
331
|
-
# If our parent was rejected and we were waiting on them,
|
332
|
-
# now we're rejected too.
|
333
|
-
set_state(:rejected)
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
def call_executor
|
338
|
-
raise("Internal error! Should not call_executor with no executor!") unless @executor
|
339
|
-
|
340
|
-
begin
|
341
|
-
result = @executor.call(*@parents.map(&:returned_value))
|
342
|
-
fulfilled!(result)
|
343
|
-
rescue => e
|
344
|
-
@log.error("Error running executor! #{e.full_message}")
|
345
|
-
rejected!(e)
|
346
|
-
end
|
347
|
-
ensure
|
348
|
-
@executor = nil
|
349
|
-
end
|
350
|
-
|
351
|
-
public
|
352
|
-
|
353
|
-
def on_fulfilled(&handler)
|
354
|
-
unless handler
|
355
|
-
raise "You must pass a block to on_fulfilled!"
|
356
|
-
end
|
357
|
-
|
358
|
-
case @state
|
359
|
-
when :fulfilled
|
360
|
-
handler.call(*@parents.map(&:returned_value))
|
361
|
-
when :pending, :unscheduled
|
362
|
-
@on_fulfilled << handler
|
363
|
-
when :rejected
|
364
|
-
# Do nothing
|
365
|
-
end
|
366
|
-
|
367
|
-
self
|
368
|
-
end
|
369
|
-
|
370
|
-
def on_rejected(&handler)
|
371
|
-
unless handler
|
372
|
-
raise "You must pass a block to on_rejected!"
|
373
|
-
end
|
374
|
-
|
375
|
-
case @state
|
376
|
-
when :rejected
|
377
|
-
handler.call(*@parents.map(&:returned_value))
|
378
|
-
when :pending, :unscheduled
|
379
|
-
@on_rejected << handler
|
380
|
-
when :fulfilled
|
381
|
-
# Do nothing
|
382
|
-
end
|
383
|
-
|
384
|
-
self
|
385
|
-
end
|
386
|
-
|
387
|
-
def on_scheduled(&handler)
|
388
|
-
unless handler
|
389
|
-
raise "You must pass a block to on_scheduled!"
|
390
|
-
end
|
391
|
-
|
392
|
-
# Add a pending handler or call it now
|
393
|
-
case @state
|
394
|
-
when :fulfilled, :pending
|
395
|
-
handler.call(*@parents.map(&:returned_value))
|
396
|
-
when :unscheduled
|
397
|
-
@on_scheduled << handler
|
398
|
-
when :rejected
|
399
|
-
# Do nothing
|
400
|
-
end
|
401
|
-
|
402
|
-
self
|
403
|
-
end
|
404
|
-
end
|
405
|
-
end
|
data/lib/scarpe/shape.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "wv/shape_helper"
|
4
|
-
|
5
|
-
class Scarpe
|
6
|
-
class Shape < Shoes::Widget
|
7
|
-
include ShapeHelper
|
8
|
-
display_properties :left, :top
|
9
|
-
|
10
|
-
def initialize(left: nil, top: nil, path_commands: nil, &block)
|
11
|
-
@left = left
|
12
|
-
@top = top
|
13
|
-
|
14
|
-
super()
|
15
|
-
create_display_widget
|
16
|
-
|
17
|
-
instance_eval(&block) if block_given?
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/lib/scarpe/slot.rb
DELETED
data/lib/scarpe/spacing.rb
DELETED
data/lib/scarpe/star.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "wv/shape_helper"
|
4
|
-
class Scarpe
|
5
|
-
class InvalidAttributeValueError < Scarpe::Error; end
|
6
|
-
|
7
|
-
class Star < Shoes::Widget
|
8
|
-
include ShapeHelper
|
9
|
-
display_properties :left, :top, :points, :outer, :inner, :color
|
10
|
-
|
11
|
-
def initialize(left, top, points = 10, outer = 100, inner = 50)
|
12
|
-
@points = convert_to_integer(points, "points", 10)
|
13
|
-
@outer = convert_to_float(outer, "outer", 100.0)
|
14
|
-
@inner = convert_to_float(inner, "inner", 50.0)
|
15
|
-
@color = color_for_fill
|
16
|
-
|
17
|
-
super()
|
18
|
-
create_display_widget
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def convert_to_integer(value, attribute_name, default = 0)
|
24
|
-
begin
|
25
|
-
value = Integer(value)
|
26
|
-
raise InvalidAttributeValueError, "Negative num '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
|
27
|
-
|
28
|
-
value
|
29
|
-
rescue ArgumentError
|
30
|
-
error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
|
31
|
-
raise InvalidAttributeValueError, error_message
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def convert_to_float(value, attribute_name, default = 0.0)
|
36
|
-
begin
|
37
|
-
value = Float(value)
|
38
|
-
raise InvalidAttributeValueError, "Negative num '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0
|
39
|
-
|
40
|
-
value
|
41
|
-
rescue ArgumentError
|
42
|
-
error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
|
43
|
-
raise InvalidAttributeValueError, error_message
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Certain Shoes calls like motion and keydown are basically an
|
4
|
-
# event subscription, with no other visible presence. However,
|
5
|
-
# they have a place in the widget tree and can be deleted.
|
6
|
-
#
|
7
|
-
# Depending on the display library they may not have any
|
8
|
-
# direct visual (or similar) presence there either.
|
9
|
-
#
|
10
|
-
# Inheriting from Widget gives these a parent slot and a
|
11
|
-
# linkable_id automatically.
|
12
|
-
class SubscriptionItem < Shoes::Widget
|
13
|
-
display_property :shoes_api_name
|
14
|
-
|
15
|
-
def initialize(shoes_api_name:, &block)
|
16
|
-
super
|
17
|
-
|
18
|
-
@callback = block
|
19
|
-
|
20
|
-
case shoes_api_name
|
21
|
-
when "hover"
|
22
|
-
# Hover passes the Shoes widget as the block param
|
23
|
-
@unsub_id = bind_self_event("hover") do
|
24
|
-
@callback&.call(self)
|
25
|
-
end
|
26
|
-
when "motion"
|
27
|
-
# Shoes sends back x, y, mods as the args.
|
28
|
-
# Shoes3 uses the strings "control" "shift" and
|
29
|
-
# "control_shift" as the mods arg.
|
30
|
-
@unsub_id = bind_self_event("motion") do |x, y, ctrl_key, shift_key, **_kwargs|
|
31
|
-
mods = [ctrl_key ? "control" : nil, shift_key ? "shift" : nil].compact.join("_")
|
32
|
-
@callback&.call(x, y, mods)
|
33
|
-
end
|
34
|
-
when "click"
|
35
|
-
# Click has block params button, left, top
|
36
|
-
# button is the button number, left and top are coords
|
37
|
-
@unsub_id = bind_self_event("click") do |button, x, y, **_kwargs|
|
38
|
-
@callback&.call(button, x, y)
|
39
|
-
end
|
40
|
-
else
|
41
|
-
raise "Unknown Shoes API call #{shoes_api_name.inspect} passed to SubscriptionItem!"
|
42
|
-
end
|
43
|
-
|
44
|
-
@unsub_id = bind_self_event(shoes_api_name) do |*args|
|
45
|
-
@callback&.call(*args)
|
46
|
-
end
|
47
|
-
|
48
|
-
# This won't create a visible display widget, but will turn into
|
49
|
-
# an invisible widget and a stream of events.
|
50
|
-
create_display_widget
|
51
|
-
end
|
52
|
-
|
53
|
-
def destroy
|
54
|
-
# TODO: we need a better way to do this automatically. See https://github.com/scarpe-team/scarpe/issues/291
|
55
|
-
unsub_shoes_event(@unsub_id) if @unsub_id
|
56
|
-
@unsub_id = nil
|
57
|
-
|
58
|
-
super
|
59
|
-
end
|
60
|
-
end
|