-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add lacci gem #309
Add lacci gem #309
Conversation
bd0fe4c
to
c3f63b7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to echo back my understanding here from reading through the Discord, this code, and the description.
- A full extraction (and correct-naming) of the shoes-dsl component of our gem into the new
lacci
gem. - This gem remains in our directory and we depend on it directly.
- This makes the separation more of a first class citizen. More importantly, it helps support the WASM work. We have one place where we extend and continue to develop the DSL support. e.g. Maybe the webview people will figure out
url
first when they implement inlacci
andWebview
, and then the WASM folks will just have to implement in WASM as it's already inlacci
. - Will this break @gintama91's generator code? Sorry if you've already referenced this in an issue, I'm looking at PRs first.
- I know I've done the only scarpe push in the last few months, but I might want to make a releasing guidance (unless we already have it) as a reminder to at least myself that we should probably release these in tandem. or maybe even make a slick script for the gem build/gem push for both gems. 😅
I'm a hyper-averse person to early abstractions; and I think we've done well not abstracting too early. If my understanding is in the right ballpark with WASM then yes abstracting to a new gem totally makes sense here.
Feel free to merge but I'll leave that on your side.
|
||
Gem::Specification.new do |spec| | ||
spec.name = "lacci" | ||
spec.version = Scarpe::VERSION |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like binding this to the scarpe version
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think that's a good idea for some time yet. Eventually we're going to need to distinguish between "Scarpe, the Webview-based display library" and "Scarpe, the layer of display implementation for Lacci, especially logging and testing code." In the long run they're not the same thing. Wasm is going to push us into splitting it into more pieces long-term. All these divisions were kind of theoretical, right up until they weren't :-)
Yup. This is all basically correct. Some minor notes:
Yup. But also WASM and Webview are going to share a lot of stuff that isn't in Lacci and shouldn't be -- e.g. HTML generation. Lacci is still the display-independent part, just like the Scarpe/Shoes non-display widgets have always been. But yeah, once one implementation adds it in Lacci it should just work for everybody.
Ooh, good call. Probably. I'll go check that.
Not a bad idea. I need to give you permissions on lacci. |
This builds on PR #307.
Description
Add a gem called lacci (already reserved on rubygems.org) to act as the portable Shoes DSL part of Scarpe. Make scarpe depend on it, but otherwise try to give it no -- or minimal -- dependencies. Move all the Shoes widgets into Lacci, and rename them to clearly be in the Shoes namespace.
Split logging into a portable, impl-independent interface and a Scarpe-specific Logging-based implementation.
I still need to fix the ShapeHelper problem, where it's a dependency in Webview that the Lacci shapes have. I have a partially-finished PR to do that that I'll rework for the new structure in this PR.
Checklist