"Scarpe" means shoes in Italian. "Scarpe" also means Shoes in modern Ruby and webview!
Scarpe isn't feature complete with any version of Shoes (yet?). We're initially targeting Shoes Classic.
Add this line to your application's Gemfile:
gem 'scarpe'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install scarpe
Note: you'll probably want the "Scarpe in Development" instructions below in most cases! Scarpe isn't ready for "just install the released version" production usage yet.
Create an hello world application with:
Shoes.app do
para "Hello World"
end
More examples can be found in the examples
folder!
From the hello world example:
From the button example:
First, clone the main GitHub repository.
bundle install
dependencies like webview from the cloned directory in your Ruby of choice.
You can run without Scarpe being installed by including its directory. For instance, from the "examples" directory you can run ruby -I../lib hello_world.rb
. You can also install Scarpe locally (gem build scarpe.gemspec && gem install scarpe-0.1.0.gem
) or using a Gemfile with the "path" option for local Scarpe.
If you want to be really slick we have a helper development command, for example:
./exe/scarpe examples/button.rb --dev
The --dev
flag points to your local scarpe rather than an installed Scarpe gem.
It's very early in the development process (as of February 2023, as I write this.) If you'd like to help develop Scarpe, great! It would be useful to drop us a message/issue/PR on GitHub early on, so we know you're working in a particular area, and we can warn you if anybody else is currently doing so.
We'd love the help!
Syntax | Status |
---|---|
para | ✅ |
stack | ✅ |
flow | ✅ |
button | ✅ |
image | ✅ |
edit_line | ✅ |
edit_box | ✅ |
link | 🛠️ |
background | ✅ |
Shoes.url | |
visibility | |
Scarpe.app methods | |
Widgets | 🛠️ |
Subject | Status |
---|---|
Misc Meta Issue | |
style | 🛠️ |
parents and children |
Subject | Status |
---|---|
Splash App | |
Packaging |
- Resiliency - We want scarpe to be tested and trustworthy to work consistently and predictably.
- User Experience - Ruby and this DSL are beautiful for making desktop app authoring easy. We should uphold this standard.
- Whimsy - We're not here to make money or be corporate. We're here to have fun! Even if we do end up building something amazing.
- Empathy - Let's help one another, and adhere to good contributor standards while doing so.
We have a collection of primary and secondary sources currently serving as documentation. Long-term we would like to compose a "pickaxe-book"-style specification for Shoes that collates this knowledge into one place.
Scarpe allows you to modify the app's behaviour outside of the normal Shoes API with environment variables.
The SCARPE_DISPLAY_SERVICES environment variable allows you to choose one or more display services, from the default Webview service, to no service at all, to potentially other experimental or incomplete services. This may be important if you're developing a new display method for Scarpe. Normally ScarpeDisplayServices will contain a semicolon-delimited list of class names for display services (which can be just the name of a single display service). For no display service at all, set it to a single dash.
The SCARPE_TEST_CONTROL environment variable can contain a path to a test-control-interface script for the Webview display service. If you look at test_helper, it gives some examples of how to use it.
Scarpe is not intended to be a perfect replica of every element of Shoes. It is, however, intended to be functionally Shoes-compliant on mordern tooling. Certain benchmarks for this include:
- Parity with the Nobody Knows Shoes manual
- This is our top priority
- Most of our measurement will come from manually running the
examples/examples/examples_that_do_not_yet_work
directory, and moving them out into working as we pass them. - Able to run various external existing Shoes apps.
- The ultimate test would be to run, functionally, HacketyHack
- Great cheatsheet on pages 48-50 of Nobody Knows Shoes
- Original shoes (archived)
- For now we are aiming towards original shoes, but I believe later can learn from Shoes3.
- wiki
- shoes3
- shoes4 (JRuby, incomplete)
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/scarpe. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the Scarpe project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.