Glimmer started out as a GUI Library and grew into a full-fledged DSL
Framework with support for multiple GUI DSLs. Glimmer's namesake is
referring to the Glimmer of Ruby in Graphical User Interfaces (contrary to
popular myth perpetrated by Charles Nutter, Glimmer has nothing to do with
the ill-fated Whitney Houston movie, which does not in fact share the same
name)
Note there is already UI component framework called Glimmer that is used by Ember.js: https://glimmerjs.com/. It's pretty much upstreamed into Ember itself these days, but the devs also have a big Rails background so I found the coincidence funny.
How debuggable is this (besides sifting through wall of debug log text)? Can you step through your declarative GUI building process inside DSL or its like this: "DSL text goes into magic magic...POOF! here is the result. hopefully nothing went wrong or glhf"
The popular debugger for Ruby is a combination of two libraries: byebug and pry. Using these should allow you to step into/over code in a familiar way, if you've used most breakpoint-based debuggers.
If you end up giving it a try, please report back!
Could you say more about that? I have been using pry, and it appears to still be updated. Is there a reason to stop using pry, or are you expressing a preference for the official debug gem?
I've built a DSL engine on top of CUE + Go's text/template [1]. This largely becomes feeding data into a set of templates, and even this can be hard to debug because template engines often lack the extras needed to support it.
I'd be curious to see if a more code based DSL engine has better debug support. I would imagine you would be stepping through both the DSL code and the engine, if it is more dynamic (i.e. there is not a two step process for DSL authoring)
What I like about a text/template engine is that anyone can use it (create new DSLs) without knowing the language the engine is implemented in. CUE appeals to me as the language for writing/using the DSL because (1) I don't have to learn a new syntax per DSL and (2) it becomes data (json/yaml) I can use anywhere for other purposes beyond generating code.
my experience with interpreter pattern is that you will be spending 90% of debugger time stepping through abstract "eval" functions that are irrelevant to what you want debug.
https://github.com/AndyObtiva/glimmer_klondike_solitaire
https://github.com/AndyObtiva/glimmer_wordle
https://github.com/AndyObtiva/glimmer_tetris
https://github.com/AndyObtiva/glimmer_snake
https://github.com/AndyObtiva/glimmer_hangman
https://github.com/AndyObtiva/glimmer_metronome
reply